Sql 什么';这是确定多态联接表是否合适的最佳方法

Sql 什么';这是确定多态联接表是否合适的最佳方法,sql,join,polymorphism,Sql,Join,Polymorphism,我试图弄清楚是应该为多对多关系创建多态联接表,还是应该创建多个联接表 对于注释之类的东西,我总是使用多态联接表。对于用户之间的关系,如Twitter上的以下内容,我不使用多态联接表。这只是出于习惯 有什么好的经验法则来决定吗?传统的数据库设计告诉我们,多:多关系应该转化为两个1:多关系,中间有一个表 M:M=1:M,M:1 通常,除非处理的数据量很大,否则最好规范化数据库模式——这有助于防止更新异常、笛卡尔连接以及美国数据库设计师希望避免的所有讨厌的事情 也就是说,Kimball数据仓库设计方法

我试图弄清楚是应该为多对多关系创建多态联接表,还是应该创建多个联接表

对于注释之类的东西,我总是使用多态联接表。对于用户之间的关系,如Twitter上的以下内容,我不使用多态联接表。这只是出于习惯


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

传统的数据库设计告诉我们,多:多关系应该转化为两个1:多关系,中间有一个表

M:M=1:M,M:1

通常,除非处理的数据量很大,否则最好规范化数据库模式——这有助于防止更新异常、笛卡尔连接以及美国数据库设计师希望避免的所有讨厌的事情

也就是说,Kimball数据仓库设计方法有时会应用星形或雪花模式,其中数据将被“剥落”到一种小型数据库中。这是数据库架构师为OLAP系统(业务分析)设计的类型。我知道,我使用过的几乎所有大型商业系统都运行在雪花模式或星型模式上。就规模而言,我们谈论的是1GB以上的容量——因此它不必太大,但要超过Microsoft Access的大小

快速链接: 数据库规范化:

数据库规范化(About.com):

金宝集团的数据仓库档案:

关于如何以及何时创建仓库,Kimball归档有一些很好的指南

编辑:为了确定何时需要使用表连接数据库上的两个表,可以开发数据库模式。这是开始编码之前布局设计的典型方式。开发数据库模式可能需要很多工作——在我的程序中,它是作为数据库设计课程的一部分教授的。我已经添加了一些链接供您查看,您可能希望在这里查看有关堆栈溢出的数据库设计,以获得更好的想法。特别值得一提的是微软教程,它非常好。即使您没有使用Microsoft SQL Server,本教程也会有所帮助

数据库架构:


Microsoft数据库架构教程:

非常有用。您如何知道何时创建两个不同的连接表以及何时重用同一个连接表。“规范化您的关系-它有助于防止数据锁定”-我认为您可能误解了规范化的过程。提示:它应用于relvars(而不是“关系”)以避免某些更新异常(“帮助防止数据锁定”听起来更像是植入考虑)。我添加了一些关于数据库模式设计的内容,这解释了如何/为什么/何时创建不同的连接表的基本原因。此外,为了回应onedaywhen的评论,更改了文本。通常,设计越简单越好——因此,如果您可以实际重用不同的联接表,它应该是有效的。我在谷歌上搜索了“多态联接表”,得到了很多对rails的引用,但你把它标记为“sql”。您能定义一下SQL上下文中“多态联接表”的含义吗。谢谢