数据库建表之外键关联

0前言

  摘自某一段记事:
数据库建表之外键关联_第1张图片
  在实际的开发中,必然遇到“编辑操作”,而编辑操作,看似简单,实则其影响面甚广。本着设计的“贯穿性”和逻辑一致性,本文将按照,创建基础表的字段建议,创建关联表的字段建议,进行阐述。

1. 建表

1.1 创建基础表

  基础表除了常规的字段以外,需要额外添加以下字段。

序号 数据库字段 注释 备注
1 creator_id 创建人ID
2 create_date 创建日期
3 create_depment 创建部门 即创建人所属的部门
4 create_be_depment 归属部门 即数据的部门
5 edit_id 编辑人ID
6 edit_date 编辑日期
7 edit_depment 编辑部门 即编辑人所属的部门
8 edit_be_depment 归属部门 即数据的部门
9 order_no 排序

1.2 创建基础表的编辑记录表

  编辑记录表是指在保留原表的信息之上,额外添加字段,以保留编辑的各个字段的修改记录。

序号 数据库字段 注释 备注
10 old_id 旧的id 即基础表的id
11 versions 版本号

1.3 创建业务表

  业务表是指,和基础数据有关联的业务表。此处以(1:m)一对多举例。基础表是学校信息表,业务表是学生表。一个学校有多个学生。
学生业务表:

序号 数据库字段 注释 备注
1 id 学生id
2 name 学生姓名
此处是更多的属性
n school_id 学校id 学校基础表的id,或者学校基础表的编辑记录表的old_id
n+1 school_versions 学校记录表的版本号 学校基础表的编辑记录表的版本号
n+2 school_status_flag 更新标记 当学校基础表更新后, 是否需要更新school_id_versions的版本号
n+3 school_status_expiring_date 更新标记有效期 更新标记的有效期。根据实际情况设置。默认是长期

  此处,仅列举了一个外键的情况,如果有其他的外键,还需要根据外键的数量,来增加(外键_id,外键_versions,外键_status_flag,外键_status_expiring_date)属性字段。

2. E-R图示例

数据库建表之外键关联_第2张图片

  回到最开始的问题,学生从入学之日(2020-09-01)起,school_status_flag的值是1,
school_status_expiring_date的值是(2024-07-01)。在学生未毕业之前,每次编辑学校基础表,通过切面编程的方式,编辑学生基础表的school_versions的值;当学生毕业后,school_status_flag=0,school_versions的值也将定格,不再随着学校基础信息的编辑而发生变动。

3. 结束语

  此处,仅是阐述了一种数据库设计的一种办法。实际编码过程中遇到的问题可能更加复杂,需要根据实际情况及时进行调整。

你可能感兴趣的:(编程思想,数据库,编程思想)