数据库设计时是否允许空(null)的的疑问!!!

aspnet30 2008-11-08 07:17:29
数据库设计时是否允许空(null)的的疑问!!!
比如:会员类型(MemType),我设计时无非0,1,2三种,
或是否通过验证(IsCheck),无非是,是和否两种

为什么动网系统的数据库,这些值都允许为空,到时我页面还要多一个null的判断多不好啊,很疑问
...全文
690 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoursWTR 2008-11-10
  • 打赏
  • 举报
回复
为NULL的我都默认为0
我不需要NULL值,以前好像看过一篇报告说的是NULL值影响SQL性能
aspnet30 2008-11-09
  • 打赏
  • 举报
回复
那对于一个bit(bool)的类型,是允许为空还是不允许为空呢,我一般是不允许为空,然后给他设置默认值
Rail100 2008-11-09
  • 打赏
  • 举报
回复
我的做法,对text, image等大家伙就允许null,其他不允许
gengwanshanreally 2008-11-09
  • 打赏
  • 举报
回复
学习,顶
aspnet30 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sp1234 的回复:]
null的意思是“不知道”或者“不确定”。如果真是有意为之,那么一定是非常专业的。试想一下,如果这是一个疏忽,对于那些没经过自己测试也没有经过大量用户使用的系统也许说得过去,对于经过了大量用考验的系统一定在各个地方已经包括了对null的逻辑的特别判断和处理了。

因此,对于一个用户比较多、使用超过1年的系统,可以说null值得存在应该算是一种比较专业的设计,而不是疏忽的结果。

举个例子,你写设计一个用户注…
[/Quote]


strng(varchar)类型的,一般都是允许为空的,我现在主要疑问的是,如bit,或int类型的,是设计为允许为空,还是不允许为空,设置默认值

举个例子,会员类型,MemType,int类型,但会员类型我系统中无非是,0,1,2三种,难道我也要允许为空,而不设计为不允许为空,默认为0吗
vrhero 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sp1234 的回复:]
null的意思是“不知道”或者“不确定”。如果真是有意为之,那么一定是非常专业的。试想一下,如果这是一个疏忽,对于那些没经过自己测试也没有经过大量用户使用的系统也许说得过去,对于经过了大量用考验的系统一定在各个地方已经包括了对null的逻辑的特别判断和处理了。

因此,对于一个用户比较多、使用超过1年的系统,可以说null值得存在应该算是一种比较专业的设计,而不是疏忽的结果。

举个例子,你写设计一个用户注…
[/Quote]
大师举的例子并不恰当...用户体验是一回事,数据完整性又是一回事...

以楼主的例子而言,我实在看不出“会员类型”和“是否通过验证”有可null的必要...反而允许null会带来不必要的验证和程序的隐患...
笺香 2008-11-09
  • 打赏
  • 举报
回复
受益非浅呵
winner2050 2008-11-09
  • 打赏
  • 举报
回复
如果结果是bool型就从无,字段的值不是1或者true,程序就安装false来执行。

比如读取通过审核的文章

Select * From Article Where Pass=1

jikun6666 2008-11-09
  • 打赏
  • 举报
回复
学习了
风骑士之怒 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sp1234 的回复:]
null的意思是“不知道”或者“不确定”。如果真是有意为之,那么一定是非常专业的。试想一下,如果这是一个疏忽,对于那些没经过自己测试也没有经过大量用户使用的系统也许说得过去,对于经过了大量用考验的系统一定在各个地方已经包括了对null的逻辑的特别判断和处理了。

因此,对于一个用户比较多、使用超过1年的系统,可以说null值得存在应该算是一种比较专业的设计,而不是疏忽的结果。

举个例子,你写设计一个用户注…
[/Quote]
严重同意您的观点,向您好好学习!
  • 打赏
  • 举报
回复
对于null,有着一整套计算逻辑。例如null值与非null值得简单计算得到结果还是null值,在统计中则忽略,等等。SQL Server7中的null不完全符合逻辑,经过讨论之后在SQL Server2000中根据“不知道、不确定、不关心”的应有的逻辑计算概念进行了一些改变。可见null是SQL Server数据库中一个有意义的知识点,而不是简单的东西。
  • 打赏
  • 举报
回复
往往最复杂、最八股的设计就是拼凑书本上一大堆的流行模式,但是没有经过经过许多不同的挑剔用户、比较长一段商业运营检验的软件。

越是大的系统,越向初学者的那种简单直观的设计风格回归。所不同的是简单的形式下面其实它对细节更加全面恰当地设计过了,他有了比较完善的技术从而可以自由地体现最初“头脑风暴”所想到的一切需求。反倒是“中间阶段”的不成熟设计,过分强调技术而不强调需求。
  • 打赏
  • 举报
回复
null的意思是“不知道”或者“不确定”。如果真是有意为之,那么一定是非常专业的。试想一下,如果这是一个疏忽,对于那些没经过自己测试也没有经过大量用户使用的系统也许说得过去,对于经过了大量用考验的系统一定在各个地方已经包括了对null的逻辑的特别判断和处理了。

因此,对于一个用户比较多、使用超过1年的系统,可以说null值得存在应该算是一种比较专业的设计,而不是疏忽的结果。

举个例子,你写设计一个用户注册系统,其中你要求用户输入生日。用户可以不可以不输?如果他不输,就应该是null,如果你给一个所谓的“默认值”则非常不专业(当你的系统是多人开发时你如何让每一段程序都仔细地判断到底是所得到的默认值还是用户实际输入的值?)。

默认值固然省事,但是大多数时候显得很不科学,本来这个值是“不知道”或者“不确定”或者“不想输入”,你可以在界面上非常生硬地给出默认值,否则还可以很专业地允许空值。那种不在界面明确警告给用户已经给了默认值的做法,如果往往让挑剔的用户觉得很不友好。
wang8139 2008-11-09
  • 打赏
  • 举报
回复
现在很多系统都不在数据库里下功夫了, 系统中分为三层很中都在层里控制!
syc958 2008-11-09
  • 打赏
  • 举报
回复
以前我都是允许为空的不过现在开始设置默认值这样可以少做很多工作....
ljsheng 2008-11-09
  • 打赏
  • 举报
回复
不一定发别人 的东西就是好东西
koukoujiayi 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 aspnet30 的回复:]
那对于一个bit(bool)的类型,是允许为空还是不允许为空呢,我一般是不允许为空,然后给他设置默认值
[/Quote]
对,应该这样!!
koukoujiayi 2008-11-08
  • 打赏
  • 举报
回复
另一种说发NULL没有占用实际磁盘空间!!
greatverve 2008-11-08
  • 打赏
  • 举报
回复
细节上见功夫,学习。
brallow 2008-11-08
  • 打赏
  • 举报
回复
NULL是一种状态,如果没有这种状态就不允许。
这是一般的原则,在实际项目的过程中一般是根据情况而定的。原则上不建议很多字段允许为空。

但是对于不是主外键、唯一键,或者其它非常重要的字段,这样的设置可能相当的方便,尤其对于测试阶段而言。
加载更多回复(3)

62,017

社区成员

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

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

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

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