主キーと主要属性の定義 Quiz: ER図でのエンティティの位置 • ER図の役割は,エンティティやその間の関連 を正確に第三者に伝えることが第一であるか ら,ER図が詳細化されて図が分かりにくく なってくれば,エンティティの配置を変えて分 かりやすいようにするべきである. ○か×か エンティティの配置ルール • いままでのER図では – イベント系エンティティは発生順に左から右へ – リソース系エンティティはその周りへ – リレーションシップを表す線が交差しないように • 最初に決めた配置ルールはできるかぎり, 途中で変えない. エンティティの配置ルールの例 • 2つの方針 – リソースを上に,イベントを下に – イベントを発生順に並べる. • イベントに付帯するリソースを回りに配置 • リソースの中は,人,物,顧客,金銭などのタ イプごとに分けて配置 • 数が多くなれば,サブジェクトごとに図を分け る サブジェクト(図5-1) 配置ルールは指針 • ルールがないと… – 複数のモデラが分担してモデリングする場合,モ デラにより異なる配置の図ができ,統合が困難. • ルールに厳格になりすぎると… – 線が交差し分かりにくい.それでは元も子もない. • どこまで拘るかはセンスの問題 • ルールを指針として設け,守るように努める. – 異なる配置を取ると印象が変わる – 混乱を避けるため,配置はできるだけ変えない イメージが変わる例 (イベントとリソースは色分け) イメージが変わる例 主要な属性の定義 切り出したエンティティを具体化しよう • 主要な属性をエンティティに追加 • ここで実施するのは,あくまでトップダウン – 「この属性はあるはずだ」でよい – すべての属性を見切るのが目的でない – 属性名もDB構築時の正確性は必要ない. • 正式な属性名はネーミング規則に則って付けるべき • 仮の名前を付けておく Quiz: 正確な名前を付けないのは? • トップダウン・モデリングで正確な名前をつ けないのはなぜ? ○ ① 詳細に拘らず,まずは全体を一望する図をつく ることが肝心だから ② 正確な名前を付けるためのソフトウェアが開発 されているから ③ 後のモデリングにより,名前が修正される可能 性があり,いま名前で悩むのは時間の無駄だ から 前回の図4-12を 書籍販売サイトの画面を見ながら エンティティの具体化をしてみる エンティティの属性として思いつくのは 「思いつく」 でよい • 「商品」エンティティでは ISBN,作者,ページ数,価格,刊行日, などなど • 「顧客」エンティティでは Emailアドレス,電話番号,住所,顧客名 などなど 各エンティティの具体的イメージを 大まかにつかむ ことが重要 主キー候補の選定 • 主キー – エンティティ内のインスタンスを一意に識別する 属性 • Quiz: 「データベース」の教科書では主キー候 補のことを – 候補キー – キー候補 – キー候補属性 正解は 候補キー 主キー選定の手順 • 抽出した属性の中から主キー候補を選択 • その中から選定基準に則って1つに絞る • 最初に抽出した属性(の組合せ)だけではう まくいかないときは, – 新たなキー属性をデータベース管理者がつくる 代理キー(Surrogate Key): データベース管理者がつくるコードのこと 主キーの選定基準 • 値が変わらないもの • できるだけ桁数の少ないもの • 複合キーの場合,連結が多くないもの – せいぜい,5つまで • 必ず存在するもの – NULL を許さない [補助] 値が変わると?NULLなら? • 値が変わると, – そのエンティティを参照している部分を全て書き 換える必要がある. – 実質的にデータベースの作り直りが必要 • NULLを許してしまうと – 主キーは,インスタンスを一意に識別するキー – NULLだと,一意に識別できない 「顧客」エンティティの例 • 短いものとしてはemailアドレス • emailアドレスは変わる可能性あり(ex. プロバイダ変更) • 将来的には,顧客コードを作成.現時点ではemailアドレスのまま 概念モデルでは具体的イメージ • 必要そうな エンティティを切り出す • エンティティ として存在するに違いない とお もう属性を切り出す • エンティティも属性も 具体的イメージをつかめるものにとどめる ことが大切 主キーとしてのコード • どうしてもだめなら,コードの使用もやむなし • 意味なしコードと意味ありコード 意味なしコードと意味ありコード • コードにおまじないのような意味を持たせる のはモデルの美しさをなくすだけ • それでも意味ありコードのほうが用いられて いる. • 現実解 – 意味ありコードを用いる – 意味を示す属性は別に用意する モデルの見直し: • 概念モデルで,エンティティを抽出した段階で は,間違いもある. • 属性を追加し,主キーを決めると間違いが見 えてくる 顧客とクレジット会社 • 顧客が複数のクレジット会社に加入していて, クレジット会社は一人の会員だけが加入して いることになってしまっている. • 本当は,顧客とクレジット会社は,多対多の 関係 • 「会員」エンティティを追加 [補助] どうして,クレジット会社の会員は一人? • カージナリティを考えよう • ●がついている方が多,ついていない方が1 顧客 クレジット会社 本当は多対多であった 新しく会員を追加することによって ・顧客が複数のクレジット会社のカードを持っていること ・クレジット会社が複数の顧客をもっていること を示せる 顧客,ショッピングカート,商品 • 誰のショッピングカートで,何を買ったのかが 不明 • 誰のショッピングカートかを示すため, – ショッピングカートから顧客への依存関係 • 何を買ったかをしめすため – ショッピングカートから商品への非依存関係 • ショッピングカート明細を追加 これだけでは, ・誰のショッピングカートか ・何を買おうとしているか が不明 こうすると, ・誰のショッピングカートに ・どの商品を何個 買おうとしているかが分かる いままでの修正をまとめると • 図5-9 • PPTに入りきらないので,教科書を見てくださ い.
© Copyright 2024 ExpyDoc