数据库交叉表关联逻辑

时间:2011-12-08 16:43:11

标签: database database-design relational-database

我的数据库中有两个表。一个叫forms,一个叫form_fieldsform_fields将包含任何表单可能包含的字段列表... first_name,last_name,email,address,hieght,weight等... forms将是可以列出的唯一表单列表form_fields中可能不包含任何数量的这些字段。

所以,我的问题是,使用form_fields中的数据与forms相关的标准做法是什么?

我应该

a)在forms中创建一个名为field_array的列,并创建一个与form_fields中每个字段的索引号(主键)相关的索引数组?

b)创建关系表,并为所选的每个表单字段插入两列的行。一列是表单唯一索引,另一列是所选表单字段唯一索引?

我觉得在forms中填充逗号分隔数字的字段有点奇怪。我已经独立地在这几年了,所以如果对这些类型的交叉表关联有一个经过验证的方法,我并不总是积极的。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您应该使用关联或关系或联结表方法。

您的新表可能是:

CREATE TABLE Forms_Using_Fields
(
    FormID    INTEGER NOT NULL REFERENCES Forms(Id),
    FieldID   INTEGER NOT NULL REFERENCES Form_Fields(Id),
    PRIMARY KEY (FormId, FieldId),
    Seqno     INTEGER NOT NULL,  -- Sequence number of field on form
    ...
);