繁体   English   中英

在MySQL中存储多个属性

[英]Storing multiple attributes in MySQL

我有一个数据库(用于PHP Web应用程序),其中的表client具有各种属性。 两个这样的属性是phone_numbersemails

一个客户可以拥有零个或多个电话号码和零个或多个电子邮件。

我想将客户表存储为:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM