求问
Topic source- 实现约束有两种方式
- 数据库约束:数据库层面将`students`表的`class_id`与`classes`表中的`id`关联。此时插入`students`时,如`class_id`对应列在`classes`表的`id`中无对应记录时,将无法插入数据。
- 应用程序逻辑:通过应用程序来关联外键。如查找小明的班级:先在`students`中找到小明对应的`class_id`,应用程序接着在`classes`中查找id为`1`的记录得到小明所在班级为`一班`,此为应用程序级别。
- 数据库约束是将一个约束绑定到一个列上。`class_id`只是一个列,实际约束需要额外定义`外键约束`实现,如示例中的
ALTER TABLE students
ADD CONSTRAINT fk_class_id
FOREIGN KEY (class_id)
REFERENCES classes (id);
如果删除`fk_class_id`约束,`students`中的`class_id`这一列还是存在的。
- 1
c2_邓灿x
外键既可以通过数据库来约束,也可以不设置约束,仅依靠应用程序的逻辑来保证。
与
外键并不是通过列名实现的,而是通过定义外键约束实现的
这两句话是什么意思?我怎么感觉矛盾了
我是小白