【问题标题】:Foreign Key that refers two tables引用两个表的外键
【发布时间】:2014-06-04 08:49:29
【问题描述】:

我已阅读 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 属性上。 根据问题陈述,奖项可以授予电影或个人。

因此,据我了解,AWARD 表的winner 属性应该是MOVIE/PERSON 表的FOREIGN KEYPRIMARY KEYs。

我阅读的其他解决方案建议为表格创建一个超类型,但在这里我在 Movie 和 Person 之间没有任何相似之处(没有共同的超类)。关于如何在这种情况下进行的任何建议?

【问题讨论】:

    标签: oracle database-design foreign-keys


    【解决方案1】:

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

    【讨论】:

    • 完美。说得通。 **** 我真愚蠢.. 谢谢迈克。干杯!!
    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 2021-09-12
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2011-01-11
    相关资源
    最近更新 更多