我想创建一个带有自定义字段的DVD数据库(MySQL),这意味着用户应该能够添加自己的信息字段来编目他的DVD。我只提供所需的属性,例如:
- ID
- Title
用户可以添加字段供自己使用,例如
- Actors
- Year
- Genre
- Plot
- etc
现在,应对这一挑战的最佳实践是什么?我有一些想法:
- 更改表并添加属性(可能丢失数据)
- 使用临时表(性能较低)
有更好的主意吗?
我会使用另一个包含dvd_id、field_name、值和存储所有自定义字段的表。这使您不必在每次添加或删除新字段时更改表。
你应该尝试MySQL 5.7及其JSON数据类型。
您可以使用它来定义用户定义属性的半结构化集合。
CREATE TABLE Dvd (
id SERIAL PRIMARY KEY,
title text NOT NULL,
attr JSON NOT NULL
);
INSERT INTO Dvd
SET title = 'Wonder Woman',
attr = '{"Actors": ["Gal Godot", "Chris Pine"],
"Year": "2017",
"Genre": "Action",
"Plot": "See Captain America: The First Avenger"
}';
如果我要做这个任务,我会做一个这样的布局
电影move_id |标题
movie_has_attributemovie_id |attribute_id
属性attribute_id |姓名 |价值
像这样,您可以使用 join 语句按movie_id获取所有属性和值。我希望我答对了你的问题。