编辑“︁
空值 (SQL)
”︁(章节)
跳转到导航
跳转到搜索
脚本错误:没有“Mainspace editnotice”这个模块。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 歷史 == EF Codd 在一篇 1975年的ACM - SIGMOD FDT報告的論文中提到了空值作為表示關係模型中缺失數據的一種方法。Codd最常被引用的與Null語義相關的論文(如 SQL中所採用的)是他 1979年在 ACM Transactions on Database Systems上發表的論文,其中他還介紹了他的 Relational Model/Tasmania,儘管其他許多提議後面的文章一直很模糊。1979年他的論文2.3節詳細描述了空值在做算術運算時散播的語義,以及比較空值時使用三值(三元)邏輯的比較;他還詳細說明了對其它集合操作的空值處理(後者目前仍存在爭議)。在數據庫理論界,Codd最初的建議(1975,1979)現在被稱為“Codd tables”。 Codd後來強化了他的要求,即在 ''ComputerWorld''雜誌上發表的一篇 1985年由兩部分組成的文章中,所有 RDBMS都支持 Null來表示缺失的數據。 在 IBM System R中實現原型後,1986年的 SQL標準基本上採用了 Codd的建議。雖然 Don Chamberlin認為nulls(和重複行一起)是 SQL最有爭議的特性之一,但他辯護 SQL中的 Nulls設計,並提出了實用的觀點,認為這是系統對缺少資訊支援最方便的形式,從而使程序員免受許多重複的應用程序級別檢查(請參閱semipredicate問題),同時也為數據庫設計人員提供了不願意使用 Null的選項; 例如,為了避免眾所周知的異常(在本文的語義部分討論)。Chamberlin還認為,除了提供一些缺失值功能之外,對於空值的實踐經驗也會導致依賴於空值的其它語言特性,如某些分組構造和外連接。最後,他認為在實踐中,Nulls最終也會被用作快速修補現有模式的一種方法,當它需要超出其原始意圖的時候,不是為了丟失而是為了不適用的數據編碼; 例如,一個數據庫如果有每英里加侖的欄位,需要快速新增值為電動汽車時。 Codd在其 1990年出版的“數據庫管理關係模型第2版”中指出,SQL標準所要求的單一 Null 類型是不夠的,應該用兩種不同的 Null 類型標記來替代,以表明數據丟失的原因。在 Codd的書中,這兩個 Null型標記分別被稱為“A值”和“I值”,分別表示“缺失但適用”和“缺失但不適用”。 Codd的建議將要求擴展 SQL的邏輯系統以適應四值邏輯系統。由於這種額外的複雜性,具有不同定義類型的多個空值概念,尚未在數據庫領域廣泛接受。儘管如此,它仍然是一個活躍的研究領域,許多論文還在發表。 === 挑戰 === 由於其相關的[[三值逻辑|三值邏輯(3VL)]],它在 SQL連接中使用的特殊要求,以及聚合函數和 SQL分組操作符所需的特殊處理,空值一直是爭議的焦點和爭議的來源。計算機科學教授 Ron van der Meyden將各種問題總結為:“SQL標準中的不一致,意味著不可能將任何直觀的邏輯語義歸於 SQL中的空值處理”。 儘管為解決這些問題提出了各種建議,但候選方案的複雜性阻礙了它們的廣泛採用。
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息