有人有在数据库中存储键-值对的经验吗?
我一直用这种桌子:
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 . . .
)
这将使查询更加容易和快速,但是缺乏第一种方法的可扩展性。 有什么建议吗?