0

Itemやなど、すべてに共通の属性のセットがあるItemNameとしItemImageます。

Itemさらに、特定の列を必要とする (重複する可能性がある)のいくつかの特定の違いがあることを事前に知っているとします。たとえば、ToyItemhas a special columnMinimumAgeCarItemhas a special columnNumWheelsです。

データベースでこれを次のように処理したい: create Itemtable with a primary key ItemIdToyItemで主キー REFERENCESItemIdを持つテーブルを作成しますItemCarItem主キーも で REFERENCES するテーブルをItemId作成しますItem

だから私の質問は:

  1. サブ項目テーブルの主キーとして単一の外部キーを使用することは合理的ですか?
  2. さまざまなタイプのすべてを追跡できる設計への別のアプローチはありItemますか? 今、私はこれらが何であるかを事前に知る必要があります.
4

2 に答える 2

1

それは本当にあなたのニーズに依存します。具体的には、データの検索方法について説明します。テーブルの属性であらゆる種類のアイテムを検索する場合Item、レイアウトはそれほど不合理ではありません。私はまだ別の戦略を提案しますが、これも簡単に拡張できます。

テーブルを保持し、Itemと呼ばれるテーブルをあと1つだけ追加しますAttr。にはAttr、2つのデータフィールドnameと、valueへの外部キーを含めることができますItem。必要に応じてAttr.name、タイプを作成して、enum許可された属性のみをのメインの「オブジェクト」に追加できるようにすることもできますItem

Toyもう1つのアプローチは、またはのようなサブタイプごとにテーブルを作成し、Carそれらを参照することItemです(その逆ではありません)。

いずれにせよ、JOINこれらのテーブルは簡単に作成できるので、実際にはそこにいるのはあなた次第です。

于 2013-01-16T08:55:05.313 に答える
1

Toy Items と Car Items は、クラス Items のサブクラスのようです。以下を参照してください

リレーショナル データベース設計の複数のユーザー タイプ

于 2013-01-16T12:05:31.823 に答える