【问题标题】:multiple column values in mysqlmysql中的多个列值
【发布时间】:2013-10-17 13:03:15
【问题描述】:

我需要创建一个包含列的“电影”表:

ID  Title  Description  Category etc

还有一个名为“Movie_Categories”的内容,例如

ID  Category
1   Action
2   Adventure
3   Triller

但由于电影表中的类别将有多种选择,因此正确的方法是什么?

我应该像有人在这篇帖子中所说的那样使用逗号分隔值Multiple values in column in MySQL 还是有更好的方法?

【问题讨论】:

    标签: mysql multiple-value


    【解决方案1】:

    这是一个多对多的关系。

    你需要一个连接表来使它正确,例如:

    CREATE TABLE film_category (
      category_id int,
      film_id int,
      PRIMARY KEY (category_id, film_id)
    );
    

    【讨论】:

      【解决方案2】:

      不要使用逗号分隔的值。从来没有。

      话虽如此。请记住,当您有所谓的多对多关系时,即一个类别可以有很多电影,而一个电影可以有很多类别的关系,您将始终需要生成一个附加表。

      此表只需要其他 2 个表的主键,并且将有一个复合键。

      所以架构最终会是:

      • 电影(ID、标题、说明、类别)
      • 类别(ID,类别)
      • Movies_Categories(ID_Movie, ID_Category)

      粗体是主键。

      为了获得电影的所有类别,您只需连接三个表中的每一个。

      关于拥有多值字段的最后一条评论是,您的表将不在First Normal Form 中,这迟早会给您带来很多麻烦。

      【讨论】:

        【解决方案3】:

        最后要做的是通过存储逗号分隔值来创建一个非规范化表。 *您应该有一个电影表和一个类别表。 您应该创建一个映射表,将 movieId 映射到 categoryId*

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-10-28
          • 2011-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多