2 Data Modelerチュートリアル: 小規模データベースのモデリング
このチュートリアルでは、Data Modelerを使用して、簡略化した図書館データベースのモデルを作成します。このデータベースには、本、利用者(図書館カードの所有者)および処理(本の貸出し、本の返却など)に関するエンティティが含まれます。
このチュートリアルで使用するエンティティは、SQL Developerのオンライン・ヘルプで提供されるチュートリアルのエンティティと同じです。このモデルは意図的に簡略化されているため、公共または組織内の実際の図書館での利用には適していません。高度なチュートリアルなど、他の資料については「データ・モデリングについての詳細な情報」を参照してください。
特に説明しないダイアログ・ボックス、タブまたはフィールドには、何も指定しないでください。
簡略化したこのチュートリアルでは、トップダウン・モデリング・アプローチで考えられるステップのうち、一部のみを使用します。(アプローチの詳細は、「データ・モデリングへのアプローチ」を参照してください。)
実行する主要なステップは次のとおりです。
関連項目
2.1 論理モデルの作成
データベースの論理モデルには、Books(図書館の各本を表現)、Patrons(図書館カードを持つ各利用者を表現)およびTransactions(利用者と本に関連する各処理を表現)という3つのエンティティが含まれます。ただし、これらのエンティティを作成する前に、エンティティの作成(および後のDDL生成)をより有効かつ具体的なものにするためのドメインを作成します。
論理モデルの作成を開始するには、「ドメインの追加」に進みます。
2.1.1 ドメインの追加
データのニーズを計画する際に、何種類ものレコードに出現するフィールドの種類が複数あり、多くのフィールドで定義を共有できることを決定しました。たとえば、次のように決定しました:
-
利用者の姓および名は、それぞれ25文字以下で指定します。
-
通りの住所の行は、40文字以下で指定します。
-
市の名前は、25文字以下で指定します。
-
州コード(米国)は、2文字の標準略語で指定します。
-
zipコード(米国の郵便番号)は、10文字以下で指定します(nnnnn-nnnn)。
-
書籍識別子は、20文字以下で指定します。
-
その他の識別子は、数字7桁以下で指定します(小数位なし)。
-
(本、記事などの)タイトルは、50文字以下で指定します。
後でエンティティを作成する際に属性のデータ型を指定するのに使用できるよう、適切なドメインを追加することにします。(追加したドメインは、Data Modelerを終了して再起動した際に使用可能になります。)
-
「ツール」→「ドメイン管理」をクリックします。
-
「ドメイン管理」ダイアログ・ボックスに、次の定義を持つドメインを追加します。「追加」をクリックして各定義を開始し、それぞれの定義の終了時に「適用」をクリックします。
名前 論理型 その他の情報 利用者名
VARCHAR
サイズ: 25
住所の行
VARCHAR
サイズ: 40
市
VARCHAR
サイズ: 25
州
VARCHAR
サイズ: 2
郵便番号
VARCHAR
サイズ: 10
書籍ID
VARCHAR
サイズ: 20
数値ID
NUMERIC
精度: 7、スケール: 0
タイトル
VARCHAR
サイズ: 50
-
これらのドメインの定義が完了したら、「保存」をクリックします。これによって、Data Modelerをインストールした場所の下にある
datamodeler/domains
ディレクトリまたはdatamodeler\domains
フォルダに、defaultdomains.xml
というファイルが作成されます。 -
オプションで、新しい場所(Data Modelerのインストール・ディレクトリの下以外)に
defaultdomains.xml
ファイルをコピーして、library_domains.xml
などの適切な名前を付けることもできます。このファイルは、他の設計を作成する際に、ドメインのインポート元として使用できます。 -
「閉じる」をクリックし、ダイアログ・ボックスを閉じます。
-
「Booksエンティティの作成」に進みます。
2.1.3 Patronsエンティティの作成
Patronsエンティティは、図書館の各利用者(図書館カードを保持し、本を借りることのできる各利用者)を表します。Patronsエンティティの作成方法は、次のとおりです。
2.1.4 Transactionsエンティティの作成
Transactionsエンティティは、本の貸出しや返却など、利用者および本に関連する各処理を表します。利用者が図書館デスクに持ってくる本の数にかかわらず、各エンティティでは1つの処理が記録されます。たとえば、利用者が2冊の本を返して3冊の本を借りる場合は、5つの処理(2つの返却と3つの貸出し)が記録されます。Transactionsエンティティの作成方法は、次のとおりです。
2.1.5 エンティティ間のリレーションの作成
リレーションは、エンティティ間のリレーションシップ(1対多、多対1または多対多)を示します。エンティティ間には、次のリレーションシップがあります。
-
BooksとTransactions: 1対多各書籍は、連続した複数のトランザクションに含めることができます。各本は、0または1のアクティブな貸出し処理を持つことができます。貸し出された本は、返却されるまで、再び貸し出すことができません。
-
PatronsとTransactions: 1対多。各利用者は、複数の連続した同時トランザクションに含めることができます。各利用者は図書館を訪れた際に1冊以上の本を借りたり、複数回の訪問を反映するアクティブな貸出し処理を複数回行うことができます。また、各利用者は、借りた本を任意の時点で返却できます。
リレーションシップは次のようにして作成します。完了すると、メイン領域の論理モデル・ペインが次の図のように表示されます。この図では、Bachman表記法が使用されていることに注意してください(「表示」→「論理ダイアグラム表記法」→「Barker表記法」をクリックすると、Barker表記法に変更できます)。
-
メイン領域の論理モデル・ペインで、Booksが左側、Patronsが右側、TransactionsがBooksとPatronsの間またはそれらの中央下に来るよう、エンティティ・ボックスを配置します。(ポインタが十字形のままの場合は、左上の「選択」アイコンをクリックしてポインタを矢印に変更します。)
推奨: この演習では、自動的な行ルーティングをオフにします。「論理」ペインを右クリックし、「自動ルート」が選択されていないことを確認します。
-
「新規1:Nリレーション」アイコンをクリックします。
-
Booksボックスをクリックしてから、Transactionsボックスをクリックします。BooksからTransactionsに矢印付きの線が引かれます。
-
「新規1:Nリレーション」アイコンをクリックします。
-
Patronsボックスをクリックしてから、Transactionsボックスをクリックします。PatronsからTransactionsに矢印付きの線が引かれます。
-
オプションで、線をダブルクリック(または線を右クリックして「プロパティ」を選択)し、「リレーションのプロパティ」情報を表示することもできます。
-
「リレーショナル・モデルの作成」に進みます。
関連項目
2.2 リレーショナル・モデルの作成
チュートリアルの図書館データベースのリレーショナル・モデルは、論理モデルのエンティティ(Books、PatronsおよびTransactions)を反映する表と、各エンティティのすべての属性で構成されています。このチュートリアル用に簡略化されたデータ・モデルでは、1つのリレーショナル・モデルが論理モデル全体を反映していますが、他のデータ・モデルについては、1つ以上のリレーショナル・モデルを作成して、各モデルに論理モデル全体またはその一部を反映させることができます。(リレーショナル・モデルに論理モデルの一部を反映するには、リレーショナル・モデルのエンジニアリング用のダイアログ・ボックスで、フィルタ機能を使用します。)
リレーショナル・モデルの作成方法は、次のとおりです。
-
論理モデルを選択して、「リレーショナル・モデルに対するエンジニアリング」アイコンをクリックするか、ナビゲータで論理モデルを右クリックしてから、「リレーショナル・モデルに対するエンジニアリング」をクリックします。「エンジニアリング」ダイアログ・ボックスが表示されます。
-
デフォルトをすべて受け入れ(フィルタは使用しない)、「エンジニア」をクリックします。これによって、論理モデルを反映する表および他のオブジェクトが、Relational_1モデルに移入されます。
-
ウィンドウの左側にあるオブジェクト・ブラウザで「リレーショナル・モデル」ノードを展開し、Relational_1およびオプションで、その下にあり任意のエントリを含むノード(「表」、「列」など)を展開し、作成されたオブジェクトを表示することもできます。
-
リレーショナル・モデルの名前Relational_1を、表示するダイアグラムをよりわかりやすく表す名前(Library (relational)など)に変更します。具体的には、階層表示でRelational_1を右クリックして「プロパティ」を選択し、「モデルのプロパティ - <名前> (リレーショナル)」の「一般」ペインで、「名前」に
Library (relational)
と指定し、「OK」をクリックします。 -
「DDLの生成」に進みます。
関連項目
2.3 DDLの生成
指定したモデルを反映するデータベース・オブジェクトの作成に使用可能なデータ定義言語(DDL)文を生成します。DDL文は、指定した物理モデル(Oracle Database 11gなど、データベースのタイプ)を実装します。
物理モデルの作成方法は、次のとおりです。
-
オプションで、次の手順を実行して、DDL文を生成する前に物理モデルを表示します。
-
リレーショナル・モデルを選択し展開して、物理モデル・ノードを右クリックして、「新規」を選択します。物理モデルを作成するデータベースのタイプを選択するためのダイアログ・ボックスが表示されます。
-
データベースのタイプ(Oracle Database 11gなど)を指定して、「OK」をクリックします。物理モデル・ノードの下にデータベースのタイプが反映された物理モデルが作成されます。
-
Libraryリレーショナル・モデルの下の「物理モデル」ノードを展開し、その下の新しく作成された物理モデルおよび「表」ノードを展開して、作成された表オブジェクトを表示します。
-
-
「ファイル」→「エクスポート」→「DDLファイル」をクリックします。
-
データベース・タイプ(Oracle Database 11gなど)を選択して、「生成」をクリックします。「DDL生成オプション」ダイアログ・ボックスが表示されます。
-
デフォルトをすべて受け入れ、「OK」をクリックします。DDLファイル・エディタが表示され、表の作成および制約の追加のためのSQL文が示されます。(このウィンドウで文を編集できますが、このチュートリアルの演習では編集しないでください。)
-
「保存」をクリックして、ローカル・システムの.sqlスクリプト・ファイル(
create_library_objects.sql
など)に文を保存します。後でスクリプトを実行して(たとえば、データベース接続およびSQL DeveloperのSQLワークシートを使用して)、任意のデータベースにオブジェクトを作成できます。
-
「閉じる」をクリックしてDDLファイル・エディタを閉じます。
-
「設計の保存」に進みます。
関連項目
2.4 設計の保存
「ファイル」→「保存」をクリックして設計を保存します。基本的な構造情報を含むようにXMLファイルの場所および名前を指定します(library_design.xml
など)。ディレクトリまたはフォルダ構造は、設計の詳細情報を保持するように自動的に作成されます(「データベース設計」を参照)。
必要に応じて、設計オブジェクトの作成および変更を続行します。完了したら、変更を行った場合は設計を再び保存した後、「ファイル」→「終了」をクリックしてData Modelerを終了します。
保存した設計を後で開いて、設計での作業を続行することもできます(「設計の保存、オープン、エクスポートおよびインポート」を参照)。
関連項目