我想創建一個帶有自定義字段的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