/ /列を使用する場合と別の表を使用する場合 - データベースデザイン - データベース、データベースデザイン、リレーショナルデータベース、データベーススキーマ

カラムを使用する場合と別のテーブルを使用する場合 - データベース設計 - データベース、データベース設計、リレーショナルデータベース、データベーススキーマ

ほとんどの人はEAVを推奨しないし、その理由のいくつかを知っている。 しかし、EAVアプローチとそのようなアプローチの違いは何ですか?

コンピューター

id, price, description

つながり

id, name (possible values: LAN, USB, HDMI, ..., all all about 10)

connections_computer

comp_id, conn_id

それともそのEAVですか?もしそうなら、正規化された代替案は何でしょうか?

私はそのような検索をしたいと考えてください:

LANとHDMIの両方があるすべてのコンピュータ接続。この場合、1つのjoin / filter属性が必要です。1つのcolumn / attributeとして使用すると、検索は簡単になりますが、多くのNULL値があります。

どのようにお勧めですか

回答:

回答№1は0

あなたの例は明白な多対多です。の中に EAV属性名 〜です ではなく、列の 列の。例えば、

computer: {computer_id, attr_name, attr_value}

insert into computer (computer_id, attr_name, attr_value)
values
(1, "connection", "HDMI")
, (1, "connection", "USB")
, (1, "memory", "2 GB")
;

EAVのアプローチになるでしょう。

ここに例があります RDBMSでのEAVアプローチ(柔軟性)に対して支払う金額の