北京理工大学-数据库-作业2-数据字典表设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档