我想创建一个用于存储对象的SQLITE数据库。这些对象具有多个值的属性,为此我创建了单独的表。
CREATE TABLE objs
(
id INTEGER,
name TEXT
);
CREATE TABLE prop1
(
id INTEGER,
value TEXT,
FOREIGN KEY(id) REFERENCES objs(id)
);
CREATE TABLE prop2
(
id INTEGER,
value TEXT,
FOREIGN KEY(id) REFERENCES objs(id)
);
对于由于JOIN而得到的 id 的列表,我想查找这两个属性的值。为此,我正在执行JOIN,然后执行另一个带有'prop1'表的JOIN。然后,我对“ prop2”表重复此操作。我怀疑这是低效的(联接太多)并且可以改进。我有两个问题。
答案 0 :(得分:2)
我建议采用以下结构。
CREATE TABLE objs
(
id INTEGER,
name TEXT
);
CREATE TABLE properties
(
id INTEGER,
Property_name varchar(50),
Property_type varchar(10),
value TEXT,
FOREIGN KEY(id) REFERENCES objs(id)
);
在不同的表中存储所有不同类型的属性是一个非常糟糕的主意。您可以只存储属性名称和类型(字符串,数字等)。您还可以添加多个值列,例如numeric_value,string_value等。