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

合集下载

数据字典模板

数据字典模板

数据字典模板一、引言数据字典是一个组织或者系统中所使用的数据的结构和定义的集合。

它提供了对数据元素、数据类型、数据长度、数据格式、数据来源以及数据关系等信息的详细描述。

本文档旨在定义数据字典的标准格式,以便统一组织和管理数据字典的内容。

二、1. 数据字典标识符数据字典标识符用于惟一标识一个数据字典。

它由字母、数字和下划线组成,长度不超过20个字符。

2. 数据字典版本数据字典版本用于标识数据字典的版本号。

它由数字和小数点组成,例如 1.0、2.1等。

3. 数据字典作者数据字典作者是指创建和维护数据字典的人员的姓名或者用户名。

4. 数据字典创建日期数据字典创建日期是指创建数据字典的日期,格式为YYYY-MM-DD。

5. 数据字典更新日期数据字典更新日期是指最近一次更新数据字典的日期,格式为YYYY-MM-DD。

6. 数据字典描述数据字典描述用于描述数据字典的目的和内容。

7. 数据字典结构数据字典结构包括数据元素、数据类型、数据长度、数据格式、数据来源和数据关系等。

- 数据元素:数据元素是指一个数据项或者数据对象的名称,例如"姓名"、"年龄"等。

- 数据类型:数据类型是指数据元素的类型,例如整数、字符、日期等。

- 数据长度:数据长度是指数据元素的长度,例如整数的长度为4字节。

- 数据格式:数据格式是指数据元素的显示格式,例如日期的格式为YYYY-MM-DD。

- 数据来源:数据来源是指数据元素的来源,例如数据库表、文件等。

- 数据关系:数据关系是指数据元素之间的关系,例如主键-外键关系。

8. 数据字典示例以下是一个示例数据字典的部份内容:数据字典标识符:EMPLOYEE数据字典版本:1.0数据字典作者:John Smith数据字典创建日期:2022-01-01数据字典更新日期:2022-02-15数据字典描述:该数据字典用于描述员工信息。

数据元素:员工编号数据长度:4字节数据格式:无数据来源:数据库表"EMPLOYEE"数据关系:主键数据元素:员工姓名数据类型:字符数据长度:50字节数据格式:无数据来源:数据库表"EMPLOYEE"数据关系:无数据元素:员工年龄数据类型:整数数据长度:4字节数据格式:无数据来源:数据库表"EMPLOYEE"数据关系:无数据元素:员工性别数据类型:字符数据格式:无数据来源:数据库表"EMPLOYEE"数据关系:无数据元素:入职日期数据类型:日期数据长度:8字节数据格式:YYYY-MM-DD数据来源:数据库表"EMPLOYEE"数据关系:无数据元素:部门编号数据类型:整数数据长度:4字节数据格式:无数据来源:数据库表"EMPLOYEE"数据关系:外键,关联数据库表"DEPARTMENT"的主键"DEPT_ID"三、总结本文档定义了数据字典的标准格式,包括数据字典标识符、数据字典版本、数据字典作者、数据字典创建日期、数据字典更新日期、数据字典描述、数据字典结构等内容。

数据库字典表设计

数据库字典表设计

数据库字典表设计在稍⼤⼀些的项⽬中,我们总是需要管理各种各样的类型类型数据(如商品类型、游戏类型。

)。

对于这些类型的管理类似,如果为每⼀种类型都建⽴⼀张表去维护(⽽在项⽬中,正常出现50种类型),那⼯作量是可想⽽之⼤,并且我们不得不去了解每⼀个类型表的名字,以去关联它。

因此,我们需要⼀种数据模型以完成对多种多样类型管理的需求。

字典表dictionary字段名类型是否可空中⽂名描述dict_name varchar(50) no 字典名字dict_value int no 字典值固定的,不变的字典数据表dictionarydata字段名类型是否可空中⽂名描述id int no ⾃增长dict_value int no dictionary中的值dictdata_name varchar(50) no 字典名字dictdata_value varchar(5) no 字典值固定的,不变的isfixed int no 是否固定 0默认为不固定,1固定;固定就不能再去修改了。

说明:dictionary中的dict_value和dictionarydata中的dictdata_value都是添加完不可变的,其它表的类型字段存取的是dictionarydata中的dictdata_value,在查询关联时,需要添加dict_value的约束(注:有⼈习惯存取dictionarydata中的ID,这样在查询时可以少加dict_value的约束。

但是在系统的升级,或错误删除dictionarydata表时,后果将是空难性的,并且存取dictdata_value主表的类型字段简单明了,⽴即可以知道它是什么类型,所以建议存取dictdata_value)。

表扩展:对于现有的设计,如果需要类型数据需要简单的树形结构,可以在dictionarydata可添加parent_id;如果需逻辑删除数据时,可以添加iscancle;最后,在程序中最好再建⽴两个类dictionary、dictionarydata⾥⾯定义整型变量对应于dict_value和dictdata_value值,这样在程序中就可以通过代码来引⽤类型数据。

数据库设计(数据字典)

数据库设计(数据字典)
sContactInformation
String
学生联系方式
snID
int
学生生源地ID
sAddress
String
学生家庭住址
sPostalcode
String
6个数字
学生邮政编码
sE-mail
String
学生邮箱
eduBackgroundID
int
学生学历ID
sPhoto
String
学生照片
stateID
在校学生管理系统
表名:学生信息表(Studentform)
数据名
类型
范围
约束
备注
sID
int
学生ID
sName
String
学生姓名
stuNo
int
10-15
主键
学生学号
sSex
String
“男”或“女”
学生性别
sAge
int
当前日期-出生日期=学生年龄
学生年龄
sNation
String
学生民族
sExamNo
String
系院名称
collegeNumber
String
系院编号
collegeState
String
系院状态
collegePeople
String
系院负责人
表名:专业表(profession)
数据名
类型
范围
约束
备注
professionID
int
主键
专业ID
professionName
String
专业名称
applyCause

北理工《实用数据库》期末考试精选题汇总【含答案解析】81

北理工《实用数据库》期末考试精选题汇总【含答案解析】81

《实用数据库》课程复习提纲第1章数据库系统概述本章要点掌握数据库最常用的术语和基本概念明确常用数据模型组成要素明确最常用的数据模型的区别及优缺点掌握数据库系统的三级模式结构了解数据库系统的组成具体内容1.在数据库方式下,信息处理中占据中心位置的是数据。

2.数据库在磁盘上的基本组织形式是文件。

3.DBS是指数据库系统。

4.数据库系统中,最早出现的数据模型是层次模型。

5.数据库技术的主要目的是有效地管理和存取大量的数据资源。

6.与“文件”结构相比,“数据库”结构有些什么不同?•数据的结构化。

文件由记录组成,但各文件之间缺乏联系。

数据库中数据在磁盘中仍以文件形式组织,但这些文件之间有着广泛的联系。

数据库的逻辑结构用数据模型来描述,整体结构化。

数据模型不仅描述数据本身的特点,还要描述数据之间的联系。

•数据独立性。

文件只有设备独立性,而数据库还具有逻辑独立性和物理独立性。

•访问数据的单位。

访问文件中的数据,以记录为单位。

访问数据库中的数据,以数据项(字段)为单位,增加了系统的灵活性。

第2章数据库设计本章要点•了解数据库设计的任务与步骤•了解需求分析阶段的任务•掌握实体-联系模型•掌握E-R图的概念及设计方法•掌握关系模型的概念•了解数据库的实施、使用与维护具体内容1.实体集的联系类型有如下3种类型:(1)一对一联系设有实体集A与实体集B,如果A中的一个实体,至多与B中的一个实体关联,反过来,B中的一个实体,至多与A中的一个实体关联,称A与B是“一对一”联系类型,记作(1:1)。

(2)一对多联系设有实体集A与实体集B,如果A中的一个实体,与B中可以有多个实体关联,反过来,B中的一个实体,至多与A中的一个实体关联,称A与B是“一对多”联系类型,记作(1∶n)。

(3)多对多联系设有实体集A与实体集B,如果A中的一个实体,与B中可以有多个实体关联,反过来,B中的一个实体,与A中可以有多个实体关联,称A与B是多对多联系类型,记作(m∶n)。

北京理工大学-数据库-实验_2-数据更新、删除与权限管理

北京理工大学-数据库-实验_2-数据更新、删除与权限管理

(封皮页)北京理工大学数据库实验2主讲老师:赵晓林学生:李经2012/11/21(目录页)实验 2:数据更新、删除与权限管理 02.1 作业声明 02.2 实验目的 02.2.1 体会主键、外键约束 02.2.2 对“学籍管理系统”表格进行数据查询 02.3 实验过程 02.3.1 练习更新、删除主表数据(针对主键属性且子表中可能有参照外键数据) . 02.3.2 练习更新、删除主表数据(针对非主键属性) 02.3.3 练习先删除子表数据,再删除主表数据 (1)2.3.4 使用子查询方式更新、删除数据 (1)2.3.5 权限管理 (2)2.4 实验结论 (5)2.5 实验体会 (5)实验 2:数据更新、删除与权限管理2.1 作业声明本次作业全部由本人完成,若存在抄袭或雷同现象,本人愿意接受老师相应的处理2.2 实验目的2.2.1体会主键、外键约束2.2.2对“学籍管理系统”表格进行数据查询•确定要更新和删除的数据2.3 实验过程2.3.1练习更新、删除主表数据(针对主键属性且子表中可能有参照外键数据)2.3.1.1 sql代码:update xb set xdh='06' --系表为主表where xmc='中文'2.3.1.2 结果:系统显示:消息547,级别16,状态0,第2 行UPDATE 语句与REFERENCE 约束"FK__xs__xdh__54968AE5"冲突。

该冲突发生于数据库"master",表"dbo.xs", column 'xdh'。

语句已终止。

由于有外键依赖,所以无法更新。

选择删除相关联的外键:ALTER TABLE js drop CONSTRAINT FK__js__xdh__09FE775DALTER TABLE xs drop CONSTRAINT FK__xs__xdh__0539C240再次执行更新操作,更新成功2.3.2练习更新、删除主表数据(针对非主键属性)2.3.2.1 sql代码:首先先恢复依赖于系表xdh项的两个外键(2.3.1.1中删除的那两个外键)update xb set xmc='德语' --更新where xdh='05'delete from xb where xdh='05' --删除数据更新成功:因系名称不存在主外键关系,因此可直接修改。

2022年北京理工大学计算机科学与技术专业《数据库原理》科目期末试卷B(有答案)

2022年北京理工大学计算机科学与技术专业《数据库原理》科目期末试卷B(有答案)

2022年北京理工大学计算机科学与技术专业《数据库原理》科目期末试卷B(有答案)一、填空题1、SQL语言的数据定义功能包括______、______、______和______。

2、关系系统的查询优化既是关系数据库管理系统实现的关键技术,又是关系系统的优点。

因为,用户只要提出______,不必指出 ______。

3、在SQL Server 2000中,数据页的大小是8KB。

某数据库表有1000行数据,每行需要5000字节空间,则此数据库表需要占用的数据页数为_____页。

4、安全性控制的一般方法有____________、____________、____________、和____________视图的保护五级安全措施。

5、从外部视图到子模式的数据结构的转换是由______________实现;模式与子模式之间的映象是由______________实现;存储模式与数据物理组织之间的映象是由______________实现。

6、在数据库系统封锁协议中,一级协议:“事务在修改数据A前必须先对其加X锁,直到事务结束才释放X锁”,该协议可以防止______;二级协议是在一级协议的基础上加上“事务T在读数据R之前必须先对其加S锁,读完后即可释放S锁”,该协议可以防止______;三级协议是在一级协议的基础上加上“事务T在读数据R之前必须先对其加S锁,直到事务结束后才释放S锁”,该协议可以防止______。

7、如图所示的关系R的候选码为;R中的函数依赖有;R属于范式。

一个关系R8、在SELECT命令中进行查询,若希望查询的结果不出现重复元组,应在SEL ECT语句中使用______保留字。

9、数据仓库是______、______、______、______的数据集合,支持管理的决策过程。

10、设在SQL Server 2000环境下,对“销售数据库”进行的备份操作序列如下图所示。

①出现故障后,为尽可能减少数据丢失,需要利用备份数据进行恢复。

数据库数据字典

数据库数据字典

数据库数据字典数据库数据字典是一个记录数据库中各个表、字段、约束等信息的文档,它提供了对数据库结构和数据的详细描述,方便开辟人员、管理员和其他相关人员了解和使用数据库。

本文将按照任务要求,详细介绍数据库数据字典的标准格式和内容。

一、数据字典的标准格式数据库数据字典通常包含以下几个部份的信息:1. 数据库基本信息:包括数据库名称、版本、创建日期等基本属性。

2. 表信息:列出所有表的详细信息,包括表名、表描述、创建日期等。

3. 字段信息:列出每一个表中的字段信息,包括字段名、数据类型、长度、是否为空、默认值等。

4. 约束信息:列出每一个表中的约束信息,包括主键、外键、惟一约束、检查约束等。

5. 索引信息:列出每一个表中的索引信息,包括索引名、索引类型、索引字段等。

6. 视图信息:列出数据库中的视图信息,包括视图名、视图定义等。

7. 存储过程和函数信息:列出数据库中的存储过程和函数信息,包括名称、参数、返回值等。

8. 触发器信息:列出数据库中的触发器信息,包括触发器名称、触发事件、触发条件等。

9. 数据字典更新日志:记录数据字典的更新历史,包括更新日期、更新内容等。

二、数据字典的内容编写以下是一个示例数据库数据字典的内容,仅供参考:1. 数据库基本信息:- 数据库名称:CompanyDB- 数据库版本:MySQL 8.0- 创建日期:2022年1月1日2. 表信息:- 表名:Employee- 表描述:存储公司员工信息的表- 创建日期:2022年1月2日3. 字段信息:- 字段名:EmployeeID数据类型:INT长度:10是否为空:否默认值:无描述:员工ID- 字段名:FirstName数据类型:VARCHAR长度:50是否为空:否默认值:无描述:员工名字的姓氏- 字段名:LastName数据类型:VARCHAR长度:50是否为空:否默认值:无描述:员工名字的名字- 字段名:Email数据类型:VARCHAR长度:100是否为空:是默认值:NULL描述:员工的电子邮件地址 - 字段名:Salary数据类型:DECIMAL长度:10, 2是否为空:是默认值:NULL描述:员工的薪水4. 约束信息:- 主键:EmployeeID- 惟一约束:Email5. 索引信息:- 索引名:idx_EmployeeID索引类型:B-tree索引字段:EmployeeID- 索引名:idx_LastName索引类型:B-tree索引字段:LastName6. 视图信息:- 视图名:EmployeeView视图定义:SELECT EmployeeID, FirstName, LastName FROM Employee 7. 存储过程和函数信息:- 存储过程名:GetEmployeeByID参数:@EmployeeID INT返回值:无描述:根据员工ID获取员工信息的存储过程- 函数名:CalculateSalary参数:@EmployeeID INT返回值:DECIMAL描述:根据员工ID计算薪水的函数8. 触发器信息:- 触发器名:UpdateEmployee触发事件:BEFORE UPDATE触发条件:当更新Employee表中的Salary字段时9. 数据字典更新日志:- 更新日期:2022年1月3日更新内容:新增了存储过程GetEmployeeByID以上是一个简单的数据库数据字典的示例,实际的数据字典应根据具体的数据库和需求进行编写。

2022年北京理工大学软件工程专业《数据库原理》科目期末试卷A(有答案)

2022年北京理工大学软件工程专业《数据库原理》科目期末试卷A(有答案)

2022年北京理工大学软件工程专业《数据库原理》科目期末试卷A(有答案)一、填空题1、关系数据库中基于数学的两类运算是______________和______________。

2、数据的安全性是指____________。

3、在SQL Server 2000中,某数据库用户User在此数据库中具有对T 表数据的查询和更改权限。

现要收回User对T表的数据更改权,下述是实现该功能的语句,请补全语句。

_____UPDATE ON T FROM User;4、事务故障、系统故障的恢复是由______完成的,介质故障是由______完成的。

5、关系规范化的目的是______。

6、在VB 6.0中,已经用Adobel连接到数据库,并已绑定到数据库中的某个关系表,现要通过此控件向表中插入数据,需要用到Adobel.Recordset的_____方法和Update方法,使用Adobel.Recordset的_____方法可以使当前行指针在结果集中向前移动一行。

7、以子模式为框架的数据库是______________;以模式为框架的数据库是______________;以物理模式为框架的数据库是______________。

8、有两种基本类型的锁,它们是______和______。

9、在SELECT命令中,______子句用于选择满足给定条件的元组,使用______子句可按指定列的值分组,同时使用______子句可提取满足条件的组。

10、数据模型是由______________、______________和______________三部分组成。

二、判断题11、文件系统的缺点是数据不能长期存储。

()12、在SELECT语句中,需要对分组情况满足的条件进行判断时,应使用WHERE子句。

()13、二级封锁协议能解决不可重复读问题,不能解决读"脏"数据。

()14、关系中任何一列的属性取值是不可再分的数据项,可取自不同域中的数据。

数据库应用技术大作业模板

数据库应用技术大作业模板

数据库大作业课题名称专业班级学号姓名教师成绩11月日1. 需求分析( 加入需求分析的概念)描述题目内容1.1 数据流图( DFD)什么是数据流图。

画数据流图图1-1 XXXX图1.2 数据字典( DD)什么是数据字典写数据字典数据文件: 订单明细表文件组成: 订单序号Id, 订单编号, 菜名, 价格, 数量, 下单时间数据项: 订单序号Id数据类型: 整型数据长度: 4数据项: 订单编号数据类型: 可变字符类型数据长度: 50数据组成: A+日期时间数据项: 菜名数据类型: 可变字符类型数据长度: 50什么概念结构设计E-R图( 在Powerdesigner中创立概念模型, 粘贴图)图2-1 XXXX图关系模式( ( 在Powerdesigner中由概念模型转化为物理数据模型, 粘图) )图3-1 XXXX图4. 建表SQL语句由物理数据模型生成SQL Server 数据库的建表语句。

/*==============================================================*//* DBMS name: Microsoft SQL Server *//* Created on: -9-16 14:39:14 *//*==============================================================*/if exists (select 1from sys.sysreferences r join sys.sysobjects o on (o.id= r.constid and o.type = 'F')where r.fkeyid = object_id('SC') and ='FK_SC_SC_S')alter table SCdrop constraint FK_SC_SC_Sgoif exists (select 1from sys.sysreferences r join sys.sysobjects o on (o.id= r.constid and o.type = 'F')where r.fkeyid = object_id('SC') and = 'FK_SC_SC2_C')alter table SCdrop constraint FK_SC_SC2_Cgoif exists (select 1from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')where r.fkeyid = object_id('TC') and = 'FK_TC_TC_T')alter table TCdrop constraint FK_TC_TC_Tgoif exists (select 1from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')where r.fkeyid = object_id('TC') and = 'FK_TC_TC2_C')alter table TCdrop constraint FK_TC_TC2_Cgoif exists (select 1from sysobjectswhere id = object_id('C')and type = 'U')drop table Cgoif exists (select 1from sysobjectswhere id = object_id('S')and type = 'U')drop table Sgoif exists (select 1from sysindexeswhere id = object_id('SC') and name = 'SC2_FK'and indid > 0and indid < 255)drop index SC.SC2_FKgoif exists (select 1from sysindexeswhere id = object_id('SC') and name = 'SC_FK'and indid > 0and indid < 255)drop index SC.SC_FKgoif exists (select 1from sysobjectswhere id = object_id('SC')and type = 'U')drop table SCgoif exists (select 1from sysobjectswhere id = object_id('T')and type = 'U')drop table Tgoif exists (select 1from sysindexeswhere id = object_id('TC') and name = 'TC2_FK'and indid > 0and indid < 255)drop index TC.TC2_FKgoif exists (select 1from sysindexeswhere id = object_id('TC') and name = 'TC_FK'and indid > 0and indid < 255)drop index TC.TC_FKgoif exists (select 1from sysobjectswhere id = object_id('TC')and type = 'U')drop table TCgo/*==============================================================*//* Table: C *//*==============================================================*/create table C (CNo char(2) not null,CN varchar(40) null,CT smallint null,constraint PK_C primary key nonclustered (CNo))go/*==============================================================*//* Table: S*//*==============================================================*/create table S (SNo char(2) not null,SN varchar(40) null,Gen char(2) null,Birth datetime null,Dept varchar(40) null,constraint PK_S primary key nonclustered (SNo))go/*==============================================================*//* Table: SC *//*==============================================================*/create table SC (SNo char(2) not null,CNo char(2) not null,Score smallint null,constraint PK_SC primary key (SNo, CNo))go/*==============================================================*//* Index: SC_FK *//*==============================================================*/create index SC_FK on SC (SNo ASC)go/*==============================================================*//* Index: SC2_FK *//*==============================================================*/create index SC2_FK on SC (CNo ASC)go/*==============================================================*//* Table: T *//*==============================================================*/create table T (TNo char(2) not null,TN varchar(40) null,Gen char(2) null,Birth datetime null,Prof varchar(40) null,Sal int null,Comm int null,Dept varchar(40) null,constraint PK_T primary key nonclustered (TNo))go/*==============================================================*//* Table: TC *//*==============================================================*/create table TC (TNo char(2) not null,CNo char(2) not null,constraint PK_TC primary key (TNo, CNo))go/*==============================================================*//* Index: TC_FK *//*==============================================================*/create index TC_FK on TC (TNo ASC)go/*==============================================================*//* Index: TC2_FK *//*==============================================================*/create index TC2_FK on TC (CNo ASC)goalter table SCadd constraint FK_SC_SC_S foreign key (SNo)references S (SNo)goalter table SCadd constraint FK_SC_SC2_C foreign key (CNo)references C (CNo)goalter table TCadd constraint FK_TC_TC_T foreign key (TNo) references T (TNo)goalter table TCadd constraint FK_TC_TC2_C foreign key (CNo) references C (CNo)go5. 结论心得体会( 如果有相同的, 则都不及格)参考教材:《数据库实验指导》主编: 杨海霞出版社: 人民邮电出版社书号: 978-115-16535-0。

数据库设计文档 数据字典设计

数据库设计文档 数据字典设计

数据库设计文档数据字典设计数据库设计是软件开发的重要环节,合理的数据库设计可以提高系统的性能、稳定性和可扩展性。

而数据字典设计是数据库设计过程中的一个重要环节,它定义了数据库中各个表的结构、字段以及其含义,是数据库设计文档的核心内容。

本文将详细阐述数据库设计文档和数据字典设计的重要性,并介绍如何编写高质量的数据库设计文档和数据字典。

一、数据库设计文档的重要性数据库设计文档是数据库开发过程中的重要产物,它记录了数据库各个方面的信息,包括系统需求、数据库结构、表结构、关系、索引、视图、触发器等。

数据库设计文档不仅在开发过程中起到指导作用,还在系统维护和升级时提供了重要的参考资料。

数据库设计文档的重要性主要体现在以下几个方面:1.系统需求分析:数据库设计文档可以清楚地定义系统的需求和功能,帮助开发人员准确理解系统的业务流程和数据流动,避免开发过程中的歧义和误解。

2.数据库结构定义:数据库设计文档记录了数据库的结构,包括表结构、字段属性、关系、索引等,可以帮助开发人员清晰地了解数据库的架构和关系,从而更好地进行数据库开发和维护。

3.系统维护和升级:数据库设计文档是系统维护和升级的重要参考资料,可以帮助维护人员快速了解系统的结构和关系,从而更好地进行问题排查和修复,同时也可以帮助系统升级时进行数据迁移和版本兼容性处理。

二、数据字典设计的重要性数据字典是数据库设计文档的核心内容,它定义了数据库中各个表的结构、字段以及其含义。

数据字典设计的重要性主要体现在以下几个方面:1.数据一致性:数据字典定义了数据库中各个表的字段含义和属性,可以确保数据的一致性。

通过数据字典的定义,开发人员可以准确地了解每个字段的用途和取值范围,从而避免数据错误和混乱。

2.系统维护和升级:数据字典是系统维护和升级的重要参考资料,可以帮助维护人员快速了解数据库的结构和字段含义,从而更好地进行问题排查和修复。

3.系统文档化:数据字典可以让开发人员和维护人员更好地理解数据库的结构和字段含义,同时也可以作为系统的文档化资料,方便进行系统培训和知识传承。

20年春北理工《数据库系统应用》在线作业-2

20年春北理工《数据库系统应用》在线作业-2

【奥鹏】-[北京理工大学]北理工《数据库系统应用》在线作业试卷总分:100 得分:100第1题,1NF规范化为2NF,消除了( )。

A、非主属性对码的部分函数依赖B、非主属性对码的传递函数依赖C、主属性对码的部分函数依赖D、主属性对码的传递函数依赖正确答案:A第2题,二个关系做并运算,需要二个关系具有( )。

A、相同元组数B、相同属性数C、相容关系D、任意关系正确答案:C第3题,SQL中,与安全性有关的SQL语句是( )。

A、SELECTB、CREATEC、GRANTD、INSERT正确答案:C第4题,数据库系统与文件系统的主要区别是( )。

A、数据库系统比文件系统复杂B、数据库系统没有冗余C、数据库系统的独立性高D、数据库系统管理的数据量大正确答案:C第5题,数据库系统的恢复子系统实现事务的( )。

A、原子性B、隔离性C、一致性D、持久性正确答案:D第6题,与层次和网状数据模型比较,关系模型的优点之一是( )。

A、能更好地模拟现实世界B、存取路径对用户透明C、存取效率高D、可以表示实体间的各种联系正确答案:B第7题,关于视图,下列说法不正确的是( )。

A、可在多个表或视图上定义视图B、视图简化了用户的操作C、视图提供了一定的物理独立性D、视图提供了一定的安全性正确答案:C第8题,关系模式的候选码可以有( )。

A、0个B、1个C、1个或多个D、多个正确答案:C第9题,数据库系统安排多个事务并发执行的过程称为( )。

A、步骤B、进程C、调度D、流程正确答案:C第10题,事务日志用于数据库的( )。

A、安全B、恢复C、审计D、跟踪正确答案:B第11题,嵌套查询一般的执行顺序是( )处理。

A、同时B、由里向外C、由外向里D、由下层向上层正确答案:B,D第12题,关于关系模式,说法正确的是( )。

A、关系模式是对关系的描述B、关系是型,关系模式是它的值C、关系模式是静态的、稳定的D、关系模式是动态的正确答案:A,C第13题,数据库管理员的职责包括( )。

北京理工大学-数据库-实验_2-数据更新、删除与权限管理

北京理工大学-数据库-实验_2-数据更新、删除与权限管理

北京理工大学数据库实验2主讲老师:赵晓林学生:李经2012/11/21实验 2:数据更新、删除与权限管理 (1)2.1 作业声明 (1)2.2 实验目的 (1)2.2.1 体会主键、外键约束 (1)2.2.2 对“学籍管理系统”表格进行数据查询 (1)2.3 实验过程 (1)2.3.1 练习更新、删除主表数据(针对主键属性且子表中可能有参照外键数据) . 12.3.2 练习更新、删除主表数据(针对非主键属性) (1)2.3.3 练习先删除子表数据,再删除主表数据 (2)2.3.4 使用子查询方式更新、删除数据 (2)2.3.5 权限管理 (3)2.4 实验结论 (6)2.5 实验体会 (6)实验 2:数据更新、删除与权限管理2.1 作业声明本次作业全部由本人完成,若存在抄袭或雷同现象,本人愿意接受老师相应的处理2.2 实验目的2.2.1体会主键、外键约束2.2.2对“学籍管理系统”表格进行数据查询•确定要更新和删除的数据2.3 实验过程2.3.1练习更新、删除主表数据(针对主键属性且子表中可能有参照外键数据)2.3.1.1 sql代码:update xb set xdh='06' --系表为主表where xmc='中文'2.3.1.2 结果:系统显示:消息547,级别16,状态0,第2 行UPDATE 语句与REFERENCE 约束"FK__xs__xdh__54968AE5"冲突。

该冲突发生于数据库"master",表"dbo.xs", column 'xdh'。

语句已终止。

由于有外键依赖,所以无法更新。

选择删除相关联的外键:ALTER TABLE js drop CONSTRAINT FK__js__xdh__09FE775DALTER TABLE xs drop CONSTRAINT FK__xs__xdh__0539C240再次执行更新操作,更新成功2.3.2练习更新、删除主表数据(针对非主键属性)2.3.2.1 sql代码:首先先恢复依赖于系表xdh项的两个外键(2.3.1.1中删除的那两个外键)update xb set xmc='德语' --更新where xdh='05'delete from xb where xdh='05' --删除数据更新成功:因系名称不存在主外键关系,因此可直接修改。

数据库设计字典表

数据库设计字典表

数据库设计字典表-概述说明以及解释1.引言1.1 概述概述:数据库设计中的字典表是一个非常重要的概念,它是用来存储数据中常用的静态数据,例如性别、国家、状态等。

字典表的作用是统一管理这些静态数据,避免数据冗余和不一致性,提高数据的可维护性和可扩展性。

在数据库设计中,正确使用字典表可以简化数据结构,提高查询效率,减少数据错误的可能性。

本文将对字典表的定义、设计原则以及对字典表设计的建议进行详细讨论,希望能够帮助读者更好地理解和应用字典表在数据库设计中的重要性和作用。

1.2 文章结构本文将围绕数据库设计中的字典表展开讨论。

全文分为引言、正文和结论三个部分。

在引言部分,将对本文所涉及的主题进行概述,介绍字典表在数据库设计中的重要性和作用,并给出本文的目的和研究范围。

正文部分将详细探讨字典表的定义和作用,包括字典表在数据库中的具体应用场景以及其对数据库性能和数据一致性的影响。

此外,还将介绍字典表的设计原则,包括如何选择字典表的主键、如何设计字典表的字段以及如何维护字典表的数据。

在结论部分,将对全文进行总结,回顾字典表的重要性和作用,并提出对字典表设计的一些建议和思考,以期为数据库设计者提供参考。

通过本文的阅读,读者将能够全面了解字典表在数据库设计中的地位和作用,并掌握如何合理设计和维护字典表,从而提高数据库的性能和数据的一致性。

同时,本文还将引导读者思考和讨论字典表设计的一些挑战和争议,为数据库设计领域的研究提供启示。

1.3 目的字典表在数据库设计中起着至关重要的作用,其主要目的包括:1. 提供统一的词汇和定义:字典表可以存储各种常用的术语和其对应的定义,确保在数据库设计和使用过程中使用统一的词汇,避免混淆和误解。

2. 简化数据处理:通过字典表,可以将一些常用的数据存储在其中,减少重复数据的存储,提高数据的一致性和准确性。

同时,可以通过字典表中的关联关系,简化数据库查询和数据处理的流程。

3. 满足业务需求:字典表可以根据不同业务领域的需求,灵活设计不同的词汇和定义,满足不同业务场景下的数据处理需求,提高数据库的灵活性和可扩展性。

北京理工大学-数据库-实验1-建立数据库

北京理工大学-数据库-实验1-建立数据库

北京理工大学数据库实验1主讲老师:赵晓林学生:李经2012/11/20实验 1:建立数据库 (1)1.1 作业声明 (1)1.2 实验目的 (1)1.2.1 熟悉数据库环境、建立表、插入数据、删除数据 (1)1.3 实验过程 (1)1.3.1 建立“学籍与成绩管理系统”表格 (1)1.3.2 使用“INSERT ”语句向主表插入至少5行数据,向子表插入至少30行数据; (2)1.3.3 在子表中输入含有不存在外键值的数据; (4)1.3.4 使用SELECT * FROM ......观察数据; (4)1.3.5 更新部分学生的学籍情况、成绩 (4)1.3.6 删除部分同学的学籍信息 (5)1.3.7 使用所有学习的查询语句对表格的进行查询(自拟题目) (5)1.4 实验结论 (7)1.5 实验体会 (7)实验 1:建立数据库1.1 作业声明本次作业全部由本人完成,若存在抄袭或雷同现象,本人愿意接受老师相应的处理1.2 实验目的1.2.1熟悉数据库环境、建立表、插入数据、删除数据1.3 实验过程1.3.1建立“学籍与成绩管理系统”表格•建立表之间的参照关系•建立适当的索引1.3.1.1 sql代码:create database xuejicreate table xb --系表(xdh char(2) not null PRIMARY KEY,xmc varchar(30) not null,)create table xs --学生表(xm varchar(8) not null,xh char(10) not null PRIMARY KEY,xdh char(2) FOREIGN KEY REFERENCES xb(xdh),bj char(8),chrq datetime,xb char(2),)create table kc --课程表(kcbh char(3) not null PRIMARY KEY,kcmc char(20) not null,lx char(10),xf decimal(5,1),)create table js --教师表(xm varchar(8) not null,jsbh char(10) not null PRIMARY KEY,zc char(6),xdh char(2) FOREIGN KEY REFERENCES xb(xdh),)create table sk --授课表(kcbh char(3) not null FOREIGN KEY REFERENCES kc(kcbh),jsbh char(10) not null FOREIGN KEY REFERENCES js(jsbh),constraint kj_pk PRIMARY KEY (kcbh,jsbh))create table xk --选课表(xh char(10) not null FOREIGN KEY REFERENCES xs(xh),kcbh char(3) not null FOREIGN KEY REFERENCES kc(kcbh),jsbh char(10) not null FOREIGN KEY REFERENCES js(jsbh),cj decimal(5,1),constraint xkj_pk PRIMARY KEY (xh,kcbh,jsbh))create index s_xs on xs(xh); --建立索引建立索引原因:提高查询速度1.3.2使用“INSERT ”语句向主表插入至少5行数据,向子表插入至少30行数据;1.3.2.1 Sql代码insert into xb values('01','计算机');insert into xb values('02','数学');insert into xb values('03','经济');insert into xb values('04','法律');insert into xb values('05','中文');insert into xs values('王一','1120100001','01','08111001','1990-1-1','男');insert into xs values('王二','1120100002','01','08111001','1990-1-2','男');insert into xs values('王三','1120100003','01','08111001','1990-1-3','男');insert into xs values('王四','1120100004','01','08111001','1990-1-4','男');insert into xs values('王五','1120100005','01','08111001','1990-1-5','男');insert into xs values('王六','1120100006','01','08111001','1990-1-6','男');insert into xs values('张一','1120100007','02','08111002','1990-2-1','男');insert into xs values('张二','1120100008','02','08111002','1990-2-2','男');insert into xs values('张三','1120100009','02','08111002','1990-2-3','男');insert into xs values('张四','1120100010','02','08111002','1990-2-4','男');insert into xs values('张五','1120100011','02','08111002','1990-2-5','男');insert into xs values('张六','1120100012','02','08111002','1990-2-6','男');insert into xs values('李一','1120100013','02','08111003','1990-3-1','男');insert into xs values('李二','1120100014','02','08111003','1990-3-1','男');insert into xs values('李三','1120100015','02','08111003','1990-3-1','男');insert into xs values('李四','1120100016','02','08111003','1990-3-1','男'); insert into xs values('李五','1120100017','02','08111003','1990-3-1','男'); insert into xs values('李六','1120100018','02','08111003','1990-3-1','男'); insert into xs values('陈一','1120100019','04','08111004','1990-4-1','女'); insert into xs values('陈二','1120100020','04','08111004','1990-4-1','女'); insert into xs values('陈三','1120100021','04','08111004','1990-4-1','女'); insert into xs values('陈四','1120100022','04','08111004','1990-4-1','女'); insert into xs values('陈五','1120100023','04','08111004','1990-4-1','女'); insert into xs values('陈六','1120100024','04','08111004','1990-4-1','女'); insert into xs values('孙一','1120100025','05','08111005','1990-5-1','男'); insert into xs values('孙二','1120100026','05','08111005','1990-5-1','男'); insert into xs values('孙三','1120100027','05','08111005','1990-5-1','男'); insert into xs values('孙四','1120100028','05','08111005','1990-5-1','男'); insert into xs values('孙五','1120100029','05','08111005','1990-5-1','男'); insert into xs values('孙六','1120100030','05','08111005','1990-5-1','男');insert into kc values('001','操作系统','必修','3');insert into kc values('002','模拟电子技术基础','必修','3.5');insert into kc values('003','数据库原理与设计','必修','3');insert into kc values('004','数字图象处理','专业选修','3');insert into kc values('005','游戏设计概论','专业选修','2');insert into js values('郭靖','9920100001','高级','01');insert into js values('黄蓉','9920100002','一级','02');insert into js values('郭襄','9920100003','二级','03');insert into js values('杨过','9920100004','高级','04');insert into js values('杨康','9920100005','一级','05');insert into sk values('001','9920100001');insert into sk values('002','9920100002');insert into sk values('003','9920100003');insert into sk values('004','9920100004');insert into sk values('005','9920100005');insert into xk values('1120100001','001','9920100001','90');insert into xk values('1120100002','001','9920100001','80');insert into xk values('1120100003','001','9920100001','70');insert into xk values('1120100004','001','9920100001','60');insert into xk values('1120100005','001','9920100001','50');insert into xk values('1120100001','002','9920100002','95');insert into xk values('1120100002','002','9920100002','85');insert into xk values('1120100003','002','9920100002','75');insert into xk values('1120100004','002','9920100002','65');insert into xk values('1120100005','002','9920100002','55');insert into xk values('1120100001','003','9920100003','75');insert into xk values('1120100002','003','9920100003','80');insert into xk values('1120100003','003','9920100003','80');insert into xk values('1120100004','003','9920100003','90');insert into xk values('1120100005','003','9920100003','70');insert into xk values('1120100001','004','9920100004','74');insert into xk values('1120100002','004','9920100004','88');insert into xk values('1120100003','005','9920100005','68');insert into xk values('1120100004','005','9920100005','67');insert into xk values('1120100005','005','9920100005','80');1.3.3在子表中输入含有不存在外键值的数据;•观察数据库系统的反应1.3.3.1 Sql代码insert into xs values('钱一','1120100090','06','08111005','1990-5-1','男');1.3.3.2 执行结果系统显示:消息547,级别16,状态0,第1 行INSERT 语句与FOREIGN KEY 约束"FK__xs__xdh__54968AE5"冲突。

数据字典设计 模板

数据字典设计 模板

数据字典设计模板数据字典设计模板数据字典是一种用于描述数据元素及其关联信息的文档或工具。

它提供了一个集中管理和维护数据定义的方式,使得数据的使用和理解更加方便和准确。

本文将为您介绍一种标准格式的数据字典设计模板,以帮助您更好地组织和管理数据。

1. 数据字典概述在此部分,您需要提供关于数据字典的概述信息,包括数据字典的目的、范围和使用者等。

以下是一个示例:数据字典是为了帮助组织和管理数据定义而设计的工具。

它包含了所有数据元素的定义和相关属性,以及数据元素之间的关系。

数据字典的使用者可以是数据管理员、开发人员、业务分析师等。

2. 数据字典结构在此部分,您需要定义数据字典的结构,包括数据元素的命名规则、数据类型、长度、取值范围等。

以下是一个示例:数据元素命名规则:使用驼峰命名法,首字母小写,每个单词首字母大写,不包含特殊字符和空格。

数据类型:包括文本型、数值型、日期型等。

长度:定义数据元素的最大长度。

取值范围:定义数据元素的取值范围,可以是固定的值或者从其他数据源获取。

3. 数据字典属性在此部分,您需要定义数据字典中数据元素的属性,包括描述、示例、备注等。

以下是一个示例:描述:对数据元素的功能和含义进行描述。

示例:提供一个数据元素的示例值,以便使用者更好地理解其含义。

备注:提供一些额外的说明或者注意事项。

4. 数据字典关系在此部分,您需要定义数据字典中数据元素之间的关系,包括关联关系、依赖关系等。

以下是一个示例:关联关系:描述数据元素之间的关联关系,可以是一对一、一对多、多对多等。

依赖关系:描述数据元素之间的依赖关系,即一个数据元素的取值依赖于其他数据元素的取值。

5. 数据字典更新和维护在此部分,您需要定义数据字典的更新和维护规则,以确保数据字典的准确性和完整性。

以下是一个示例:更新规则:定义数据字典的更新频率和流程,包括新增、修改和删除数据元素的规则。

维护规则:定义数据字典的维护责任人和流程,包括数据字典的备份和恢复策略。

高校教务系统数据库字典

高校教务系统数据库字典
所属系所
xsh
char(2)
外键(t_zd_xsh)
专业类别
lb
char(2)
(保留)
国标名称
zygb
char(7)
外键(t_zd_zygb)
状态
zt
char(1)
0为不可用,1为可用
中文名称
教学计划
表名
t_jx_jxjh
文档编号
T02.08
说明
教学计划表
构成
中文名称
标志
类型
关键字
说明
专业
zy
char(7)
代码
dm
char(1)
*
1位代码
中文名称
mc
Varchar(2)
最多2个汉字(春、秋)
英文名称
ywmc
Varchar(20)
中文名称
生源地表
表名
t_zd_syszd
文档编号
T00.08
说明
生源地代码和省份对应表
构成
中文名称
标志
类型
关键字
说明
代码
dm
char(2)
*
2位代码
中文名称
mc
Varchar(64)
中文名称
成绩比例表
表名
t_jx_cjfs
文档编号
T02.05
说明
考试中各类成绩比例表
构成
中文名称
标志
类型
关键字
说明
成绩方式
fs
char(2)
*
中文名称
khmc
varchar(10)
最多10个汉字
英文名称
ywmc
varchar(10)

数据字典模板

数据字典模板

数据字典模板一、引言数据字典是一个记录和描述数据库中各个数据元素(包括表、字段、数据类型、长度、约束等)的文档,它为数据库的设计、开辟和维护提供了重要的参考依据。

本文档旨在提供一个标准的数据字典模板,以便统一规范和管理数据库中的数据元素。

二、数据字典结构数据字典应包含以下几个主要部份:1. 数据库信息- 数据库名称:[数据库名称]- 数据库版本:[数据库版本]- 数据库描述:[数据库描述]2. 表信息- 表名称:[表名称]- 表描述:[表描述]- 字段列表:[字段1名称]、[字段2名称]、[字段3名称]...- 约束列表:[约束1名称]、[约束2名称]、[约束3名称]...3. 字段信息- 字段名称:[字段名称]- 字段描述:[字段描述]- 数据类型:[数据类型]- 长度:[长度]- 是否为空:[是/否]- 默认值:[默认值]- 约束:[约束]4. 约束信息- 约束名称:[约束名称]- 约束类型:[约束类型]- 约束描述:[约束描述]- 约束条件:[约束条件]5. 其他信息(可选)- 索引信息:[索引1名称]、[索引2名称]、[索引3名称]...- 视图信息:[视图1名称]、[视图2名称]、[视图3名称]...- 存储过程信息:[存储过程1名称]、[存储过程2名称]、[存储过程3名称]...三、数据字典模板示例1. 数据库信息- 数据库名称:MyDatabase- 数据库版本:MySQL 8.0- 数据库描述:这是一个用于存储用户信息的数据库。

2. 表信息- 表名称:User- 表描述:用户表,用于存储用户的基本信息。

- 字段列表:ID、Name、Age、Email、Phone - 约束列表:PK_User_ID、UK_User_Email3. 字段信息- 字段名称:ID- 字段描述:用户ID- 数据类型:INT- 长度:10- 是否为空:否- 默认值:无- 约束:PK_User_ID- 字段名称:Name- 字段描述:用户姓名- 数据类型:VARCHAR- 长度:50- 是否为空:否- 默认值:无- 约束:无- 字段名称:Age- 字段描述:用户年龄- 数据类型:INT- 长度:3- 是否为空:是- 默认值:18- 约束:无- 字段名称:Email- 字段描述:用户邮箱- 数据类型:VARCHAR - 长度:100- 是否为空:是- 默认值:无- 约束:UK_User_Email- 字段名称:Phone- 字段描述:用户手机号码 - 数据类型:VARCHAR - 长度:20- 是否为空:是- 默认值:无- 约束:无4. 约束信息- 约束名称:PK_User_ID- 约束类型:主键约束- 约束描述:用户ID作为主键- 约束条件:无- 约束名称:UK_User_Email- 约束类型:惟一约束- 约束描述:用户邮箱惟一- 约束条件:无5. 其他信息(可选)- 索引信息:无- 视图信息:无- 存储过程信息:无四、总结本文档提供了一个数据字典模板,用于规范和管理数据库中的数据元素。

数据库设计文档 数据字典设计 -回复

数据库设计文档 数据字典设计 -回复

数据库设计文档数据字典设计-回复【数据库设计文档数据字典设计】数据库设计文档是指在数据库开发过程中对数据库的设计细节进行描述和说明的文档,其中一个重要的组成部分就是数据字典设计。

数据字典是数据库设计的核心之一,它是对数据库中的数据表、字段、关系和约束进行详细描述的结构化文档。

数据字典设计的目的是为了提供一个统一的标准,保证数据库的设计规范和一致性,并能够方便开发人员和维护人员快速了解和操作数据库。

在进行数据字典设计时,我们需要依次完成以下几个步骤:1. 确定数据字典的基本信息:首先,我们需要确定数据字典的名称、版本和创建日期等基本信息,以便于后续的维护和版本控制。

2. 定义数据字典的表格结构:数据字典通常是以表格的形式来进行展示的,因此我们需要定义数据字典的表格结构。

这包括表格的列名、列的数据类型、列的长度、是否允许为空等信息。

3. 描述数据库中的数据表:在数据字典中,我们需要对数据库中的每个数据表进行详细描述。

对于每个数据表,我们需要定义其表名、表的描述、主键、外键等信息。

4. 描述数据表中的字段:对于每个数据表中的字段,我们需要定义其字段名、字段的数据类型、字段的描述、是否为主键、是否允许为空等信息。

此外,还可以在字典中添加一些额外的约束条件,如唯一约束、默认值等。

5. 描述数据表之间的关系:数据库中的数据表之间通常存在着一定的关系,如一对一关系、一对多关系等。

在数据字典中,我们需要准确地描述这些关系,并标明关系的类型和关联的外键。

6. 添加其他的补充信息:为了方便开发和维护,我们可以在数据字典中添加一些额外的信息,如备注、创建人、更新时间等。

总结起来,数据字典设计是数据库设计中的一个非常重要的环节,它能够规范和统一数据库的设计,提高开发和维护的效率,减少出错的可能性。

同时,数据字典也可以作为数据库开发人员和维护人员之间的沟通工具,方便双方交流和理解。

值得注意的是,数据字典是一个动态的文档,随着数据库的发展和调整,数据字典也需要进行相应的更新和维护。

数据库设计说明书 数据字典设计

数据库设计说明书 数据字典设计

数据库设计说明书数据字典设计数据库设计说明书是一个重要的文档,它描述了数据库的结构和功能。

其中,数据字典是数据库设计说明书的一部分,它用于记录数据库中使用的数据元素和数据结构的详细信息。

在设计数据库时,数据字典提供了一个标准化的方式来描述每个数据元素的含义、属性和关系。

它包含了以下几个关键部分:1. 表名和表描述:每个表都应该有一个独特的名称,并且应该对该表的用途进行简要的描述。

2. 列名和列描述:每个表中的列应该有一个独特的名称,并且应该对该列的含义和数据类型进行描述。

3. 主键和外键:在表中定义主键和外键的信息,包括名称、关联表和关联列等。

4. 约束:描述表中的约束条件,如UNIQUE约束、NOT NULL约束等。

5. 索引:描述表中的索引,包括索引名称、关联列等。

6. 触发器:描述表中的触发器,包括触发器名称、触发器类型等。

7. 视图:描述数据库中的视图,包括视图名称、视图定义等。

数据字典的设计是为了使数据库可读性更强,有助于开发人员更好地理解数据库结构与关系,方便数据库的维护和管理。

在编写数据库设计说明书的数据字典部分时,需要注意以下几点:1. 简洁明了:每个数据元素的描述应该简洁明了,使读者能够快速理解其含义。

2. 一致性:在整个数据库中,相同类型的数据元素应该有一致的命名和描述方式,避免混淆。

3. 完整性:数据字典应该包含数据库中所有的表、列、主键、外键、约束、索引、触发器和视图的信息。

4. 更新及时:随着数据库的变化,数据字典应该及时更新,以保持与实际数据库结构的一致性。

数据字典设计是数据库设计说明书中的一个关键组成部分,它记录了数据库中各个数据元素的详细信息,为数据库的维护和管理提供了便利。

正确编写和及时更新数据字典对于数据库开发和维护人员来说是非常重要的。

  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。

相关文档
最新文档