我希望在数据库中有一个包含多个条目的列。是否可以将列的类型定义为数组(固定大小的数组或某些动态集合),以便它可以存储多个条目。
答案 0 :(得分:2)
如果您需要将各种值一起存储在一个字段中,那么最好将它们存储为以分隔符分隔的值字符串:
+----------------------------------+ | PRODUCTS | +----------+-----------------------+ | Product | Colors | +----------+-----------------------+ | Notebook | blue,red,green,orange | +----------+-----------------------+
这通常是不是你想要的东西。一般来说,想法解决方案是在表之间创建关系。例如:
+---------------+ | PRODUCT | +----+----------+ | ID | Product | +----+----------+ | 1 | Notebook | +---------------+ +---------------+ | COLORS | +----+----------+ | ID | Color | +----+----------+ | 1 | Blue | +---------------+ | 2 | Red | +---------------+ | 3 | Green | +---------------+ +---------------------+ | PRODUCTCOLORS | +-----------+---------+ | ProductID | ColorID | +-----------+---------+ | 1 | 1 | Notebook, Blue +-----------+---------+ | 1 | 3 | Notebook, Green +-----------+---------+
答案 1 :(得分:1)
是的,在典型的关系设计中,您将在1个表与另一个表之间建立1:N(1对多)的关系。第一个表中的每一行代表一个集合,第二个表中的每一行都是集合中的一个元素,并引用第一个表。
逗号分隔列表,序列化或url编码的字符串也是一个很好的解决方案,因为其他答案指出...
答案 2 :(得分:0)
不,但您使用的服务器端语言是什么?
如果使用PHP,您可以使用
$serializedArray = serialize($myArray);
然后将该值插入db。要将其取消,请使用unserialize()
;
答案 3 :(得分:0)
这与上面的答案几乎相同(有一个分隔的字符串),但您也可以将该列中的文本另存为XML。根据您使用的数据库,这可能很容易或乏味。
如上所述,您是否明显失去了从数据库层(轻松)管理数据完整性的任何方面。