关系模型
作用
erDiagram
学生表 {
string 学号 PK
string 姓名
int 年龄
string 性别
}
课程表 {
string 课程号 PK
string 课程名
int 学分
}
选课表 {
string 学号 PK
string 课程号 PK
int 成绩
}
学生表 ||--o{ 选课表
课程表 ||--o{ 选课表
本质
用二维表结构表示实体及实体间联系的数据模型
类型表格
关系类型 | 说明 |
---|---|
一对一 | 如学生与学籍档案 |
一对多 | 如班级与学生 |
多对多 | 如学生与课程 |
示例
-- 创建学生表
CREATE TABLE student (
sno CHAR(9) PRIMARY KEY,
sname VARCHAR(20) NOT NULL,
ssex CHAR(2),
sage SMALLINT
);
-- 创建选课关系表
CREATE TABLE sc (
sno CHAR(9),
cno CHAR(4),
grade SMALLINT,
PRIMARY KEY (sno, cno),
FOREIGN KEY (sno) REFERENCES student(sno)
);
注意事项
- 主键不能为NULL且必须唯一
- 外键必须引用已存在的主键值
- 关系模式需要满足一定的规范化要求
- 多对多关系需要拆解为两个一对多关系