假设我有以下关系(表格):
Student (id, name , family)
Course (id, title, unit, ref)
Std-Course (std-id, course-id)
// std-id和course-id分别是引用学生和课程关系的外键。
std-id和course-id是单独存储还是只存储为指针?
(特别是在MySql
和MS SQLSERVER
)
修改:让我用这种方式解释一下:
如果(123456, JOHN, SMITH)
表格中有Student
行,并且(123456,db1)
中的Std-Course
123456
存储了两次,或存储在第二个表格中(作为外键)它只是一个链接?
答案 0 :(得分:1)
根据文件:
MySQL支持外键,可以让你交叉引用相关的 表中的数据和外键约束有助于保持这一点 展开数据一致。
意思是,我们使用子和父母来存储数据。 foreign key ... references ...
的指令将存储在系统表table_constraints
中,以维护表中定义的关系。
修改:
如果学生表中有这样一行(
123456
,JOHN
,SMITH
),并且{123456
,db1
)在Std-Course
中,123456
存储了两次还是存储在第二个表中(作为外键)它只是一个链接?
存储两次。第一个在父表中,第二个在子表中。
引用不是表数据的直接部分。它们是数据库系统的指令,并在称为information_schema
的自己的模式中维护。
表table_constraints
是此模式的一部分,包含有关mysql
当前实例下各种数据库中定义的所有此类约束的信息。
请参阅 :