Assignment 2: Database Design
多级代码数据字典表设计
1. 要求:
- 编码长度改变:如一级学科变成3位
- 编码方式改变:增加4级学科、将门类与一级学科合并
- 代码有效期改变:如某个二级学科从2010年10月1日开始不在使用
- 代码被覆盖或替换
- 要求保留原信息
2. 设计表如下:
- 学科门类表
字段名 |
数据类型 |
允许空值 |
主/外键 |
描述 |
id |
varchar(20) |
not null |
PK |
学科门类代号 |
name |
varchar(50) |
not null |
|
学科门类名称 |
startDate |
date |
not null |
|
该学科生效时间 |
endDate |
date |
|
|
该学科失效时间 |
- 各级学科表
字段名 |
数据类型 |
允许空值 |
主/外键 |
描述 |
id |
varchar(20) |
not null |
PK |
学科门类代号 |
name |
varchar(50) |
not null |
|
学科门类名称 |
level |
int |
not null |
|
学科层次:1、2、3 |
fatherID |
varchar(20) |
not null |
FK |
上级学科表 |
startDate |
date |
not null |
|
该学科生效时间 |
endDate |
date |
|
|
该学科失效时间 |
3. 图示:
学科字典.png
4. 分析
- 编码长度改变:如一级学科变成3位,各级学科的id均为varchar(20),满足长度改变要求,另外在改变该学科的编码长度时,应该递归的改变所有子学科的编码。即如08变为108,那么0811、0812、0813均要变为10811、10812、10813
- 编码方式改变:如增加4级学科、将门类与一级学科合并,对于增加学科只须增加对应层次的学科表即可,即可创建一个level为4的学科。
- 代码有效期改变:如某个二级学科从2010年10月1日开始不在使用,只须在endDate添加结束日期即可。
- 代码被覆盖或替换:类似与1中长度改变,递归改变学科及其子学科的id。
- 要求保留原信息:对于删除部分学科,只须添加结束日期即表示已经过期不再访问,但原始信息仍保留在系统中。
上一篇下一篇