Tim*_*tle 2 php sql database database-design
是否有理由对主键使用单个递增字段而不是实际表示唯一记录的多个字段?
我正在开发一个现有的php应用程序,这些表似乎只有一个'id'键,而不是使用实际上对记录唯一的2个或更多字段(如用户,拍卖,出价).
我不是数据库专家,但这对我来说似乎很懒(或没有经验).是否有任何好处(表现或其他方面)?
更新:我不是指psudo唯一数据(ssn,电子邮件地址等),您可能希望确保数据真的是唯一的.我在谈论具有明显外键引用的表,但是不是将这些引用与表本身中的唯一字段一起使用,每个表只有一个递增ID.
不试图启动主观辩论,它对我来说没有意义.
这取决于"独特"的定义.是的,名称,电子邮件地址和SSN值应该是"唯一的".但是,发生了一些奇怪的事情.在很多情况下,拥有单独的ID值可以让生活更轻松......
更新
基于对问题的编辑,我并没有真正看到需要.听起来你的情况就像.一个"连接表",您只需创建一个表中的UniqueId与另一个表的UniqueId的关联.
我正在考虑的一个简单的例子是用户 - >角色关联.您必须将用户与角色相关联.UserId和RoleId.
您的数据库中有类似的结构
MappingId (Your Auto Number) (This is the PK)
UserId (From the user table)
RoleId (From the Role table)
Run Code Online (Sandbox Code Playgroud)
这个结构对我没有意义,我只有User和RoleId组成主键,因为这里不需要重复条目.
如果你有不同的东西可能会改变一些事情......
使用合成主键有几个优点:
数据库通常具有围绕使用单调递增键构建索引的特定优化.
话虽如此,偶尔进行一些非规范化并没有错.如果用例很清楚且表格相对较小,那就方便了.
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |