2 Data Modelerチュートリアル: 小規模データベースのモデリング

このチュートリアルでは、Data Modelerを使用して、簡略化した図書館データベースのモデルを作成します。このデータベースには、本、利用者(図書館カードの所有者)および処理(本の貸出し、本の返却など)に関するエンティティが含まれます。

このチュートリアルで使用するエンティティは、SQL Developerのオンライン・ヘルプで提供されるチュートリアルのエンティティと同じです。このモデルは意図的に簡略化されているため、公共または組織内の実際の図書館での利用には適していません。高度なチュートリアルなど、他の資料については「データ・モデリングについての詳細な情報」を参照してください。

特に説明しないダイアログ・ボックス、タブまたはフィールドには、何も指定しないでください。

簡略化したこのチュートリアルでは、トップダウン・モデリング・アプローチで考えられるステップのうち、一部のみを使用します。(アプローチの詳細は、「データ・モデリングへのアプローチ」を参照してください。)

実行する主要なステップは次のとおりです。

  1. 論理モデルの作成

  2. リレーショナル・モデルの作成

  3. DDLの生成

  4. 設計の保存

関連項目

Data Modelerの概念および使用法

Data Modelerのユーザー・インタフェース

2.1 論理モデルの作成

データベースの論理モデルには、Books(図書館の各本を表現)、Patrons(図書館カードを持つ各利用者を表現)およびTransactions(利用者と本に関連する各処理を表現)という3つのエンティティが含まれます。ただし、これらのエンティティを作成する前に、エンティティの作成(および後のDDL生成)をより有効かつ具体的なものにするためのドメインを作成します。

論理モデルの作成を開始するには、「ドメインの追加」に進みます。

2.1.1 ドメインの追加

データのニーズを計画する際に、何種類ものレコードに出現するフィールドの種類が複数あり、多くのフィールドで定義を共有できることを決定しました。決定事項の例は、次のとおりです。

  • 利用者の姓および名は、それぞれ25文字以下で指定します。

  • 通りの住所の行は、40文字以下で指定します。

  • 市の名前は、25文字以下で指定します。

  • 州コード(米国)は、2文字の標準略語で指定します。

  • zipコード(米国の郵便番号)は、10文字以下で指定します(nnnnn-nnnn)。

  • 書籍識別子は、20文字以下で指定します。

  • その他の識別子は、数字7桁以下で指定します(小数位なし)。

  • (本、記事などの)タイトルは、50文字以下で指定します。

後でエンティティを作成する際に属性のデータ型を指定するのに使用できるよう、適切なドメインを追加することにします。(追加したドメインは、Data Modelerを終了して再起動した際に使用可能になります。)

  1. 「ツール」「ドメイン管理」をクリックします。

  2. 「ドメイン管理」ダイアログ・ボックスに、次の定義を持つドメインを追加します。「追加」をクリックして各定義を開始し、それぞれの定義の終了時に「適用」をクリックします。

    名前 論理型 その他の情報

    利用者名

    VARCHAR

    サイズ: 25

    住所の行

    VARCHAR

    サイズ: 40

    VARCHAR

    サイズ: 25

    VARCHAR

    サイズ: 2

    郵便番号

    VARCHAR

    サイズ: 10

    書籍ID

    VARCHAR

    サイズ: 20

    数値ID

    NUMERIC

    精度: 7、スケール: 0

    タイトル

    VARCHAR

    サイズ: 50

  3. これらのドメインの定義が完了したら、「保存」をクリックします。これによって、Data Modelerをインストールした場所の下にあるdatamodeler/domainsディレクトリまたはdatamodeler\domainsフォルダに、defaultdomains.xmlというファイルが作成されます。

  4. オプションで、新しい場所(Data Modelerのインストール・ディレクトリの下以外)にdefaultdomains.xmlファイルをコピーして、library_domains.xmlなどの適切な名前を付けることもできます。このファイルは、他の設計を作成する際に、ドメインのインポート元として使用できます。

  5. 「閉じる」をクリックし、ダイアログ・ボックスを閉じます。

  6. 「Booksエンティティの作成」に進みます。

2.1.2 Booksエンティティの作成

Booksエンティティは、図書館にある各本を表します。Booksエンティティの作成方法は、次のとおりです。

  1. Data Modelerウィンドウのメイン領域(右側)で、「論理」タブをクリックします。
  2. 「新規エンティティ」アイコンをクリックします。
  3. メイン領域の論理モデル・ペインをクリックします。「論理」ペインで、マウス・ボタンを押して斜めにドラッグして解放し、エンティティ・ボックスを描画します。「エンティティのプロパティ」ダイアログ・ボックスが表示されます。
  4. 左側の「一般」をクリックして、次を指定します。

    名前: Books

  5. 左側の「属性」をクリックし、「追加」(+)アイコンを使用して次の属性を一度に1つずつ追加します。(データ型には、論理型であるrating以外のドメイン・タイプを選択します。)
    名前 データ型 その他の情報およびノート

    book_id

    ドメイン: 書籍ID

    プライマリUID(一意識別子)。(デューイ・コードまたはその他の書籍識別子。)

    title

    ドメイン: タイトル

    M(必須。NULLは指定できません)。

    author_last_name

    ドメイン: 利用者名

    M(必須。NULLは指定できません)。

    author_first_name

    ドメイン: 利用者名

    (作者の名。必須ではありませんが、作者の名がある場合は入力します。)

    rating

    論理型: NUMERIC(精度= 2、スケール= 0)

    (図書館職員による個人的な本の評価で、1(つまらない)から10(すばらしい)で示されます。)

  6. 「OK」をクリックして、Booksエンティティの作成を終了します。
  7. 「Patronsエンティティの作成」に進みます。

2.1.3 Patronsエンティティの作成

Patronsエンティティは、図書館の各利用者(図書館カードを保持し、本を借りることのできる各利用者)を表します。Patronsエンティティの作成方法は、次のとおりです。

  1. Data Modelerウィンドウのメイン領域(右側)で、「論理」タブをクリックします。
  2. 「新規エンティティ」アイコンをクリックします。
  3. メイン領域の論理モデル・ペインをクリックします。「論理」ペインで、マウス・ボタンを押して斜めにドラッグして解放し、エンティティ・ボックスを描画します。(推奨: ボックスは、Booksボックスの右側に移動することをお薦めします。)「エンティティのプロパティ」ダイアログ・ボックスが表示されます。
  4. 左側の「一般」をクリックして、次を指定します。

    名前: Patrons

  5. 左側の「属性」をクリックし、「追加」(+)アイコンを使用して次の属性を一度に1つずつ追加します。(データ型には、構造型SDO_GEOMETRYを使用する場所以外のドメイン・タイプを選択します。)
    属性名 タイプ その他の情報およびノート

    patron_id

    ドメイン: 数値ID

    プライマリUID(一意識別子)。(一意の利用者ID番号で、図書館カード番号とも呼ばれます。)

    last_name

    ドメイン: 利用者名

    M(必須。NULLは指定できません)。最大25文字。

    first_name

    ドメイン: 利用者名

    (利用者の名。)

    street_address

    ドメイン: 住所の行

    (利用者の番地。)

    city

    ドメイン: 市

    (利用者が住む市または町。)

    state

    ドメイン: 州

    (利用者が住む州を表す2文字のコード。)

    zip

    ドメイン: 郵便番号

    (利用者が住む場所の郵便番号。)

    location

    構造型: SDO_GEOMETRY

    ジオコーディングされた利用者の住所を表すOracle Spatial and Graph ジオメトリ・オブジェクト。

  6. 「OK」をクリックして、Patronsエンティティの作成を終了します。
  7. 「Transactionsエンティティの作成」に進みます。

2.1.4 Transactionsエンティティの作成

Transactionsエンティティは、本の貸出しや返却など、利用者および本に関連する各処理を表します。利用者が図書館デスクに持ってくる本の数にかかわらず、各エンティティでは1つの処理が記録されます。たとえば、利用者が2冊の本を返して3冊の本を借りる場合は、5つの処理(2つの返却と3つの貸出し)が記録されます。Transactionsエンティティの作成方法は、次のとおりです。

  1. Data Modelerウィンドウのメイン領域(右側)で、「論理」タブをクリックします。
  2. 「新規エンティティ」アイコンをクリックします。
  3. メイン領域の論理モデル・ペインをクリックします。「論理」ペインで、マウス・ボタンを押して斜めにドラッグして解放し、エンティティ・ボックスを描画します。(推奨: ボックスは、BooksボックスとPatronsボックスの中央下に移動することをお薦めします。)「エンティティのプロパティ」ダイアログ・ボックスが表示されます。
  4. 左側の「一般」をクリックして、次を指定します。

    名前: Transactions

  5. 左側の「属性」をクリックし、「追加」(+)アイコンを使用して次の属性を一度に1つずつ追加します。(データ型には、論理型を使用するtransaction_date以外のドメイン・タイプを選択します。)
    属性名 タイプ その他の情報およびノート

    transaction_id

    ドメイン: 数値ID

    プライマリUID(一意識別子)。(一意のトランザクションID番号)

    transaction_date

    論理型: Datetime

    M(必須。NULLは指定できません)。処理の日時。

    transaction_type

    ドメイン: 数値ID

    M(必須。NULLは指定できません)。(処理の種類を示す数値コード。たとえば、1は本の貸出しを示します。)

    エンティティ間でリレーションを作成すると(「エンティティ間のリレーションの作成」を参照)、patron_idおよびbook_id属性が自動的にTransactionsエンティティに追加されるため、これらの属性を明示的に定義しないでください。リレーショナル・モデルを生成すると(「リレーショナル・モデルの作成」を参照)、これらの属性は外部キーとして追加されます。

  6. 「OK」をクリックして、Transactionsエンティティの作成を終了します。
  7. 「エンティティ間のリレーションの作成」に進みます。

2.1.5 エンティティ間のリレーションの作成

リレーションは、エンティティ間のリレーションシップ(1対多、多対1または多対多)を示します。エンティティ間には、次のリレーションシップがあります。

  • BooksとTransactions: 1対多各書籍は、連続した複数のトランザクションに含めることができます。各本は、0または1のアクティブな貸出し処理を持つことができます。貸し出された本は、返却されるまで、再び貸し出すことができません。

  • PatronsとTransactions: 1対多。各利用者は、複数の連続した同時トランザクションに含めることができます。各利用者は図書館を訪れた際に1冊以上の本を借りたり、複数回の訪問を反映するアクティブな貸出し処理を複数回行うことができます。また、各利用者は、借りた本を任意の時点で返却できます。

リレーションシップは次のようにして作成します。完了すると、メイン領域の論理モデル・ペインが次の図のように表示されます。この図では、Bachman表記法が使用されていることに注意してください(「表示」→「論理ダイアグラム表記法」→「Barker表記法」をクリックすると、Barker表記法に変更できます)。

  1. メイン領域の論理モデル・ペインで、Booksが左側、Patronsが右側、TransactionsがBooksとPatronsの間またはそれらの中央下に来るよう、エンティティ・ボックスを配置します。(ポインタが十字形のままの場合は、左上の「選択」アイコンをクリックしてポインタを矢印に変更します。)

    推奨: この演習では、自動的な行ルーティングをオフにします。「論理」ペインを右クリックし、「自動ルート」が選択されていないことを確認します。

  2. 「新規1:Nリレーション」アイコンをクリックします。

  3. Booksボックスをクリックしてから、Transactionsボックスをクリックします。BooksからTransactionsに矢印付きの線が引かれます。

  4. 「新規1:Nリレーション」アイコンをクリックします。

  5. Patronsボックスをクリックしてから、Transactionsボックスをクリックします。PatronsからTransactionsに矢印付きの線が引かれます。

  6. オプションで、線をダブルクリック(または線を右クリックして「プロパティ」を選択)し、「リレーションのプロパティ」情報を表示することもできます。

  7. 「リレーショナル・モデルの作成」に進みます。

関連項目

Data Modelerチュートリアル: 小規模データベースのモデリング

Data Modelerのユーザー・インタフェース

2.2 リレーショナル・モデルの作成

チュートリアルの図書館データベースのリレーショナル・モデルは、論理モデルのエンティティ(Books、PatronsおよびTransactions)を反映する表と、各エンティティのすべての属性で構成されています。このチュートリアル用に簡略化されたデータ・モデルでは、1つのリレーショナル・モデルが論理モデル全体を反映していますが、他のデータ・モデルについては、1つ以上のリレーショナル・モデルを作成して、各モデルに論理モデル全体またはその一部を反映させることができます。(リレーショナル・モデルに論理モデルの一部を反映するには、リレーショナル・モデルのエンジニアリング用のダイアログ・ボックスで、フィルタ機能を使用します。)

リレーショナル・モデルの作成方法は、次のとおりです。

  1. 論理モデルを選択して、「リレーショナル・モデルに対するエンジニアリング」アイコンをクリックするか、ナビゲータで論理モデルを右クリックしてから、「リレーショナル・モデルに対するエンジニアリング」をクリックします。「エンジニアリング」ダイアログ・ボックスが表示されます。

  2. デフォルトをすべて受け入れ(フィルタは使用しない)、「エンジニア」をクリックします。これによって、論理モデルを反映する表および他のオブジェクトが、Relational_1モデルに移入されます。

  3. ウィンドウの左側にあるオブジェクト・ブラウザで「リレーショナル・モデル」ノードを展開し、Relational_1およびオプションで、その下にあり任意のエントリを含むノード(「表」、「列」など)を展開し、作成されたオブジェクトを表示することもできます。

  4. リレーショナル・モデルの名前Relational_1を、表示するダイアグラムをよりわかりやすく表す名前(Library (relational)など)に変更します。具体的には、階層表示でRelational_1を右クリックして「プロパティ」を選択し、「モデルのプロパティ - <名前> (リレーショナル)」の「一般」ペインで、「名前」Library (relational)と指定し、「OK」をクリックします。

  5. 「DDLの生成」に進みます。

関連項目

Data Modelerチュートリアル: 小規模データベースのモデリング

Data Modelerのユーザー・インタフェース

2.3 DDLの生成

指定したモデルを反映するデータベース・オブジェクトの作成に使用可能なデータ定義言語(DDL)文を生成します。DDL文は、指定した物理モデル(Oracle Database 11gなど、データベースのタイプ)を実装します。

物理モデルの作成方法は、次のとおりです。

  1. オプションで、次の手順を実行して、DDL文を生成する前に物理モデルを表示します。

    1. リレーショナル・モデルを選択し展開して、物理モデル・ノードを右クリックして、「新規」を選択します。物理モデルを作成するデータベースのタイプを選択するためのダイアログ・ボックスが表示されます。

    2. データベースのタイプ(Oracle Database 11gなど)を指定して、「OK」をクリックします。物理モデル・ノードの下にデータベースのタイプが反映された物理モデルが作成されます。

    3. Libraryリレーショナル・モデルの下の「物理モデル」ノードを展開し、その下の新しく作成された物理モデルおよび「表」ノードを展開して、作成された表オブジェクトを表示します。

  2. 「ファイル」「エクスポート」「DDLファイル」をクリックします。

  3. データベース・タイプ(Oracle Database 11gなど)を選択して、「生成」をクリックします。「DDL生成オプション」ダイアログ・ボックスが表示されます。

  4. デフォルトをすべて受け入れ、「OK」をクリックします。DDLファイル・エディタが表示され、表の作成および制約の追加のためのSQL文が示されます。(このウィンドウで文を編集できますが、このチュートリアルの演習では編集しないでください。)

  5. 「保存」をクリックして、ローカル・システムの.sqlスクリプト・ファイル(create_library_objects.sqlなど)に文を保存します。

    後でスクリプトを実行して(たとえば、データベース接続およびSQL DeveloperのSQLワークシートを使用して)、任意のデータベースにオブジェクトを作成できます。

  6. 「閉じる」をクリックしてDDLファイル・エディタを閉じます。

  7. 「設計の保存」に進みます。

関連項目

Data Modelerチュートリアル: 小規模データベースのモデリング

Data Modelerのユーザー・インタフェース

2.4 設計の保存

「ファイル」「保存」をクリックして設計を保存します。基本的な構造情報を含むようにXMLファイルの場所および名前を指定します(library_design.xmlなど)。ディレクトリまたはフォルダ構造は、設計の詳細情報を保持するように自動的に作成されます(「データベース設計」を参照)。

必要に応じて、設計オブジェクトの作成および変更を続行します。完了したら、変更を行った場合は設計を再び保存した後、「ファイル」「終了」をクリックしてData Modelerを終了します。

保存した設計を後で開いて、設計での作業を続行することもできます(「設計の保存、オープン、エクスポートおよびインポート」を参照)。

関連項目

設計の保存、オープン、エクスポートおよびインポート

Data Modelerチュートリアル: 小規模データベースのモデリング

Data Modelerのユーザー・インタフェース