如果我使用表的主键作为另一个表的主键,它仍然是外键吗?
e.g。
两张桌子专辑和特别优惠
AlbumId是两者中的主键
如何使用主键外键表示法表示此关系?
答案 0 :(得分:2)
是的,它仍然是主键。它通常被称为一对一关系。
您可以执行以下操作:
create table albums (
album_id integer primary key,
-- other fields...
);
create table special_offers (
album_id integer primary key references albums(album_id),
-- other fields...
);
答案 1 :(得分:0)
如果您对同一张专辑有几个特别优惠,AlbumId在特价商品表中不再是唯一的。我想考虑添加一个SpecialOfferId并设计一对多的关系。
答案 2 :(得分:0)
Pablo Santa Cruz是对的 - 是的,你被允许这样做。然而,从哲学的角度来看,只有真正存在一对一的关系才有意义 - 所有专辑都只有一个特别优惠,所有特别优惠只有一个专辑。
从您的问题域猜测,事实并非如此 - 有些专辑没有特别优惠,有些专辑有1,有些有很多。
如果确实如此,bw_üezi是对的 - 创建一对多的关系。
create table albums (
album_id integer primary key,
-- other fields...
);
create table special_offers (
special_offer_id integer primary key,
album_id integer foreign key references albums(album_id),
-- other fields...
);