Oracle APEXにおけるGUIを用いたテーブルの作成2(外部キーについて)

Oracle APEX 技術記事

こんにちは!平野です。

今回の記事は以下の記事の続きとなります。
OracleAPEXにおけるGUIを用いたテーブルの作成

前回はタスク管理アプリケーションに必要な要素を考え、タスク作成のためのテーブルをGUI上で作成しました。

TASK_LISTSテーブル

列名 説明 データ型 スケール NULLを許可
ID 作成されたタスクごとに付与 NUMBER いいえ
USERNAME タスクを作成したユーザーの名前 VARCHAR2 255 いいえ
TASK_TITLE タスクのタイトル VARCHAR2 255
TASK_CONTENT タスクの内容 VARCHAR2 4000
TASK_DEADLINE タスクを完了すべき期日の設定 DATE

このテーブルだけでもタスクの作成はできますが、このタスクを細分化することでさらに管理がしやすくなります。

今回はタスクを細分化するための「サブタスクテーブル」を作成していきます。

更新履歴

日付 更新概要
2020/11/25 記事公開

対応バージョン

製品名 バージョン
Oracle APEX 5.1 – 20.1.0.00.13
Oracle Database 12.2 – 19.6

目次


タスクとサブタスクの関係性

タスクとサブタスクの関係性を考えてみます。

例えば、「社内イベント企画」というタスクがあるとします。
社内イベントを企画するためのさらに詳細なタスクを以下のように考えてみます。
1. イベント内容選定
2. 参加社員のスケジュール調整
3. イベント費用徴収

これが今回作成するサブタスクに当たります。

まずは、テーブル作成に必要な要素を考えてみます。

テーブル名:TASK_SUBLISTS

列名 説明 データ型 スケール NULLを許可
ID 作成されたタスクごとに付与 NUMBER いいえ
TASK_ID サブタスクに対応するTASK_LISTSのID NUMBER いいえ
TASK_TITLE サブタスクのタイトル VARCHAR2 255
TASK_CONTENT サブタスクの内容 VARCHAR2 4000
TASK_DEADLINE サブタスクを完了すべき期日の設定 DATE

要素ごとのデータ型に関してはOracleの公式マニュアルSQL言語リファレンスを参考にしてくだい。

タスクを作成した後、細分化の為にサブタスクを作成し、サブタスクのタイトルと内容、その期限を指定するアプリケーションを考えます。サブタスクのテーブルにはそれらの情報を保存できるように、元のタスクを判定するための列と、タイトル、内容、期限を保存できる列を作ります。

サブタスクのテーブルには親となるタスクを判断する列(TASK_ID)に外部キーを付与することが出来ます。
この外部キーの設定により、親となるテーブルに存在しないタスク(TASK_ID)のサブタスクは作成出来なくするなど、関連付けが可能です。

このテーブルの定義をもとに、Oracle APEXのGUI上でテーブルを作成していきます。
Oracle APEXでは、外部キーの設定もGUI上で行うことができます。

サブタスクテーブルの作成

GUI操作の手順を説明していきます。

  1. オブジェクトブラウザを開き、右上の+マークから表を選択します。
    画像1

  2. 今回仮定したテーブル定義を入力します。
    画像2

  3. 新規順序から移入を選択し、主キーをIDとして下さい。
    画像3

  4. 外部キーを設定します。

    1. 削除を許可しないを選択
    2. サブタスクのキー列をTASK_IDに設定
    3. 参照表をTASK_LISTSとし、参照列をIDに設定
    4. 追加ボタンで設定完了
      画像4
  5. 制約についてはそのまま設定せず次へを選択してください。必要となった場合は後から設定することも可能です。

  6. 表の作成を選択してください。
    画像5

今回GUI上で作成したテーブルの外部キー制約にあたるSQL文が以下のように自動生成されます。

おわりに

いかがだったでしょうか。
Oracle APEXは表の作成だけでなく、テーブル間の制約に関してもGUI上で作成することが可能です。

是非ともご参考にしていただければと思います。
ありがとうございました!

関連記事

  1. Oracle APEX 技術記事

    Oracle APEXのインストール(Oracle Applicati…

  2. Oracle APEX 技術記事

    Oracle APEXにおけるGUIを用いたテーブルの作成

  3. Oracle APEX 技術記事

    OracleAPEXにおけるタスク管理アプリ開発(ページの作成)

  4. Oracle APEX 技術記事

    Oracle APEX のブラウザ印刷について

  5. Oracle APEX 技術記事

    Oracle APEX 20.2での非サポート機能について

  6. Oracle APEX 技術記事

    OracleAPEXにおけるタスク管理アプリ開発(入力フォームのカスタ…