如何将数据库的字段设置为数组?
答
如果你需要不同的值存储在一起,在一个单一的领域,那么你很可能会成为最好关闭它们存储作为值的分隔符分隔字符串:
+----------------------------------+ | 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:N(1对多)1台和彼此之间的关系。第一个表中的每一行代表一个集合,第二个表中的每一行都是集合中的一个元素,并引用第一个表。
一个逗号分隔的列表,序列化,或URL编码的字符串也是一个不错的解决方案,其他的答案指出...
答
没有,但你使用的是什么服务器端语言?
如果使用PHP,您可以使用
$serializedArray = serialize($myArray);
然后将该值插入数据库。为了让它恢复使用,请使用unserialize()
;
答
这几乎与上面的答案相同(使用分隔字符串),但您也可以将该文本保存为XML。根据您使用的数据库,这可能很简单或乏味。
正如上面指出的那样,您显然已经失去了能够从数据库层(轻松地)管理数据完整性的任何方面。
你已经回复了一个很好的细节。你给了我宝贵的一部分时间来回复我。非常感谢。 – 2010-01-14 07:07:56