如果我数据库有这两张表(员工信息表和成长情况表)
1.员工信息表的主键是选职工工号,还是员工信息ID?,外键是职工工号,还是成长情况ID?
2.另一张表主键是选择成长情况ID还是职工工号?
3.如果两张表主键职工工号这种情况算不算表的垂直分割?
ps:刚学习数据库,我想知道为什么这么选主键这么选外键而不是答案。
如果我数据库有这两张表(员工信息表和成长情况表)
1.员工信息表的主键是选职工工号,还是员工信息ID?,外键是职工工号,还是成长情况ID?
2.另一张表主键是选择成长情况ID还是职工工号?
3.如果两张表主键职工工号这种情况算不算表的垂直分割?
ps:刚学习数据库,我想知道为什么这么选主键这么选外键而不是答案。
如果你用有意义的字段,那么就要考虑日后这个字段如果变化了会怎么样。比如字段长度扩展、字段定义变化。而这种变化很可能引发超多的麻烦。
比如你这个表字段被几百个表引用,那么你就要确保几百个表,因为字段变化都要同时修改。重建索引、修改无数表的定义、删除重建所有的外键。而且要保证这些都要在停止服务的情况下,一次完成。这意味着需要一个超长的窗口时间和严重的业务风险。
建立一个无业务意义的字段,就没有这些问题。除非你这个表不要主键了,不然你完全不用担心主键相关的表定义在某一天会被修改。
求大佬。。
一般主外键不要使用业务字段,而是选择一个无业务意义的主键。外键关联,必然是关联表主键。而且一定要添加外键索引。