我正在试图弄清楚是否应该为多对多关系创建多态连接表,或者我是否应该创建多个连接表。
对于评论等内容,我总是使用多态连接表。对于用户之间的关系,如在Twitter上关注,我不使用多态连接表。这只是出于习惯。
决定是否有任何好的经验法则?
答案 0 :(得分:3)
传统的数据库设计教导许多:许多关系应该转移到两个1:许多关系与中间的表。
M:M = 1:M,M:1
通常,除非您正在处理的数据量巨大,否则最好规范化您的数据库模式 - 它有助于防止更新异常,笛卡尔联接以及数据库设计人员希望避免的所有令人讨厌的事情。 / p>
也就是说,Kimball数据仓库设计方法有时会应用星形或雪花模式,其中数据将被“剥离”成一种迷你数据库。这是数据库架构师为OLAP系统(业务分析)设计的类型。我知道我使用的几乎所有大型业务系统都运行在雪花或星型模式上。为了扩展,我们正在谈论1GB以上 - 因此它不一定非常庞大,但超出Microsoft Access大小。
快速链接: 数据库规范化:http://en.wikipedia.org/wiki/Database_normalization
数据库规范化(About.com):http://databases.about.com/od/specificproducts/a/normalization.htm
Kimball Group的数据仓库存档:http://www.kimballgroup.com/html/articles.html
Kimball档案馆有关于如何以及何时创建仓库的一些很好的指南。
编辑:为了确定何时需要使用表来连接数据库上的两个表,可以开发数据库模式。这是在开始编码之前布局设计的典型方法。开发数据库模式可能需要做很多工作 - 在我的程序中,它是作为数据库设计课程的一部分进行教授的。我添加了一些链接供您查看,您可能希望在Stack Overflow上查找数据库设计以获得更好的想法。特别值得注意的是Microsoft教程,这非常好。即使您没有使用Microsoft SQL Server,本教程也会有所帮助。
数据库架构:http://en.wikipedia.org/wiki/Database_schema
Microsoft数据库架构教程:http://msdn.microsoft.com/en-gb/express/bb403186.aspx