奇怪的数据库结构

时间:2011-11-16 22:19:02

标签: sql-server database

我正在快速浏览一个用于Web应用程序的SQL Server数据库。 我注意到的第一件事是,200-300表中只有2个表带有主键,它们是复合键。没有其他索引。甚至“成员”表也没有索引键。在任何地方也没有使用外键 我应该担心吗? 为什么这样的结构可能需要有一个很好的解释?

2 个答案:

答案 0 :(得分:7)

Y E S! !你应该担心......

引用SQL大师:

  

如果它没有主键,那么它不是表

任何表都应该一个主键 - 只有一个主键可以确保任何给定的行都可以唯一标识(并进行操作 - 执行您需要做的任何操作)。

更糟糕的是,在SQL Server中,没有集群密钥的表(默认情况下是主键)被称为,而那些具有非常糟糕的性能特征。 索引女王 - 金佰利·特里普 - 在她的博客文章The Clustered Index Debate Continues!中很好地展示了关于堆的所有不好的事情 - 阅读并活下去: - )

并且没有任何外键与绝对鲁莽相关 - 任何故意避免使用外键的数据库开发人员都应该被取出并拍摄......这是 THE 主要甚至拥有关系数据库的原因 - 强制执行数据一致性和数据完整性的能力。

  

难以置信地摇头 - 再次......

答案 1 :(得分:1)

所有关于数据库架构师设计师......你的设置都是好的和坏的。

我将举例说明一个名为SuperOffice CRM应用程序,他们的SQL数据库有很多表,但没有表有PK或FK,也没有字段有auto-number,id由一个概念表给出,该表包含表实体id和最后创建的id。

enter image description here

它非常快!

所以我不会太担心,以为我会问为什么只是为了好奇点,我和SuperOffice人员一样:)