两个子集表在一对一关系中作为外键共享来自另一个表的相同主键

时间:2013-08-18 02:28:01

标签: database relationship relational

我一直试图在任何地方找到我的问题,但我找不到答案。 (这里的一切都是一个例子) 我有一张产品表...

产品(父表)

idProduct(PK) _ __ _ ProdName _ ___ Prod_Price _ ___ Prod_Type

    1             Top Gun          5.95         Movie
    2        Great expectations    12.45        Book
    3            Fifa 2013         14.99        Game
    4              Ghost           6.75         Movie

电影(儿童表1)

idMovie(PK) _ ___ idProduct(FK) _ ___ Mov_Lenght _ ___ Mov_Category

    1               1               93             Action
    2               4               87             Drama

BOOKS(儿童表2)

idBook(PK) _ ___ idProduct(FK) _ ___ idAuthor(FK) _ ___ Book_Number_Pages

    1               2               43                500

GAMES(儿童表3)

idGame(PK) _ ___ idProduct(FK) _ ___ Game_Category _ ___ Game_Console

    1               3               Sports           XBOX 360

问题是我希望 PRODUCTS 表与子表之间建立一对一的关系。 因此,如果来自 PRODUCTS idProduct 上的主键作为外键在子表上,则该值不会在同一个表或其他两个表上重复(如一对一,但有多个表)。 我正在使用MySQL WorkBench作为RDBMS我必须指定的规则才能发生。

感谢您的帮助

抱歉我的英语,而不是我的第一语言。

1 个答案:

答案 0 :(得分:0)

您可以将子表中的外键作为主键,这样就可以解决子表中的一对多。

关于跨子表,也许您可​​以在插入记录之前使用triggers检查其他地方是否存在PK。