[问题] [数据库]主键与外键的疑问

楼主: skywillnosky (Alfred)   2015-04-04 16:45:27
在上唐老师的课解释主键与外键时说
有些主键或外键是要共同识别
例如
学校名称, 科系 => 同时两个一起才能识别唯一性
可是我困惑的是,主键不是只能选一个吗?
如果照这样说的话谁才是主键?
有数据库可以同时设定两个主键吗?
还是说实际数据库在设计时,会想办法避免这种状况
也就是会想办法让上面的例子变成候选键,替代键
然后生出一个唯一识别的自动流水号?
回到小弟真正的问题,在画图时(包含ER图跟Table)
有办法画上述"两个再一起才能识别"的情境吗?
难道是两个字段同时画底线?
作者: e4653303 (小乌贼)   2015-04-04 17:12:00
主键只能有一个,不可能有第二个。我不知道你的表单除了这两个字段还有其他的什么,可能要你都标示出来,主键有唯一性,代表不可能重复。
楼主: skywillnosky (Alfred)   2015-04-04 17:18:00
还有其他候选键,抱歉,小弟只是举例,没有想这么多不过小弟大概了解E大的意思
作者: ko74652 (Reese lin)   2015-04-04 17:20:00
学校名称,科系 组成 一个'复合主键'像二元多对多 两个实体PK合起来为一个复合pk其中 每个键又都是FK 参考到原本实体的PK像是 订单 产品 两个实体 多对多的关系其中 关系上又有一个普通属性 >>数量 此时 画表格时订单编号跟产品编号 成为复合PK 决定 该产品在订单的数量订单编号跟产品编号 一个底线PK 然后两个虚线FK订单编号产品编号 是一个完整PK 你课还没上完吧两个实体 又一个 多对多 所以会产生三个关联表第三张就是订单产品 PK{产品编号,订单编号}FK 有两个 一个是 订单编号 一个是产品编号你自己想想看 一张订单上有多个产品假如只知道订单编号 怎么会知道哪项产品数量有多少所以一定要是产品编号+订单编号 我才知道 我订几个啊
楼主: skywillnosky (Alfred)   2015-04-04 20:36:00
原来如此OTZ
作者: long202 (龙)   2015-04-06 11:51:00
提振士气,以乐观改变环境。提升自我,以责任改变心境。提醒反观,以慎独用心若镜。提志千里,以真理引导路径。提起信心,以恒诚建立冲劲。

Links booklink

Contact Us: admin [ a t ] ucptt.com