我是數據庫新手,特別是MySQL
。假設我需要在MySQL
中存儲平坦的鍵值數據結構。每個數據結構都有一些必填字段和一些事先未知的可選字段,並且可能會頻繁更改。如何在MySQL中存儲鍵值對?
我需要通過其中一個必填字段檢索所有數據結構,並可能將其刪除。
所以我想結構存儲這些數據,這樣的一個表: (只是從網上覆制粘貼,而不是工作的代碼)
CREATE TABLE my_data_structures (
my_data_structure_id INT NOT NULL,
my_required_field1 VARCHAR NOT NULL,
my_required_field2 INT NOT NULL,
PRIMARY KEY (my_data_structure_id)
)
CREATE TABLE my_optional_fields (
my_optional_field_name VARCHAR NOT NULL,
my_optional_field_value VARCHAR NOT NULL,
FOREIGN KEY (my_data_structure_id) REFERENCES my_data_structures(my_data_structure_id)
)
請問這種做法是否合理?如何爲第二個表定義primary key
?
看看[EAV模型](https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model) –
@PaulSpiegel謝謝。只是搜索了一下。許多人說'EAV'是EVIL。 – Michael
如果沒有提供合適的替代品,很容易說出一些事情是邪惡的。但是 - 我不說你應該使用EAV - 我說,你正在嘗試做的**是** EAV模型。 –