2016-08-01 8 views
0

私が持っている:データベース設計-relation

  • 要求がPKおよびその他の属性としてIDを持っています。 IDは、PKおよびその他の属性

  • 訪問者エンティティと電話番号がPK可能です

  • 顧客データベース。


  • 顧客や訪問者が要求を行うことができます。
  • 誰が要求するのか記録する必要があります
  • お客様のIDは電話番号とは異なる形式です。
  • 私は訪問者テーブルの中にrequestIDというFKを追加し、訪問者が彼の要求によって識別されるようにそれをPKにします。
  • しかし、問題は顧客をリクエストにどのように結び付けるかです。
  • 私は、ソリューション提案:
  • は--->私はデータベース
  • 新しいテーブルを作成し、顧客情報をコピーして、新しい列の追加変更することはできません顧客テーブル内のFKを追加 - >意志は冗長性が含まれています。
  • 新しいテーブルを作成すると、requestIDとcustomerID --->が含まれますが、リレーションシップは別のテーブルに作成する多対多ではありません(顧客は多くのリクエストを行うことができ、それが神の慣行であれば、いいえ。
  • 誰がリクエストを行うかを識別するリクエストテーブル内にFKを追加します--->問題はドメインが同じではないということです。

私のエンティティのイメージをよく見て、お客様に接続する最良の方法は何か教えてください。事前に enter image description here

おかげで、

答えて

0

お客様は、多くの要求をすることができ、かつ要求は一つだけお客様に所属することができます場合は、その顧客を参照するための要求で外部キーを必要としています。

お客様が多くのビジターに関連付けることができる場合、ビジターはその外部キーをカスタマーに持っている必要があります。お客様は、VisitorをJOINテーブルと見なして、顧客にその要求を行うことができます。

0

私の見解では、ポリモーフィックな関連付けを追加する必要があります。そのために

要求テーブル、ビジターテーブルとリクエストテーブル、顧客テーブル

あなたが要求テーブルに2つの列を追加することができます。

  1. はrequester_id
  2. requester_type

requester_id親テーブルのID(顧客/ビジター)親テーブルのモデル/テーブルを保持する

requester_type(顧客/ビジター)を保持する

テーブルにこの関係がある必要があります。

visitor can have many requestsおよび customer can have many request