数据库架构问题

时间:2011-03-17 12:05:18

标签: database database-design schema

如果我使用表的主键作为另一个表的主键,它仍然是外键吗?

e.g。

两张桌子专辑和特别优惠

AlbumId是两者中的主键

如何使用主键外键表示法表示此关系?

3 个答案:

答案 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...
);