事情是这样的:
CREATE TABLE forms (
form_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, -- the UID of this form
owner INT, -- the user who "owns" the form
PRIMARY KEY (form_id)
);
CREATE TABLE fields (
form_id BIGINT UNSIGNED NOT NULL,
field VARCHAR(10), -- the field name
PRIMARY KEY (form_id, field),
FOREIGN KEY (form_id) REFERENCES forms (form_id)
);
CREATE TABLE submissions (
submission_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
form_id BIGINT UNSIGNED NOT NULL,
field VARCHAR(10),
value BLOB, -- stores PHP's serialize($var)
PRIMARY KEY (submission_id),
FOREIGN KEY (form_id) REFERENCES forms (form_id),
FOREIGN KEY (form_id, field) REFERENCES fields (form_id, field)
);
我建议修改表单的设计在数据库中创建一个新的(副本)的形式,以免失效基于旧设计任何历史提交。
另一种最适合NoSQL并将其填充到MySQL中的东西。 – Leigh 2012-07-09 07:04:36