3

我想创建一个带有自定义字段的 DVD 数据库 (MySQL),这意味着用户应该能够添加他自己的信息字段来对他的 DVD 进行编目。我只是提供所需的属性,例如:

 - ID
 - Title

用户可以添加自己使用的字段,例如

- Actors
- Year
- Genre
- Plot
- etc

现在,应对这一挑战的最佳做法是什么?我有一些想法:

  1. 更改表并添加属性(可能的数据丢失)
  2. 使用临时表(性能较低)

有更好的主意吗?

4

3 回答 3

3

我会使用另一个包含 dvd_id、field_name、value 的表并将您的所有自定义字段存储在那里。这使您不必在每次添加或删除新字段时更改表​​。

于 2012-08-11T23:59:45.960 回答
0

如果我要做那个任务,我会做一个像这样的布局

电影 move_id | 标题

movie_has_attribute 电影 ID | 属性ID

属性attribute_id | 姓名 | 价值

像这样,您可以使用 join 语句通过 movie_id 获取所有属性和值。我希望你的问题是正确的。

于 2012-08-12T00:16:04.657 回答
0

您应该试用 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"
            }';
于 2017-07-03T20:14:00.280 回答