
(2.1)关系模型之关系结构和约束
原子性:每个属性值不能再被分解,必须是一个不可分割的基本单位。 唯一性:表中不能出现重复的行,确保每个元组都是独一无二的。 一致性:行列之间的数据关系必须保持一致,避免出现矛盾。 属性取值范围的限定:通过定义属性的取值范围,确保数据符合业务需求。 属性间关系的限定:通过定义属性之间的关系,确保数据逻辑一致。 唯一性:能够唯一确定每个元组。 最小性:属性集合不能再被分解。 唯一性:能够唯一确定每个元组。 最小性:属性集合不能再被分解。 完整性:候选键中的属性必须包含关系模式中所有的主属性。 唯一性:主键值必须唯一。 非空性:主键值不能为空。 最小性:主键是最小的候选键。 关联关系:通过外键将两张表联系起来。 数据完整性:确保数据的一致性。
发布日期:2021-05-08 17:53:46
浏览次数:12
分类:精选文章
本文共 1746 字,大约阅读时间需要 5 分钟。
关系表与数据库约束
在数据库设计中,关系表是用来存储数据的核心模块。数学上,关系表中的每一行都代表一个元组,而每一列则是一个属性的取值。关系表必须满足以下基本原则:
1.1 考生表(examinee)
考生表是一个典型的关系表,主要用于存储考生的基本信息。表结构如下:
examinee(eeid, eename, eesex, eeage, eedepa)
其中:
eedid
:考生的唯一标识编号。eename
:考生的姓名。eesex
:考生的性别(男/女)。eeage
:考生的年龄。eedepa
:考生的院系。
1.2 考官表(examiner)
考官表用于存储考官的信息,表结构为:
examiner(eid, eename, eesex, eeage, eestatus)
其中:
eid
:考官的唯一标识编号。eename
:考官的姓名。eesex
:考官的性别(男/女)。eeage
:考官的年龄。eestatus
:考官的职位状态(如“主考官”或“副考官”)。
1.3 试卷表(exampaper)
试卷表记录考试的具体试卷信息,表结构为:
exampaper(pid, pname, pversion, pdate, pstatus)
其中:
pid
:试卷的唯一标识编号。pname
:试卷的名称。pversion
:试卷的版本号。pdate
:试卷的发布日期。pstatus
:试卷的状态(如“已发布”或“已过期”)。
1.4 院系表(department)
院系表用于存储学校或单位的信息,表结构为:
department(did, dname, dlocation, dhead)
其中:
did
:院系的唯一标识编号。dname
:院系的名称。dlocation
:院系的地理位置。dhead
:院系的负责人。
1.5 考官组表(erexam)
考官组表记录考官组的信息,表结构为:
erexam(gid, gidname, gidhead, gidstatus)
其中:
gid
:考官组的唯一标识编号。gidname
:考官组的名称。gidhead
:考官组的负责人。gidstatus
:考官组的状态(如“活跃”或“暂停”)。
1.6 考生答卷表(eeexam)
考生答卷表记录考生的考试成绩,表结构为:
eeexam(eeid, eepaperid, eescore, eestatus)
其中:
eedid
:考生的唯一标识编号。eeperid
:考生参加的试卷的唯一标识编号。eescore
:考生的考试成绩(如“及格”或“不及格”)。eestatus
:考生的考试状态(如“已提交”或“未提交”)。
2.1 数据约束
软件系统无法确保数据的真实性,但可以通过数据约束确保数据的合理性和一致性。数据约束主要通过以下方式实现:
2.2 超键
在关系表中,能够唯一标识出所有元组的属性集合称为超键。超键是关系模式的核心,必须满足以下条件:
2.3 候选键
在关系模式中,能够唯一标识元组的最小的属性集合称为候选键。候选键的定义必须满足以下条件:
2.4 主键
在关系模式中,通常会选择一个候选键作为主键。主键具有以下特点:
2.5 外键
外键是一组属性值,它必须在另一个关系表中找到对应的数值。外键的作用包括:
例如,考生表中的eedepa
属性就是一个外键,其取值范围必须与院系表中的dname
列匹配,或者允许为空值。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月10日 17时24分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MUI之ajax获取后台接口数据
2019-03-05
使用sqlserver 查询不连续的数据
2019-03-05
用div+css+html+js 实现图片放大
2019-03-05
(原创)在Linux上安装运行Python3(CentOS7为例)
2019-03-05
weblogic之cve-2015-4852
2019-03-05
Java注释
2019-03-05
水调歌头·1024
2019-03-05
C++ 函数重载
2019-03-05
Nginx简介
2019-03-05
Nginx的Gzip功能
2019-03-05
Azure Storage 系列(四)在.Net 上使用Table Storage
2019-03-05
abstract关键字的使用
2019-03-05
.NET微信网页开发之使用微信JS-SDK调用微信扫一扫功能
2019-03-05
解决Spirng注入时名称下的红色波浪线
2019-03-05
使用mybatis-generator生成底层
2019-03-05
Android APK 重签名
2019-03-05
Mybatis【3】-- Mybatis使用工具类读取配置文件以及从属性读取DB信息
2019-03-05
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2019-03-05