[英]Storing multiple attributes in MySQL
我有一个数据库(用于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"
。
我以后会遇到这种设计的一些重要问题吗?
这些问题是否有更好的设计,为什么?
您正在考虑的结构没有被规范化,并且会给您带来问题……当您搜索,显示数据或在许多其他情况下。
最好有3个表:
client (id, ...)
phonenumber (id, client_id, phone_type, phone_number)
email (id, client_id, email)
...或只有2张桌子:
client (id, ...)
contact (id, client_id, contact_type, contact_text)
我更喜欢后者,因为它提供了更大的灵活性(它可以处理社交网络帐户,网页和许多其他与人联系的方式)。 它比3表结构更容易搜索,并且在您要管理新的联系人类型时不需要进行更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.