通过内爆成一个字符串,你正在非规范化你的数据。我建议不要这样做,尤其是在这种情况下。使用单独的表格来管理问题和调查之间的联系。
我觉得这有点奇怪,因为我还没有完全理解你想要做什么。我认为您正在创建一个在线调查 - 一个具有单一目的的调查,而不是创建许多不相关调查的工具。所以如果我的假设是正确的,我会做更多的表
TABLE Surveys (
SurveyId INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
SurveyTitle VARCHAR(100) NOT NULL,
SurveyDescription TEXT,
Owner VARCHAR(100),
BLAH BLAH BLAH
);
TABLE Questions (
QuestionId INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
Version INT UNSIGNED NOT NULL,
Question TEXT,
OrderNumber INT UNSIGNED,
Enabled ENUM('Yes', 'No') DEFAULT 'Yes'
);
TABLE SurveyQuestions (
SQId INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
SurveyId INT UNSIGNED NOT NULL,
QuestionId INT UNSIGNED NOT NULL,
Version INT UNSIGNED NOT NULL
);
TABLE QuestionHistory (
QuestionId INT UNSIGNED, // notice we dont have a primary key i would probably do a composite key on QuestionId and Version
Version INT UNSIGNED NOT NULL,
Question TEXT,
OrderNumber INT UNSIGNED,
Enabled ENUM('Yes', 'No') DEFAULT 'Yes',
DateSuperceded DATETIME
);
您还需要一个用于调查对象及其回复的表格,回复可能应该链接到 SurveyQuestions 表格。最好在问题历史记录表上使用自动 ID - 但这取决于您到底想做什么。
这是一个比我想发布的更长的答案。如果我混淆了这个问题而不是澄清了,我深表歉意。如果您想发布您正在尝试创建的更详细的规范,那么我可以提供更好的建议。