0

ほとんどの人は 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つの結合/フィルター属性が必要になります。1つの列/属性として持つと、検索は簡単になりますが、NULL値が多くなります。

おすすめのやり方は?

4

1 に答える 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アプローチ(柔軟性)に支払う価格の例です。

于 2012-08-06T22:02:52.270 に答える