我想创建一个带有自定义字段的DVD数据库(MySQL),这意味着用户应该能够添加自己的信息字段来对他的DVD进行编目。我只是提供所需要的属性,例如:动态数据库表格属性(最佳做法)
- ID
- Title
用户可以添加字段供自己使用像
- Actors
- Year
- Genre
- Plot
- etc
现在,什么是对这一挑战的最佳做法是什么?我有一些想法:
- 改变表并添加属性(可能造成数据丢失)
- 使用临时表(性能以下)
是否有更好的主意吗?
我想创建一个带有自定义字段的DVD数据库(MySQL),这意味着用户应该能够添加自己的信息字段来对他的DVD进行编目。我只是提供所需要的属性,例如:动态数据库表格属性(最佳做法)
- ID
- Title
用户可以添加字段供自己使用像
- Actors
- Year
- Genre
- Plot
- etc
现在,什么是对这一挑战的最佳做法是什么?我有一些想法:
是否有更好的主意吗?
我会使用另一个包含dvd_id,field_name,value的表并将所有自定义字段存储在那里。这使您无需每次添加或删除新字段时都必须更改表格。
,如果我是这样做的任务,我会做一个布局像
电影 move_id |标题
movie_has_attribute movie_id | attribute_id
属性 attribute_id |名称|值
像这样,您可以通过使用join语句获取movie_id的所有属性和值。我希望我的问题正确。
你应该试试MySQL 5.7及其JSON data type。
您可以使用它来定义用户定义属性的半结构集合。
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"
}';
似乎非常类似:http://stackoverflow.com/questions/7814627/user-defined-fields-php-mysql – 2012-08-12 00:04:14
给他们自己的模式,并让他们自己设计的表 – 2012-08-13 17:43:41
可能重复[你将如何设计数据库以允许用户定义的模式](http://stackoverflow.com/questions/923778/how-would-you-design-your-database-to-allow-user-defined-schema) – 2012-08-13 17:44:25