我正在创建一个数据库表,并且没有为其分配逻辑主键.所以,我正考虑在没有主键的情况下离开它,但我对此感到有点内疚.我是不是该?
每个表都应该有一个主键吗?
我正在实现类似于StackOverflow标签系统的标签系统.我在考虑存储标签并与问题相关时,该关系将直接与标签名称相关,或者最好创建字段tagID以将问题与标签"链接"?看起来直接链接到标签名称更容易,但它看起来不太好,主要是为什么在使用统计和/或标签分类(恕我直言)时很难管理这个.另一个问题是当一个管理员决定"修复"标签名称时.如果没有tagID与标签名称分开,那么我将更改表格的键...
你有什么想法?
感谢所有回复.我将删除此帖子,因为有另一篇帖子具有相同的主题.我想知道为什么搜索和建议没有显示给我的结果......
虽然我犯了这个罪,但在我看来,没有任何充分的理由让一张桌子没有身份字段的主键.
优点: - 无论您是否愿意,您现在可以唯一地识别表中您以前无法做到的每一行 - 如果没有主键,则无法执行sql复制
缺点: - 表格的每一行额外32位
例如,考虑需要在数据库的表中存储用户设置的情况.您有一个设置名称列和一个设置值列.不需要主键,但拥有整数标识列并将其用作主键似乎是您创建的任何表的最佳实践.
除了大小还有其他原因,每个表不应该只有一个整数标识字段吗?
我有一个名为'Date Restriction'的表,它基本上包含以下属性:
DayId : int
DateFrom : datetime
DateTo : datetime
EventId : int // this is a foreign key
Run Code Online (Sandbox Code Playgroud)
现在我访问它的方式是获取我想要的事件,然后查看相关的日期限制.
如果我不必单独引用日期限制,这是一种好的做法还是建议在此表中添加主键列?