问题是存在如此巨大的关系,在规范化之后它们就像20个主键(复合键),它们实际上是外键。
必须将这些声明为唯一标识关系的主键。这是对的吗?
答案 0 :(得分:4)
如果您说“外键确实是外键但需要声明为主键”,那么您实际上表明您缺乏进行数据库设计的能力,技能和权限。 / p>
外键和“主键”是截然不同的概念,任何在数据库设计领域都具有远程知识的人都不可能彼此混淆。
也许你可以再试一次,解释一下你的意思。
答案 1 :(得分:2)
首先,不要使用复合键。它们是一种糟糕的技术。它们很慢,在变化时是一个噩梦。
如果您需要两个或多个字段的唯一性,则不需要主键,您需要一个唯一索引。使表的PK成为代理键(最好是int)。
如果您尝试创建具有一对一关系的表,则可以使用父表的PK作为Child表的PK并在表之间设置PK_FK关系;但是,需要20个单独的一对一表是不寻常的。
答案 2 :(得分:0)
听起来你的数据库很庞大并且有很多关系;为简化主键情况,您可以做的一件事是将单个列定义为每个表的主键,并使用自动递增的int或guid数据类型。这样,您可以确保唯一性,并且您的外键至少独立于您的主键。
答案 3 :(得分:0)
我无法使用与一个表有关系的20个表来可视化设计。
如果没有查看您的数据设计,我无法分辨,但听起来您设计的是分层数据库,而不是关系数据库。