北京理工大学-数据库-作业2-数据字典表设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京理工大学
数据库
作业2
主讲老师:赵小林
学生:李经
2012/11/27
Assignment 2:Database Design (1)
2.1 作业声明 (1)
2.2 作业内容 (1)
2.2.1 多级代码数据字典表设计 (1)
Assignment 2:Database Design
2.1 作业声明
本次作业全部由本人完成,若存在抄袭现象,本人愿意接受本次作业按照0分记录的处理2.2 作业内容
2.2.1多级代码数据字典表设计
需要解决的问题:
1、编码长度改变
2、编码方式改变
3、代码有效期改变
4、代码被覆盖或替换
5、要求保留原信息
多级表示例请参照课堂讲义。
2.2.1.1 解决方案
方案一:
设计各表如下:
学科门类表(xkml)
字段名字段含义字段类型字段长度NULL 备注xkmlmc 学科门类名称字符30
xkmldh 学科门类代号varchar 10 PK
kssxsj 开始生效时间日期
jzsxsj 截止生效时间日期√
一级学科表(yjxk)
二级学科表(ejxk)
三级学科表(sjxk)
设计思路&解决方法:
先建立以上4张表,其中外键的设置方式为:每一级学科的上级代号参照上级学科表的相应代号,例如:三级学科表中的二级学科代号参照二级学科表中的二级学科代号。
1、编码长度改变:各级学科代号为varchar,学科级数每增加一级,代号长度就增加10,基本可满足要求。
2、编码方式改变:例如增加一个四级学科,可以添加一张四级学科表:
四级学科表(sijxk)
3、代码有效期改变:每一张表都有开始生效时间以及截至生效时间的项,以此来确定该表中的数据是否还生效
4、代码被覆盖或替换:例如:如果想将工学08改为工学18,先在学科门类中新建工学18,需先将其次级表中的数据的代号由08XX改为18XX,若该次级表还有次级表,需先将该次级表中的数据中的该级学科代号08XXYY改为18XXYY,依此类推,在此过程中,还需将所有修改过的表中的数据的截至生效时间改为当前时间。可使用一个触发器用递归思想来实现此功能。
5、要求保留原信息:例如删除工学08这个学科门类,同4中的方法,从最低级的表中的数据开始将截止日期设置为当前时间,表示已经过期,但是保留了原有数据。
方案二:
采用树形结构:
学科门类
一级学科
二级学科
于是每一级的学科表便都可设计如下:
该方案除了能实现题目的要求外,还有以下优点:
每一学科级别的数据都采用同一种表结构,非常有利于统一管理。例如添加一门学科,不论是否是现有的级别的学科,只需要向表中添加数据,而不用新建一张表。查询时也更高效,因为不需要进行表间的连接。更新数据时很方便,例如如果想将工学08改为工学18,只需将所有上级学科id为08的数据的上级id改为18即可,大大降低了复杂度。学科升级或者降级也相对容易实现,仅需修改上级学科id。