我试图设计一个尽可能可扩展的数据库,所以我用一个简单的场景来测试这个概念。
假设我有一张contact
桌子。联系人通常具有address
、phone number
、mobile number
和email address
。
一个表可以保存这些信息。但是,如果联系人有多个这些详细信息中的任何一个怎么办?我的解决方案是像这样使用联结表:
contact -* contact_address *- address
contact -* contact_phone *- phone
contact -* contact_mobile *- phone
contact -* contact_emailaddress *- emailaddress
这将允许我获取有关联系人的所有信息。此外,address
和phone
表emailaddress
成为数据库,服务于从分析到简单重用数据的目的。
但是,我还不知道这对性能有什么影响,以及这是否是一种好的做法,主要是因为该contact
表只会容纳 anid
而没有其他内容。
需要注意的是,这使用了学说2,使用symfony2,所以编写长查询不会成为问题,我主要关心的是上面的那些,这已经从一张表跳到了八张表,而联系人只是我需要使用类似模式的一个区域这个。