地址簿数据库设计:denormalize?

Dic*_*ick 6 sql database-design django-models denormalization

我正在设计一个联系人管理器/地址簿式应用程序,但不能满足于数据库设计.

在我目前的设置中,我有一个联系人,其中包含地址,电话号码,电子邮件和组织.所有联系人属性当前都是单独的表,其中fk到Contact表.不用说,联系人可以拥有任何数量的这些属性.

现在,如果我想在应用程序中阅读联系人,我发现自己将所有这些表连接在一起.由于没有对相关表执行过滤,反向查找,排序等,将相关字段作为json编码列表存储在Contact表的直接属性上不是更好/更简单的解决方案吗?

例如,不是将fk连接到带有3个条目的phonenumber表,只需编码所有的phonenumber并将它们存储到Contact表的字段中?

任何见解真的很感激!(fyi我正在使用Django虽然这并不重要)

Don*_*nie 6

你能保证你的应用程序永远不会增长到需要这些其他功能吗?你真的想把自己画到角落里,这样你以后就不能轻易支持了吗?

通常,非规范化仅出于性能原因而发生.然后,仍然保留标准化数据的副本用于实时工作,并且非规范化数据用于具有静态快照的离线处理.

习惯写连接.这就是SQL的工作方式.必须这样做并不意味着出了问题.