このようなもの:
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)
);
フォームのデザインを変更した場合は、データベースに新しい (コピー) フォームを作成して、古いデザインに基づく過去の送信が無効にならないようにすることをお勧めします。