数据库设计。关于是否允许为空

xingshungames 2010-03-31 10:10:28
一直有个问题迷惑我……

就是对于什么样的数据,在数据库字段设计的时候可以允许为空。

举个例子,在我注册用户时,有一些资料是可以不输入的(有文本框,但是可以空着不填),于是我空着不填。注册完成之后,查看数据库,我那些空着不填的数据在数据库中对应的是""而不是NULL,对于这样的字段,在数据库设计时,那个允许空的复选框,选还是不选呢?我觉得他没有为空的机会啊!

还有就是,比如说注册时间,我在数据库相应的字段上是设定了默认值的,getdate(),对于这种有默认值的,在数据库设计时,那个允许空的复选框,选还是不选呢?我也觉得他没有为空的机会啊!
...全文
1044 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
xianfz 2010-03-31
  • 打赏
  • 举报
回复
还是尽量不要有Null,因为他啥都不是,你到时候搜索都不是很一样,何必呢
sunnj87 2010-03-31
  • 打赏
  • 举报
回复
感觉只要主要的数据在程序中检查不空就行了。
其它的数据库里有默认值的对于设置空和不空应该是没什么影响的
maomao90 2010-03-31
  • 打赏
  • 举报
回复
具体情况具体对待,根据需求吧
alaigo 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 foren_whb 的回复:]
举例说吧,学生表,有编号,姓名,性别,年龄,出生年月日,家庭住址,家庭电话,父母姓名等等
这里,其实年龄完全可以不要,有的话更直观,没有的话,根据出生年月日一下子也能算出来,所以可以为空。
总之,一些不重要的、可有可无的信息,或者是存在可以替代或推导的信息,就可以为空
[/Quote]
我基本是这么做的。觉得这样随便一些,涵盖广一些
porschev 2010-03-31
  • 打赏
  • 举报
回复
一般给默认值
happy184 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amandag 的回复:]
个人不喜欢在数据库里放null的数据,总是给字段默认值,这样取数据不容易出错

不知道DBA的想法如何
[/Quote]
有同感。把字段都设成notnull 然后加上默认值。
xingshungames 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 amandag 的回复:]
所有字段都有默认值

char 给 空字符串,剩下的类型给合理的数字即可,所有的字段都不允许null
[/Quote]

学习了!!!

谢谢!!
amandag 2010-03-31
  • 打赏
  • 举报
回复
所有字段都有默认值

char 给 空字符串,剩下的类型给合理的数字即可,所有的字段都不允许null
xingshungames 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 amandag 的回复:]
默认值可以是空字符串
[/Quote]

所有字段都有默认值,然后那些没有特别默认值的都给设定成“”,然后所有的字段都不允许为空?
loveyan924 2010-03-31
  • 打赏
  • 举报
回复
感觉还是给默认值好,,因为以后取数据的时候不容易出错的。。。。。。。。。。。
xingshungames 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 luqc1985 的回复:]
那是你insert 的时候根本没有判断是否为“” 赋值null
如果是字符类型是没有问题。万一是整型或者数字型的就可能报错。
一般而已其实只关注不允许为空的的情况了
[/Quote]
谢谢!

这么说起来,是不是在insert或者update数据之前,应先将文本框传递过来的数据检查一遍是否为空,然后转化成相应的类型,然后在insert或者update到数据库中?
xingshungames 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 foren_whb 的回复:]
举例说吧,学生表,有编号,姓名,性别,年龄,出生年月日,家庭住址,家庭电话,父母姓名等等
这里,其实年龄完全可以不要,有的话更直观,没有的话,根据出生年月日一下子也能算出来,所以可以为空。
总之,一些不重要的、可有可无的信息,或者是存在可以替代或推导的信息,就可以为空
[/Quote]

有些数据虽然不是主要数据,也可以不填,但是在正常操作情况下,他保存到数据库时候是empty而不是null,像这种没有机会为null的数据,是否设定允许他为空?

有默认值的字段,按理说也是没有机会为null的数据,是否设定他允许为空?
yan267 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xingshungames 的回复:]
引用 3 楼 pengwu311 的回复:
看你的要求了,一般一些主要的数据是不能为空的.


确实有些次要数据可以不填,但是不填的后果就是。文本框会给实体传递一个empty值(不是null),这个empty值保存的数据库之后,是""而不是NULL。也就是说,这个字段是没有机会为空的。既然没有机会为空,我为什么还要允许它为空呢?

默认字段设定之后。是否还要允许他为空呢?求高人!
[/Quote]

那是你insert 的时候根本没有判断是否为“” 赋值null
如果是字符类型是没有问题。万一是整型或者数字型的就可能报错。
一般而已其实只关注不允许为空的的情况了
zhang8xiao8liang 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xingshungames 的回复:]
引用 3 楼 pengwu311 的回复:
看你的要求了,一般一些主要的数据是不能为空的.


确实有些次要数据可以不填,但是不填的后果就是。文本框会给实体传递一个empty值(不是null),这个empty值保存的数据库之后,是""而不是NULL。也就是说,这个字段是没有机会为空的。既然没有机会为空,我为什么还要允许它为空呢?

默认字段设定之后。是否还要允许他为空呢?求高人!
[/Quote]deffs
别样苍茫 2010-03-31
  • 打赏
  • 举报
回复
无关紧要的就可空,如果跟其他数据表有关联,那就不行了,必须得有数据才行。
觉v醒 2010-03-31
  • 打赏
  • 举报
回复
一般我也加默认值
丰云 2010-03-31
  • 打赏
  • 举报
回复
举例说吧,学生表,有编号,姓名,性别,年龄,出生年月日,家庭住址,家庭电话,父母姓名等等
这里,其实年龄完全可以不要,有的话更直观,没有的话,根据出生年月日一下子也能算出来,所以可以为空。
总之,一些不重要的、可有可无的信息,或者是存在可以替代或推导的信息,就可以为空
amandag 2010-03-31
  • 打赏
  • 举报
回复
默认值可以是空字符串
凤凰涅檠 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amandag 的回复:]

个人不喜欢在数据库里放null的数据,总是给字段默认值,这样取数据不容易出错

不知道DBA的想法如何
[/Quote]

同意
xingshungames 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pengwu311 的回复:]
看你的要求了,一般一些主要的数据是不能为空的.
[/Quote]

确实有些次要数据可以不填,但是不填的后果就是。文本框会给实体传递一个empty值(不是null),这个empty值保存的数据库之后,是""而不是NULL。也就是说,这个字段是没有机会为空的。既然没有机会为空,我为什么还要允许它为空呢?

默认字段设定之后。是否还要允许他为空呢?求高人!
加载更多回复(12)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧