我似乎经常发现自己想要在MySQL数据库的同一列中存储多种类型的数据(通常是整数和文本)。我知道这很糟糕,但它发生的原因是我正在存储人们对问卷中问题的回答。有些问题需要整数回答,有些需要文本回答,有些可能是从列表中选择的项目。
我过去所采用的方法是:
将所有内容存储为文本,并在以后需要时转换为 int(或其他类型)。
有两个列-一个为文本,一个为整数。然后,每行每个响应只填写一个,将另一个列保留为空。
有两个数据表 - 一个用于文本响应,一个用于整数响应。
虽然我并不真的喜欢其中的任何一种处理方法,但我有一种感觉,一定有更好的方法来处理这种情况。
为了让它更具体化,这里举一个我可能拥有的表格的例子:
CREATE TABLE question (
id int(11) NOT NULL auto_increment,
text VARCHAR(200) NOT NULL default ,
PRIMARY KEY ( id )
)
CREATE TABLE response (
id int(11) NOT NULL auto_increment,
question int (11) NOT NULL,
user int (11) NOT NULL,
response VARCHAR(200) NOT NULL default
)
或者,如果我选择使用上面的第二种选项:
CREATE TABLE response (
id int(11) NOT NULL auto_increment,
question int (11) NOT NULL,
user int (11) NOT NULL,
text_response VARCHAR(200),
numeric_response int(11)
)
如果我使用选项3,将会有一个responseInteger表和一个responseText表。
这些方法中有没有正确的方法,或者我错过了一个明显的替代方案?