关于数据库表设计的问题

芒果味丶 发布于 2018/07/29 13:44
阅读 265
收藏 2

如果我数据库有这两张表(员工信息表和成长情况表)

1.员工信息表的主键是选职工工号,还是员工信息ID?,外键是职工工号,还是成长情况ID?

2.另一张表主键是选择成长情况ID还是职工工号?

3.如果两张表主键职工工号这种情况算不算表的垂直分割?

ps:刚学习数据库,我想知道为什么这么选主键这么选外键而不是答案。

加载中
0
魔力猫
魔力猫

如果你用有意义的字段,那么就要考虑日后这个字段如果变化了会怎么样。比如字段长度扩展、字段定义变化。而这种变化很可能引发超多的麻烦。

比如你这个表字段被几百个表引用,那么你就要确保几百个表,因为字段变化都要同时修改。重建索引、修改无数表的定义、删除重建所有的外键。而且要保证这些都要在停止服务的情况下,一次完成。这意味着需要一个超长的窗口时间和严重的业务风险。

建立一个无业务意义的字段,就没有这些问题。除非你这个表不要主键了,不然你完全不用担心主键相关的表定义在某一天会被修改。

芒果味丶
芒果味丶
谢谢了,我明白了,前辈。
0
芒果味丶
芒果味丶

求大佬。。

 

0
魔力猫
魔力猫

一般主外键不要使用业务字段,而是选择一个无业务意义的主键。外键关联,必然是关联表主键。而且一定要添加外键索引。

魔力猫
魔力猫
回复 @芒果味丶 : 因为业务字段有实际意义,也就存在规则变更问题。
芒果味丶
芒果味丶
请问为什么主外键最好不使用业务字段,我的职工工号也是唯一标识。
返回顶部
顶部