0

2つの簡単な質問:

私は正規化フォームについて学ぶために最善を尽くしましたが、この特定の状況については確信が持てませんでした。

  1. イベントがあります。
  2. イベントには多くのインスタンスがあります。
  3. インスタンスには、食べ物、人、コスト、評価、場所などがあります。

食べ物、人、コストなどはそれぞれ独自のテーブルを取得する必要がありますか、それとも単にインスタンステーブル(BLOB)の列にする必要がありますか?それらはインスタンスにのみ属し、共有されないため、それぞれに完全なテーブルが必要になると考える理由はありません。しかし...将来が彼らが彼ら自身である理由を私に与えるかもしれないかどうか私にはわかりません、それで彼らを彼ら自身のものとして扱う方が良いですか?

次に、それらすべてがそれぞれ独自のテーブルである必要がある場合、Event外部キーも格納することは有用ですか?インスタンスに関係なく、イベントのすべてのフードリストを呼び出したい場合、またはイベントからすべてのインスタンスを取得してから、各インスタンスの情報を呼び出す場合。その呼び出しが発生することを期待している場合、それはキーを追加するのに十分な原因ですか、それともこの不十分な計画ですか?

4

2 に答える 2

2

道に迷って後で決断を後悔する前に、今ここで将来の計画を立てることもできます。インスタンス アイテム (Food、People、Cost など) を別のテーブルに格納することをお勧めします。インスタンス -> インスタンス アイテムは多対多の関係です。この多対多の関係を可能にするには、オブジェクト テーブル間にいくつかのリンク テーブルが必要です。

Event | EventID
Instance | InstanceID, EventID
InstanceFood | InstanceID, FoodID
InstancePerson | InstanceID, PersonID
...
Food | FoodID, FoodName
Person | PersonID, PersonName

リンク テーブルの場合、primaryKey は InstanceID と他の ID 値の両方の組み合わせです。このセットアップでは、イベント ID をオブジェクト (食べ物、人) テーブルに保存する必要はありません。特定の人がどのイベントに関連付けられているかを知りたい場合は、Person と Instance Person および Instance を結合して、関連付けられているすべての EventID を取得します。

于 2012-05-09T20:33:27.707 に答える
1

モデルが指定されていません。Eventコストが「ある」とはどういう意味ですか? セントで表された単一の総計ですか? それは数値COST列に属します。複数の有料製品またはサービスの明細化ですか? 次に、別のテーブルに移動する必要があります。これが、1:n の関係を実装する唯一の適切な方法だからです。同様に、Evaluation1 から 10 までのスケールで 1 つのスコアですか? 桁。Q&A の位置がいくつか (または神が禁じているように、可変数) の構造化されたアンケートですか? テーブル。重要なのは人数だけ?桁。関係者の身元は重要ですか?テーブル。

2. に関しては、1:n データを保持する関連付けられたテーブルがある場合、それらが外部キーを介して「所有」レコードを参照できるようにする方法はありません。たとえば、 と の間の 1:n 関係をモデル化するためにテーブルが必要な場合InstancePeoplePeople列が必要InstanceIdです。

于 2012-05-09T20:37:57.843 に答える