比如说数据库有a,b,c,d,e,f,g这几个表都有几个字段是相同的,例如描述字段,更新时间字段
修改人字段等等,这个时候是单独抽出一个表记录这些重复信息,用外键关联,还是就让他有多个重复字段算了
如果这些字段很少或者根本不修改,那么直接嵌入性能更高。
如果是数据一致性敏感的内容,就必须关联查询。
重复字段中的数据是否一致,如果不一致则保留原来的;若数据完全一致,则用外键关联就好。
按照我的经验,表的字段至少包含两部分信息:关键信息、属性。像表中自增字段、业务主键(候选键)都是关键信息,像描述字段,更新时间字段都属于属性,这些字段是这个表中不可缺少的,更有可能一个新的需求变更,这些属性就会升级为外键。一般来说就放在那里就可以了。
其实两种方法都可以,第一种可能逻辑比较清晰易懂,但是有时候可能会有点饶人,第二种好处就是简单,但是可能性能上有点不太好
个人支持第二种,虽然性能有损耗,但会避免很多不必要的问题。
我觉得还是就这样放着就好了,外键关联的话之后这些字段如果有变动那么修改也会比较多
外键一般只能是主键或唯一列,现在计算机存储都比较便宜了,空间不是问题,字段重复不算大问题,代码清晰好写也很重要,像描述信息最好不要通过外键去
引用,引入外键最大的问题是需要联接查询,在数据量大的时候应当减少表连接查询,所以不用单独抽出去
其实这个跟java中定义常量类差不多,自己定得失。
根据业务场景决定,个人不建议使用外键关联。首先我们要清楚这些字段的用途,如果就是记录对数据变更的属性(比如创建时间 创建人 修改时间 修改人等)字段时,建议直接作为这张表的一个属性,就我们的用途而言,大多数是查看数据的变更记录或是向其他系统推送变更数据,这样做会比较方便,若使用关联表,感觉有点多此一举了。