【发布时间】:2010-09-12 16:19:50
【问题描述】:
有人有在数据库中存储键值对的经验吗?
我一直在用这种类型的桌子:
CREATE TABLE key_value_pairs (
itemid varchar(32) NOT NULL,
itemkey varchar(32) NOT NULL,
itemvalue varchar(32) NOT NULL,
CONSTRAINT ct_primarykey PRIMARY KEY(itemid,itemkey)
)
那么例如可能存在以下行:
itemid itemkey itemvalue
---------------- ------------- ------------
123 Colour Red
123 Size Medium
123 Fabric Cotton
这种方案的问题在于提取数据所需的 SQL 语法相当复杂。 只创建一系列键/值列会更好吗?
CREATE TABLE key_value_pairs (
itemid varchar(32) NOT NULL,
itemkey1 varchar(32) NOT NULL,
itemvalue1 varchar(32) NOT NULL,
itemkey2 varchar(32) NOT NULL,
itemvalue2 varchar(32) NOT NULL,
. . .etc . . .
)
这将更容易和更快地查询,但缺乏第一种方法的可扩展性。 有什么建议吗?
【问题讨论】:
-
这个例子不是最优的,因为每件商品可能只有一种颜色、尺寸和面料,在这种情况下,您可以使用列作为属性。