1

可能重复:
多对多关系中的问题

我有一张电影表和一张类别表。我想为一部电影再注册一个类别。和几部电影的类别。也就是说,一个关系N:N。我如何在php和Mysql中做到这一点?

例如:类别 1 -> 电影 1 和电影 2

电影 2 -> 类别 1 和类别 2

4

2 回答 2

3

对于多对多关系,您需要第三个表,称为联结表。

所以它看起来像这样

Movie
id | desc

Category
id | desc

MoviesCategories
id | movieID | categoryId

您的选择将打开MoviesCategories,看起来像这样

SELECT * 
FROM
 MoviesCategories INNER JOIN Category ON MoviesCategories.CategoryId = Category.Id 
                  INNER JOIN movie ON MoviesCategories.MovieID = Movie.ID
于 2012-11-23T17:07:21.807 回答
2

你需要一个表来处理这种关系。像这样:

MovieToCategory
    ID
    CategoryID
    MovieID

或者,您可以创建一个复合主索引,仅允许每部电影进行一次类别组合:

MovieToCategory
    CategoryID
    MovieID
于 2012-11-23T17:07:06.363 回答