2010-01-14 290 views

回答

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 
+-----------+---------+ 
+0

你已经回复了一个很好的细节。你给了我宝贵的一部分时间来回复我。非常感谢。 – 2010-01-14 07:07:56

1

是,在一个典型的关系型设计,你将有一个1:N(1对多)1台和彼此之间的关系。第一个表中的每一行代表一个集合,第二个表中的每一行都是集合中的一个元素,并引用第一个表。

一个逗号分隔的列表,序列化,或URL编码的字符串也是一个不错的解决方案,其他的答案指出...

0

没有,但你使用的是什么服务器端语言?

如果使用PHP,您可以使用

$serializedArray = serialize($myArray); 

然后将该值插入数据库。为了让它恢复使用,请使用unserialize();

0

这几乎与上面的答案相同(使用分隔字符串),但您也可以将该文本保存为XML。根据您使用的数据库,这可能很简单或乏味。

正如上面指出的那样,您显然已经失去了能够从数据库层(轻松地)管理数据完整性的任何方面。

相关问题