2012-02-25 92 views
3

我想知道是否应为多对多关系创建多态连接表,还是应该创建多个连接表。确定多态连接表是否合适的最佳方法是什么

对于像评论这样的东西,我总是使用多态联接表。对于用户之间的关系,例如Twitter上的关注,我不使用多态联接表。这只是出于习惯。

有没有什么好的经验法则来决定?

+1

我用Google搜索“多态连接表”,并得到了很多对轨引用,但你已经标记这是“SQL”。你能否定义SQL意义上的“多态连接表”的含义?谢谢。 – onedaywhen 2012-02-28 12:50:55

回答

3

传统的数据库设计教导说,许多关系应该下放到两个1:与中间表之间的许多关系。

L:M = 1:M,M:1

通常情况下,除非数据的你正在处理量是巨大的,它可以是最好的标准化数据库架构 - 它有助于防止更新异常,笛卡尔加入,以及数据库设计师希望避免的所有令人讨厌的东西。

也就是说,Kimball数据仓库设计方法有时会应用星形或雪花模式,其中数据将被“剥落”成一种小型数据库。这是数据库架构师为OLAP系统(业务分析)设计的类型。我知道几乎所有我曾经使用的大型企业系统都运行在雪花或星型模式上。对于规模而言,我们正在谈论1GB plus - 因此它不一定非常庞大,但超出了Microsoft Access的规模。

快速链接: 数据库规范化:http://en.wikipedia.org/wiki/Database_normalization

数据库标准化(About.com):http://databases.about.com/od/specificproducts/a/normalization.htm

金博尔集团的数据仓库档案:http://www.kimballgroup.com/html/articles.html

金博尔档案有关于如何一些好的导游以及何时创建仓库。

编辑:为了确定何时需要使用表来连接数据库上的两个表,可以开发数据库模式。在开始编码之前,这是您设计布局的典型方式。开发数据库模式可能需要很多工作 - 在我的程序中,它是作为数据库设计课程的一部分教授的。我添加了几个链接供您查看,并且您可能希望在Stack Overflow中查找数据库设计,以获得更好的想法。特别值得注意的是微软的教程,这很不错。即使您不使用Microsoft SQL Server,本教程也会有所帮助。

数据库模式:http://en.wikipedia.org/wiki/Database_schema

微软数据库架构教程:http://msdn.microsoft.com/en-gb/express/bb403186.aspx

+0

超好用。您如何知道何时创建两个不同的连接表以及何时重用相同的连接表。 – Cyrus 2012-02-27 22:25:49

+1

“规范化你的关系 - 它有助于防止数据锁定” - 我想你可能误解了规范化的过程。提示:它适用于relvars(而不是'关系')以避免某些更新异常(“有助于防止数据锁定”听起来更像植入考虑)。 – onedaywhen 2012-02-28 12:56:31

+0

我添加了一些关于数据库模式设计的知识,它解释了如何/为什么/何时制作不同的连接表的基本原因。此外,为了响应onedaywhen的评论,更改了文本。通常,设计越简单越好 - 所以如果您真的可以重新使用不同的连接表,则它应该是有效的。也就是说,我从来没有真正有过这样的幸运。 – 2012-02-29 13:39:48

相关问题