jus*_*inl 8 database primary-key
为每个数据库表提供主键是一种好习惯吗?在我看来,如果没有明确需要主键,那么它只会在我的数据库中更加混乱.
Nei*_*ell 13
在OLTP数据库中,您几乎总是(在我的情况下总是)拥有某种主键.有时Guid,有时是自动编号/身份字段,有时由应用程序或客户设置.有时甚至是多个领域的组合.这是因为您通常希望唯一地标识表中的任何给定行.
此外,主键是查询优化器使用的约束,它可以提高查找和连接的性能.
您没有主键的唯一时间是在"报告"表中,可能在非规范化数据仓库中.
是的,在每个表上都有一个主键是一种很好的做法。
但是,并不是每个表都应该有一个自动编号 id 列。我觉得有必要详细说明这一点,因为出于某种原因,即使已经存在一个非常好的候选者,很多人也倾向于在所有表中添加一个额外的 ID。例如,表示的多对多表Users <-> Groups应使用{user_id, group_id}.
除了在门口停止重复之外,主键约束还携带优化器在生成执行计划时使用的信息。
这就是为什么我总是,或者至少除了极少数例外,在我创建的所有表上都有一个主键。事实上,我什至在报告表上创建主键,其中大多数列都是主键的一部分。因为在开发过程中,我会因为我做错了什么而得到至少一个独特的约束违规。有了大量数据并且没有任何约束,我就不会发现错误。
| 归档时间: |
|
| 查看次数: |
16331 次 |
| 最近记录: |