2

特定のオブジェクト、Say Itemに関する情報を保持し、列を持つテーブルがあります

ItemID、ItemName、price、ItemListingType ..... LastOrderDate ..

情報の1つであるItemListingTypeは、次のような10種類のタイプのいずれかになります。

private、gov、non-gov、business ...など(文字列)であり、将来的にはさらに多くのタイプに拡張される可能性があります。

テーブルITEM内の列を使用する必要がありますか、それとも2つの列を持つ別のテーブルを使用し、それを参照するために外部キーをItemテーブルに配置する必要がありますか(1対多の関係)?好き:

  • ListingTypeID int

  • ListingTypeName varchar(MAX)

編集:列の値の数、そのために別のテーブルを使用することを検討します

2、4または何?

ありがとう

4

6 に答える 6

8

この種の参照データを格納するには、別のテーブルを使用します。これは正規化の原則であり、読み取り専用データと読み取り/書き込みデータを分離しているため、キャッシュも容易になります。私の2セント...

于 2010-01-21T19:49:30.220 に答える
3

別表。

  • まだ使用されていないリスティング タイプがある場合はどうなりますか?
  • または、タイプ x の最後の項目を削除しますか?
  • または、値を変更する必要がありますか?

これらは挿入、更新、削除の異常であり、これが正規化の理由の 1 つです。

于 2010-01-21T19:50:58.937 に答える
2

私は間違いなく「ルックアップ」スタイルの列を選びます。そうすれば、許容されるリスティング タイプのリストに将来追加があったときに困惑することはありません。また、冗長性を減らし、特定のタイプのリストの指定を簡単に変更できるようにします (「政府」が「政府機関」に変更された場合は、1 か所で変更するだけで済みます)。

于 2010-01-21T19:49:15.093 に答える
2

ListingTypes を保持する 2 番目のテーブルでそれを行い、オブジェクトを含むテーブルからそのテーブルの ID にリンクする必要があります...

Relational DatabaseRelational modelを見てください。

于 2010-01-21T19:50:39.807 に答える
1

このような状況で、私は自分自身に問いかけます: アイテムは未定の数のリスティング タイプを持つことができますか? はいの場合は、別のテーブル。

仕様上、3種類以上は出ないって書いてあるの?依存します。別のテーブルを使用する場合もあれば、そうでない場合もあります。しばらくすると、この感覚が得られます。

アイテムのリスト タイプは常に 1 つですか? はいの場合、同じテーブル、単一の列。


ここで、問題をさらに一歩進めます。アイテムに 0 個以上のリスト タイプがあり、それらのリスト タイプが実際に共有されている場合 (つまり、2 つのアイテムが同じリスト タイプを持つ可能性がある場合、Items、ListingTypes、および多対多をサポートする相互参照テーブルの 3 つのテーブルがあります)。関係。

于 2010-01-21T20:18:20.693 に答える
0

古典的には、余分なテーブルを使用する必要があります。そのように重複することはないからです。また、このリストの値を 1 か所で変更することもできます。ただし、タイプが追加されないことが非常に確実な場合は、列を保持してください。

于 2010-01-21T19:50:26.393 に答える