将单元格拆分为多行

时间:2021-03-29 12:41:08

标签: mysql csv erd

我有一个包含 1000 部电影及其相应类型的 CSV 文件,大多数电影有不止一种类型,作为规范化过程的一部分,我必须拆分类型单元格,以便每个单元格中只有一种类型。

下图最能说明我在说什么以及我想要实现的目标。

是否有一种有效的方法可以根据流派的数量复制 movieID 单元格并将流派拆分为这些单元格,而不是手动执行此操作?

例如,movie1 有 3 个流派:Drama,Romance,Thriller。我想要实现的是:“movie1”的3个单元格和相应的流派:DramaRomanceThriller

MovieID and Genre

Database ERD

1 个答案:

答案 0 :(得分:0)

您应该创建 3 个表。一种用于电影,一种用于类型,一种用于电影和类型之间的查找。

CREATE TABLE movies
    id INT PRIMARY KEY,
    name VARCHAR(100),
    ... whatever else you need ...;

CREATE TABLE genres
    id INT PRIMARY KEY,
    name VARCHAR(100),
    ... whatever else you need ...;

CREATE TABLE movie_genre
    movie_id INT,
    genre_id INT;

对于您的示例,表格将包含:

INSERT INTO movies (id, name) VALUES (1, 'movie1');

INSERT INTO genres(id, name) VALUS (1, 'Drama'),(2, 'Romance'),(3, 'Thriller');

INSERT INTO movie_genre (movie_id, genre_id) VALUES (1, 1),(1,2),(1,3);

我添加了一个工作小提琴

http://sqlfiddle.com/#!9/0dfd42/1