如何在关系数据库中建模子部分?

时间:2012-03-07 01:10:59

标签: mysql sql database relational-database data-modeling

我想以某种方式对游戏类型进行建模,使得类型可以包含子节,例如
类型|子类型
行动>动作冒险
行动>射手
模拟>车辆模拟

你可以想象我不会将Shooter作为Simulation的子部分,等等。

我想这样做,但有更好的方法:
类型(类型{PK},SubGenre {FK})
SubGenre (SubGenre {PK},类型{FK})

2 个答案:

答案 0 :(得分:2)

我可能会创建类型的Genres和SubGenres表:

类型(GenreID {PK},GenreName)

SubGenre (SubGenreID {PK},GenreID {FK},SubGenreName)

没有理由在您的Genres表中将SubGenre作为FK。这限制了每个子类型的一种类型。

答案 1 :(得分:1)

我认为你需要:

Genres 
------
Genre PK 


SubGenres
---------
SubGenre  PK
Genre        FK

或者这个(如果2种类型的机会有同名的子类型),例如:

行动>空间
模拟>空间

Genres 
------
Genre PK 


SubGenres
---------
Genre     PK  FK
SubGenre  PK