【发布时间】:2014-10-17 09:56:19
【问题描述】:
我有一个数据库(用于 PHP Web 应用程序),其中的表 client 具有各种属性。
两个这样的属性是phone_numbers 和emails。
一个客户可以有零个或多个电话号码和零个或多个电子邮件。
我想将客户表存储为:
create table client (
id int not null auto_increment primary key,
...
text phone_numbers,
text e-mails) default character set utf8
电话号码的格式为"pn1:type1,pn2:type2,...,pnN:typeN"
并且电子邮件的格式为"e1,e2,...,eN"。
我以后可能会遇到这种设计的一些重要问题吗?
对于这些问题是否有更好的设计?为什么?
【问题讨论】:
-
这真的是mysql吗?如果是这样,它的 varchar() 不是文本
-
base64 编码的序列化数组通常用于这种情况。但是 IMO,最好的解决方案是有一个单独的表格,里面有多个电话或电子邮件。
-
因为您想拥有多个电话和电子邮件。这不是标准化设计。最好有两个单独的表格用于电话和电子邮件。您可以将外键的两列作为 client_id,另一列是电话或电子邮件值。
标签: mysql database-design data-modeling