SQL外键实现
我必须在SQL外键实现,sql,database,oracle,foreign-keys,Sql,Database,Oracle,Foreign Keys,我必须在SQL上创建大学数据库表 我有三张桌子: 大学、教员和系 它们都有主键id 所以,当我创建department表时,我必须添加university和faculty表的外键,还是只有faculty id就足够了 我必须为id使用哪种类型的密钥?主要的还是唯一的?我不太理解他们之间的区别 对不起,我的英语不好 如果层次结构为university->faculty->department,则将university\u id放入faculty表,将faculty\u id放入department
SQL
上创建大学数据库表
我有三张桌子:
大学、教员和系
它们都有主键id
所以,当我创建department表时,我必须添加university
和faculty
表的外键,还是只有faculty id就足够了
我必须为id使用哪种类型的密钥?主要的还是唯一的?我不太理解他们之间的区别
对不起,我的英语不好 如果层次结构为
university->faculty->department
,则将university\u id
放入faculty表,将faculty\u id
放入department表
主键
是唯一约束
和非空约束
(以及物理表的顺序)的组合。大学、学院和系这三个表的主键唯一标识该表中的每一行。要在每个表之间建立关系,应该有一个外键关系
主键和唯一约束之间的区别在于主键不允许空值,但可以有一个空值作为唯一键。它们都唯一地标识表中的每一行,不允许重复。@a_horse_with_no_name我正在使用Oracle数据库。主键还有一个语义含义,即它被认为是表行的权威标识值。它也应该是不可变的(即永不更改),这不是唯一密钥的情况。唯一键也可以具有NOTNULL约束。一个很好的例子是,您可以提供一个具有NOTNULL约束的唯一键来定义表中行的排序顺序。这当然可以改变,并且通常不会被视为行的标识符。