数据库建表之外键关联

0前言

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

1. 建表

1.1 创建基础表

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

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

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

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

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

1.3 创建业务表

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

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

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

2. E-R图示例

在这里插入图片描述

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

3. 结束语

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值