我的数据库中有两个表。一个叫forms
,一个叫form_fields
。 form_fields
将包含任何表单可能包含的字段列表... first_name,last_name,email,address,hieght,weight等... forms
将是可以列出的唯一表单列表form_fields
中可能不包含任何数量的这些字段。
所以,我的问题是,使用form_fields
中的数据与forms
相关的标准做法是什么?
我应该
a)在forms
中创建一个名为field_array
的列,并创建一个与form_fields
中每个字段的索引号(主键)相关的索引数组?
或
b)创建关系表,并为所选的每个表单字段插入两列的行。一列是表单唯一索引,另一列是所选表单字段唯一索引?
我觉得在forms
中填充逗号分隔数字的字段有点奇怪。我已经独立地在这几年了,所以如果对这些类型的交叉表关联有一个经过验证的方法,我并不总是积极的。
提前致谢。
答案 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
...
);