1

我正在尝试找到一种存储以下形式的单词组合的好方法:

排气净化系统
排气净化系统
排气净化系统
排气净化系统

默认情况下会给出这些组合。组合中的每个单词都存储为表“标签”中的唯一行。

标签
标识值
--------------------------
1个排气净化系统
2排气
3 清洁
4系统
5 排气净化
6 清洗系统

我想到了一个名为“组合”的新表:

作文
id domain_id 范围
----------------------
1 1 2,3,4
2 1 5,4
ETC...

但是在一列中存储多个单独的值并不是标准化的设计。有什么想法吗?

顺便说一句:我正在使用 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

rank 列是可选的,当且仅当您在此处定义的范围对顺序敏感时才应在此处。

通过这种设计,您可以在 DB 级别获得一些引用完整性。

于 2009-11-19T11:50:32.110 回答
0

好吧,这是我能想到的标准化:

套
id domain_id
--------------
1 1
2 1
ETC...
作文
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
ETC...
于 2009-11-19T11:50:42.613 回答