关系
- 创建成绩表scores,结构如下
- id
- 学生
- 科目
- 成绩
思考:学生列应该存什么信息呢?
答:学生列的数据不是在这里新建的,而应该从学生表引用过来,关系也是一条数据;
根据范式要求应该存储学生的编号,而不是学生的姓名等其他信息。
同理,科目表也是关系列,引用科目表中的数据。
- 创建表的语句如下
1 | create table tableName( |
外键
- 如何保证数据的有效性呢?任何整数都可以吗?
- 必须是学生表id列中存在的数据,可以通过外键约束进行数据的有效验证
- 为stuid添加外键约束
1 | alter table scores add constraint stu_sco foreign key(stuid) references students(id); |
- 在创建表时可以直接创建约束
1 | create table tableName( |
外键的级联操作
- 在删除students表的数据时,如果这个id值在scores表中已经存在,则会抛出异常
- 推荐使用逻辑删除,不仅可以避免这个问题还能使数据更安全。
- 逻辑删除,便是给表加一个isdelete字段。该行数据的isdelete列值为某个自定的值时便可以判断删除与否。