• ベストアンサー

ER図が分かりづらい・・・

例えば、四半期テーブルが 四半期ID 於年月日 至年月日 販売情報テーブルが、 販売情報ID 受注時期 納入時期 とあって、販売情報テーブルの受注時期と、納入時期フィールドには、 それぞれ、四半期テーブルの四半期IDを入れるような場合、 ER図ではどうなるんでしょうか? どうにも、ER図って、どのフィールドとどのフィールドが繋がっているのか、 直感的でなくて分かりづらいです。 Clay Database Modelingというツールを使って書いているのですが、 特にこのような場合、二つのリレーションの矢印が重なってしまって意味不明になります。 なにかもっとわかりやすい標準的な図の書き方や、 図を書くためのツールってないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • cse_ri2
  • ベストアンサー率25% (830/3287)
回答No.2

BI/データウェアハウスを専門にしています。 ツールを使ってER図を描いた経験はありませんが、質問にあるような場合、四半期テーブルの仮想テーブルを二つ図に描き、 ・四半期テーブル(受注) ・四半期テーブル(納入) とします。 そして、「四半期テーブル(受注)」と「四半期テーブル(納入)」の二つの仮想テーブルを、それぞれ販売情報テーブルと結合させる図を描きます。

その他の回答 (1)

  • cyanberry
  • ベストアンサー率50% (117/230)
回答No.1

私は例題のような場合は線を引きません。 "四半期テーブル"の"四半期ID"というのがおそらく"販売情報テーブル"以外のいろんな所でも使用されますよね?それ全部に線を引くとぐちゃぐちゃになってかえって分かりくくなるので、いっそ何も関連付いていない独立したテーブルにしています。その代り、テーブル定義の備考欄に記述しておいてます。 私も昔すべてのスキーマがわかるER図を作成しようと頑張ってみましたが、無理でしたし、そこまでする必要もないなと思いました。 ER図ではテーブル名、カラム名、テーブルの親子関係の情報のみを記述して、詳細は別資料とした方が見やすいですし、メンテが楽です。 テーブル名、カラム名に推測しやすいような名前を付けるのもコツです。

関連するQ&A

  • ER図の外部キー

    はじめまして ER図の書き方でFK(外部キー)として記載できるもしくは そう呼べるのはinnodbでの環境に限るのでしょうか? mysqlでmyisamにて構築しているのですが 例えば注文テーブルに商品IDや顧客ID、受注スタッフID、発注スタッフID等の カラムがあったとして、そらぞれのカラムは商品テーブル、顧客テーブル、 スタッフテーブルのプライマリーキーです。 この場合、商品IDは外部キーと呼べるのでしょうか。 また発注スタッフIDが必ず登録されているとは限らないのですがこれも外部キー と呼べるのでしょうか。 よろしくお願いします

    • ベストアンサー
    • MySQL
  • VisoでのER図の書き方を教えてください

     はじめまして、urizakaと申します。  さて、さっそく質問なのですが、VisioでDB作成の際に使うER図を書こうと 思っているのですが、フィールドとフィールドの関連付けの方法(あるマスター テーブルで使っているプリマリーキーのフィールドを別のマスターテーブルの フィールドへ関連付ける方法)について教えていただけないでしょうか?。  非常に基本的なことで恐縮ですが、すみませんが教えてください。よろしく お願いします。

  • ER図について

    ER図を書く練習をしています。 就職するために会社に申請し、審査後に応募者(申請者)を受け入れる(合格)か拒否するか(不合格)を決めるケースを想定してER図を描きました。焦点は、「合格/不合格の情報をどのテーブルに持たせるのがよいか」です。添付のURLに(1)、(2)の2つのケースを考えて書いてみました。いずれのテーブルもものすごく簡単に書いたので突っ込みどころは満載だと思いますが、あくまでも、合格/不合格の情報をどこに持たせるかだけに特化したものと考えてください。 (1)http://www.dotup.org/uploda/www.dotup.org15911.jpg.html (2)http://www.dotup.org/uploda/www.dotup.org15912.jpg.html 申請書テーブルは、申請者から受け取った書類を管理するテーブルです。受け取った日や、本件のステータス、結果を応募者に送信したかなどの情報を持ちます。イベント系(トランザクション系)のテーブルです。 (1)のやり方 申請者テーブルには申請者の情報そのものを書類から入力するリソース系(マスタ系)のテーブルです。名前、年齢、前職。。その他諸々を保持します。ここに、合格か不合格かをok_ngというbooleanで持たせることとします。 (2)のやり方 (1)と同様、申請者のテーブルはあるのですがok_ngという属性を持たせずに、代わりに別リソース系テーブル「合格者」を作ります。申請者と合格者の関係は1対1です。お互いがお互いのプライマリキーを参照する外部キーを持ちます。申請者テーブルと合格者テーブルのオプショナリティは必須対任意とします。つまり、申請者のうち、合格した人のみが合格者テーブルに登録されるということです。 上記2点の設計は、どちらも有効でしょうか?有効だとするとメリット、デメリットなどありますでしょうか? (2)のやり方を書いた理由は、とある本に飛行機の「乗客テーブル」と「マイレージプログラム加入者テーブル」のER図があり、その関係が丁度本件の「申請者テーブル」と「合格者テーブル」のような関係になっているのを見た事があるからです。コメント等あれば宜しくお願いします。

  • データベース設計の図が判りづらい

    データベース設計でよく使われるER図が理解しづらいです。 例えば、wikipediaに載っているこの図 http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E8%A8%AD%E8%A8%88 userテーブルのuser_idと、revisionテーブルのrev_userが関連している、 というのは、フィールドの名前を丁寧に読めば判りますが・・・ 似たような名前のフィールドが複数ある場合など、 どうやって判断するのでしょうか。。? もっとリレーションシップ等の構造がパッ見てと判るような 標準的な図の書き方(●●図と言えば誰でも判るような)って無いでしょうか。。?

  • こんな場合のER図はどうなりますか?

    こんにちは。データベースの勉強を始めて間もない者です。 例えば、ある中学校の1つのクラスの振る舞いを、ER図で表現することを考えます。各生徒をあらわす「生徒」テーブルを作ります。主キーは出席番号とします。 主キー以外には、名前、生年月日、得意科目、、、などを入れるのですが、「ライバル」という属性も入れたいと思います。自分(今、対象としている生徒)から見てライバルだと思うクラスメイトにあたるものです。 生徒によっては0人だったり多数だったりするので、「生徒」テーブルから出し、「ライバル」テーブルを作り、「生徒」:「ライバル」=1:0以上のリレーションをはります。「ライバル」テーブルの主キーは親の生徒の出席番号(外部キー)とライバルだと思われた生徒の出席番号のペアでいいや、と思ったのですが、ここで問題に気づきました。 出席番号1さんがライバルだと思っているのが、出席番号3さん、5さんとします。3さんは1さんのことをライバルと思っていませんが、5さんは1さんのことをライバルだと思っています。この時の「ライバル」テーブルは、主キーに1と5のペアを持つレコードが2つできてしまって問題になるのでしょうか?それとも、外部キーが異なるので問題はないのでしょうか? 問題があるとすると、どのようにテーブルを定義すればよいのでしょうか。さっきの例では「ライバル」テーブルに1と3のペアをキーとするレコードが1つできますが、これも「1から3へ」という意味が消えないような設計をしたいのですが、よくわからなくなりました。

  • ER図 設計 ruby rails データベース

    初めまして私はWEBエンジニアの駆け出しです。 勉強がてら、姉の会社の顧客管理システムを作成しようと思っています。 ですが、ER図を書くのも初めてですし関係性が理解できておりません。 そこでいくつか質問をさせてください。 以下、実現させたい事を下記に記載致します。 ・スタッフ別に売り上げ管理したい ・支店ごとの売り上げ管理したい ・担当するスタッフが変わっても前のスタッフの情報をもっておきたい。 ・顧客とスタッフを紐付けしたい。 ・ユーザーに付与した割引を一回の来店で1~n個使えるようにしたい。 ・ユーザーは一回の予約で複数の施術を予約できる。 上記6つを実現するためには今のER図で実現できますでしょうか お会計までの流れなのですが、 1.ユーザー詳細ページに入る。 2.ユーザーの詳細ページには予約一覧があり、来店されたら、予約のステータスから来店に切り替える。 3.ユーザーが利用できる割引を決定して、料金を決定したい。 1~3までの流れを実現する為には今のER図で実現できますでしょうか 疑問 1ユーザーが誰を紹介したかをわかるようにしたいのですが、 紹介テーブル的なものを作成するかユーザーテーブルに自己結合的なテーブル設計の方がいいのか迷っています。 支店ごとに出来る施術内容(料金表)を選択できるようにしたい(支店と料金テーブルの間に施術内容テーブルを作るべきでしょうか) 以上、たくさん質問してもうしわけないのですが、ご回答いただけると幸いです。

  • Excelのピボットテーブルのグループ化について

    Excelのピボットテーブルで日付のフィールドを四半期でグループ化すると1月~3月が第1四半期、4月~6月が第2四半期、7月~9月が第3四半期、10月~12月が第4四半期となってしまいますが、4月~6月を第1四半期とすることはできるのでしょうか。 (リストから1月~3月のデータをなくしても4月~6月は第2四半期となってしまいました)

  • リレーションシップの設定について

    リレーションシップの設定について Access2002にて受注管理を行っており テーブル、フィールドが次のように存在しています。 <T_納入先>  顧客ID  納入先コード  住所等情報... <T_顧客>  顧客ID  住所等情報... <T_売上情報>  受注ID  顧客ID  売上日やその他情報... <T_売上明細>  受注ID  明細や金額等... ---------- <T_顧客>に登録した顧客は複数の納入先を持つため [<T_顧客>の顧客ID 対 <T_納入先>の顧客ID]を[1 対 多]にてリレーションシップを作成しています。 <T_売上情報>の顧客IDと、<T_顧客>の顧客IDを[1 対 1]にて リレーションシップを作成しています。 ---------- ここで売上情報を登録するために「売上入力フォーム」なるものを作成し、 顧客IDや納入先の指定、売上日の記録や売り上げた明細を登録したいのですが 明細の入力部分は、サブフォームを作成し、<T_売上情報>と<T_売上明細>のクエリで問題ないのですが このフォーム自体のレコードソースとして使用するために <T_納入先><T_顧客><T_売上情報>の3つのテーブルの情報を含んだクエリを 作成したのですが、クエリ作成後、実行してもレコードが一切表示されません。 (おそらく<T_顧客>の中にさらに納入先が複数ある部分が うまくリレーションシップできていなくて矛盾を起こしているのでは・・と思ったのですが。) もちろん<T_納入先>と<T_顧客>のみであれば問題なくクエリは実行し、レコードも表示されます。 ある一つの顧客情報内にも複数の情報(=納入先)がある場合、 リレーションシップの設定はどのようにすればよいでしょうか。 長々とありますが、お分かりのかた是非とも教えて下さい。 よろしくお願いいたします。

  • ファイルメーカー 同一IDと日付への番号振り当て

    Aテーブル(伝票)とBテーブル(明細1商品で1レコード)があり A 受注シリアル 日付 顧客ID 合計金額 B 受注シリアル 受注ID 日付 商品名 色 数 小計 フィールドがあり 受注シリアルでリレーションをはり、AにBの内容(商品名、数、色など)をポータル表示させようと考えております。 今回の質問は今まで一つのテーブルで作業をしていたので一度2つのテーブルに別ける事にしました。 今までのデータをBテーブルのフィールド(顧客ID、日付、商品名、数、小計)へ振り分ける事はできたのですが、受注シリアルへ番号を振り分ける作業でつまづいてしまいました。 同日付と顧客IDに番号(受注シリアル)を振り当てるにはどうすればいいでしょうか? 現在Bテーブルに約20000レコードあります。 よろしくお願いいたします。

  • リレーションシップが作成できなくなりました

    Accessにて、受注管理システムを構築しているのですが 何かの拍子で、リレーションシップが壊れてしまい 再度設定しようとしても 「このリレーションシップを作成して、参照整合性を設定できません」と表示されできません。 テーブルは3つあり、以下の通りになっています。 ・顧客管理テーブル(顧客IDと氏名・住所など) ・売上情報テーブル(受注IDと、顧客IDなどの情報) ・売上明細テーブル(明細IDと、受注IDなどの情報) 問題の箇所は、売上情報テーブルと売上明細テーブルで 売上情報テーブルの「受注ID」と売上明細テーブルの「受注ID」 を結びつけようとすると、上記のメッセージが出てきてしまいます。 一通り、主キーの設定や空白行などはチェックしてみましたが やはり解決しませんでした。 一度壊れてしまったリレーションシップは修復不可能なのでしょうか・・・ どなたか、お知恵を拝借願います。