1

次の形式の単語構成を保存するための優れた方法を見つけようとしています。

排気洗浄システム
排気洗浄システム
排気洗浄システム
排気洗浄システム

組み合わせは、ケースごとにデフォルトで指定されます。コンポジション内のすべての単語は、テーブル'labels'に一意の行として格納されます。

ラベル
ID値
--------------------------
1排気洗浄システム
2エキゾースト
3クリーニング
4システム
5排気洗浄
6洗浄システム

'compositions'という新しいテーブルについて考えました。

構成
id domain_id range
----------------------
1 1 2,3,4
2 1 5,4
等...

ただし、列に複数の分離された値を格納することは、正規化された設計ではありません。そのためのアイデアはありますか?

ところで:私はMySQLとActiveRecord/Railsを使用しています。

4

2 に答える 2

0

範囲がアトミックではないため、提案する設計は最初の正規形でもありません

ここで使用するスキーマは次のようになります

compositions
id   domain_id
-------------
1    1
2    1

compositions-content
composition_id        rank        label_id
------------------------------------------
1                     1           2
1                     2           3
1                     3           4
2                     1           5
2                     2           4

でcomposition_idはcomposition.idを参照し、label_idはlabel.idを参照します

ランク列はオプションであり、ここで定義する範囲が順序に依存する場合にのみ、ここにある必要があります。

この設計では、DBレベルで参照整合性があります。

于 2009-11-19T11:50:32.110 に答える
0

まあ、これは私が正規化の観点から考えることができる限りです:

セット
id domain_id
--------------
1 1
2 1
等...
構成
id set_id label_id order
---------------------------
1 1 2 1
2 1 3 2
3 1 4 3
4 2 5 1
5 2 4 2
等...
于 2009-11-19T11:50:42.613 に答える