我正在为需要存储通用“对象”和相关信息的用户开发数据库软件。 (使用Web界面来抽象SQL)
首先,在这种情况下,我所说的“对象”是一个“事物”,可以由任意数量的输入字段定义,例如:
“客户”对象可能由
定义这些对象由用户设计。因此,我需要一种在SQL中定义任意对象的方法。
到目前为止,我提出的解决方案是这样的:
CREATE TABLE object_name
(
p_key SERIAL PRIMARY KEY,
name varchar UNIQUE NOT NULL
);
CREATE TABLE field_type
(
p_key SERIAL PRIMARY KEY,
type varchar UNIQUE NOT NULL
);
CREATE TABLE field_name
(
p_key SERIAL PRIMARY KEY,
name varchar UNIQUE NOT NULL
);
CREATE TABLE object
(
object_name_id integer REFERENCES object_name (p_key),
field_type_id integer REFERENCES field_type (p_key),
field_name_id integer REFERENCES field_name (p_key),
PRIMARY KEY (object_name_id, field_type_id, field_name_id)
);
基本思想是使用联结表来定义用于定义对象的字段数量/类型。 (这只是一个非常基本的例子)
我遇到了一些与此解决方案有关的问题。
用户希望对象的字段引用另一个对象。例如,在我之前展示的“客户”示例中,“公司”字段可能是“公司”对象列表中的选择。这会导致一个问题,因为可以想象“公司”还有一个引用“客户”字段的情况。意思是,会有循环引用......首先会创建哪个对象?
使用SQL来定义对象甚至是合理的方法吗?或者定义一个对象更适合XML文件?
假设可以任意定义对象,那么存储任意对象实例的最佳方法是什么?
任何面包屑都会有所帮助。旁注:我正在考虑使用Django和postgresql作为框架。
谢谢。