引用两个表的外键

时间:2014-04-20 02:52:03

标签: oracle database-design foreign-keys

我已经在SO和其他网站上阅读了其他答案,但无法找到解决方案,或者我可能无法理解。

问题在于:

我的数据库中有这3个表

MOVIE (Primary Key movie_id)   
(movie_id, movie_name, release_date, running_time, rating, ranking genre_id) 

PEOPLE(Primary Key people_id)   
(people_id, title, family_name, given_name, gender, date_of_birth)

AWARD(Primary Key award_id)    
(award_id, organization_id, title, year, winner)

现在问题是Award表的winner属性。 根据问题陈述,奖励可以颁发给电影或个人。

因此,根据我的理解,winner表的AWARD属性应该是FOREIGN KEY表的PRIMARY KEYMOVIE/PERSON

我读到的其他解决方案建议为表格制作超类型,但在这里我没有电影和人物之间的任何相似性(没有普通的超类)。关于如何在这种情况下进行的任何建议?

1 个答案:

答案 0 :(得分:1)

AWARD可以是PERSON_AWARD和MOVIE_AWARD的超级类型,因为奖项属于(至少)两种类型。 (一个人不能赢得'最佳影片')。所以PERSON_AWARD是(award_id,胜利者),其中获胜者是PEOPLE的外键。 MOVIE_AWARD是(award_id,获胜者),其中获胜者是MOVIE的外键。