ほとんどの人は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アプローチ(柔軟性)に対して支払う金額の