首页 / MYSQL / MySQL列有各种类型
MySQL列有各种类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL列有各种类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1603字,纯文字阅读大概需要3分钟。
内容图文
![MySQL列有各种类型](/upload/InfoBanner/zyjiaocheng/909/ddf5245caf8940c4999b2dcb22f49a4f.jpg)
我似乎经常发现自己想要在MySQL数据库的同一列中存储多种类型的数据(通常是整数和文本).我知道这很糟糕,但它发生的原因是我存储了人们在问卷中提出问题的回复.有些问题需要整数响应,有些需要文本响应,有些可能是从列表中选择的项目.
我过去采取的方法是:
>将所有内容存储为文本,并在以后需要时转换为int(或其他).
>有两列 – 一列用于文本,一列用于int.然后你只需每个响应每行填充一个,并将另一个保留为null.
>有两个表 – 一个用于文本响应,一个用于整数响应.
我不喜欢其中的任何一个,但我觉得必须有一个更好的方法来处理这种情况.
为了使它更具体,这里是我可能拥有的表的一个例子:
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 ''
)
或者,如果我使用上面的选项2:
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表.
这些都是正确的方法,还是我错过了一个明显的选择?
解决方法:
[选项2]不是最正常化的选项[如@Ray声称].最标准化的将没有可空字段,显然选项2将要求每行都为空.
在您的设计中,您必须考虑使用情况,您将要执行的查询以及您要编写的报告.您想同时对所有数字响应进行数学运算吗?即WHERE numeric_response不是NULL?可能不太可能.
更有可能的是,什么是平均响应WHERE问题= 11.在这些情况下,您可以选择INT表或INT列,两者都不会比另一个更容易.
如果你确实做了两个表,那么你很可能会不断地将它们联合起来解决问题,例如,有多少问题都有答案等.
您能看到您要求数据库回答的问题如何开始推动设计?
内容总结
以上是互联网集市为您收集整理的MySQL列有各种类型全部内容,希望文章能够帮你解决MySQL列有各种类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。