看了“灵感之源”关于数据库空值问题的想法,表示赞同

博客认为设计数据库时应绝对不允许空值存在。空值在业务模型中无意义,会增加外界应用程序编程复杂性,不利于关系与Object的映射。空值问题应由数据库设计时解决,而非在应用程序数据访问层处理,这关乎现实世界的建模。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人观点,仅供参考。
设计数据库时,数据库中应该绝对不允许空值的存在!

  因为空值在实际的业务模型中,是不允许存在的,因为它没有任何意义,目前的数据库系统都提供了空值的功能,这是经过数学检验的关系数据库本身功能之一,其作用如同指出一个通用的,表示“没有”或“不存在”的意思,但我认为,这是关系型数据库本身思想中,所没有能够充分约束的问题之一。
  首先,数据库如果是作为独立的数据表达来看,有空值列,当然可以对外界的信息作出正确的反应,但如果数据库作为与外界交互的,并且内部有独立的业务表达逻辑时,就不应该允许空值列的出现,严格的说,在对于外界的应用程序中,是不允许空值列的出现的,因为这不但要求外界应用程序需要再求一次判断,并且还要求了外界应用程序能针对类似的状况进行处理,很明显地,增加编程的复杂性。
  其次,在对象模型中,一个固定的对象有N个固定的属性,一般情况下,根据所有的属性的组合,我们可以寻找到指定的对象,如果对象的属性发生变化,并不影响该对象本身,但如果属性有了增加或减少,就会改变对象的类。
在数据库中的关系映射到Object也是一样,空值属性在某些情况会被认同为该属性并不存在(虽然它会突然又有了,但这应该作为该对象的状态而不是对象出现),这十分不利于关系与Object的映射,
  在java中的,有O/R可以对象和关系进行转换,.net中虽然目前没有相应的并很成熟的工具,但我觉得,采取OO的思想仍是必要的,毕竟,对事物的描述是一个复杂的过程,尤其是在开发大型的数据库上,最现实的问题就是,业务逻辑的规则,将严重地影响编程效率。

  所以,空值的问题,应该由数据库本身设计时就解决掉,而不应该在应用程序的数据访问层中进行处理。

  灵感之源的说法是对的,我表示赞同。并且,无论何种情况下,数据库中,都必须解决空值问题,因为任何存储的数据类型都应该是固定,VB6中的通用变量带来的效率及编程逻辑上的麻烦,相信对VB研究的人都比较明白,这已经不仅仅是一个良好习惯和规范性的问题,更多的是对现实世界的建模问题。

转载于:https://www.cnblogs.com/William_Fire/archive/2004/06/27/19046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值