数据库关系表----Relationaltable 数据库关系表 ---- Relational table
什么是关系(relation)
在关系型模型中,数据⽤关系来表⽰
⼀个关系包括
relation schema: 关系表名称,字段或者属性名称, 字段范围
relation instance: ⼀组和schema有同样数量字段的元组
关系(relation)的基本属性
每⼀⾏(tuple)都是唯⼀的
没有顺序的要求
Degree: 关系表的度是字段的数量
关系表的Cardinality是⾏(也就是tuple)的数量
约束(Constraints)
Integrity Constraints 完整性约束
Integrity Constraints: condition specified on a database schema and
restrict the data that can be stored in a DB instance
完整性约束包括
主键约束 Primary Key Constraint
元组的key fields不能全部重复,也就是不能有两条⼀样的数据
主键不能为空
外键约束 Foreign Key Constraint
什么是外键
⼀个关系表(relation)的⼀组字段指向另外⼀个关系表(relation)的⼀⾏ (有点类似pointer)
通过包含另外⼀个关系表的primary key实现
外键的domain和所包含的另外⼀个关系表的primary key⼀样
需要防⽌某些操作毁坏表之间的联系
需要防⽌⽆效数据插⼊外键列 — 必须是所指向的表中的数据
外键不能为空
Referential Integrity 引⽤完整性
如果外键约束全部满⾜,就可以实现引⽤完整性
如何实现引⽤完整性:
现在有两个Entity: Enrolled, Students,
其中Enrolled的sid属性是⼀个外键, 指向Students
Enrolled(sid: string, cid: string, grade: string)
如果现在有⼀条Enrolled的数据需要被插⼊, 但是其中的sid是不存在的:拒绝
如果⼀条Student的数据需要被删除:
同时删除和这条Student数据相链接的Enrolled中的数据
或者拒绝删除这条Student数据
foreign key references用法或者将和这条Student数据相链接的Enrolled中的数据的sid设置为default sid. (In SQL, also: Set sid in Enrolled tuples that refer to it to a special value null, denoting ‘unknown’ or `inapplicable’.)
⼀个没有实现引⽤完整性的例⼦
创建⼀个关系表
使⽤ CREATE TABLE 语句
定义attribute, 包括data type, length, NOT NULL等
选择PRIMARY KEY
如果需要,选择FOREIGN KEY
Example: 基本
Example: 外键
The foreign key CUSTOMER_ID references the primary key of CUSTOMER, which is also CUSTOMER_ID
对于外键的UPDATE和DELETE操作有四种选项
CASCADE: update/delete parent table中的数据, 也update/delete child table所对应的数据
NO ACTION: 阻⽌update/delete parent table中的数据如果child table中有数据的外键指向此条数据
SET NULL: update/delete parent table中的数据, 然后将对应的child table中的数据的外键设置为NULL
SET DEFAULT: update/delete parent table中的数据, 然后将对应的child table中的数据的外键设置为default value
Example: 主键为两个外键
Example: 设置主键的两种⽅法
如何将ER模型转换为关系表

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。