我正在尝试在表之间实现IS-A
关系。
假设我有singer
和band
artists
我希望每个artist
都有一个由band
或singer
继承的ID。
在我写的代码中,似乎band
和singer
可能具有相同的ID
。我该如何预防呢?有没有更好的方法来实现这个?阅读材料当然是受欢迎的。
CREATE TABLE artists
( id number not null primary key
);
CREATE TABLE singers
( id number not null primary key,
name char(50) not null,
last_name char(50) not null,
foreign key(id) references artists(id)
);
CREATE TABLE bands
( id number not null primary key,
name char(50) not null unique,
contact char(50) not null,
participants number not null,
check (participants > 0),
foreign key(id) references artists(id)
);
insert into artists(id) values(1);
insert into singers(id, name, last_name) values(1, 'an', 'Bish');
insert into bands(id, name, contact, participants) values(1,'un','an',2);
你可以看到我能够在相同的“父母”下添加一个乐队和一个具有相同ID的歌手。