日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle将字段nullable设为Y,从DB模型中消除NULLable列的选项(为了避免SQL的三值逻辑)?...

發布時間:2024/7/5 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle将字段nullable设为Y,从DB模型中消除NULLable列的选项(为了避免SQL的三值逻辑)?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不久之前,我一直在閱讀

SQL and Relational Theory by C. J. Date一書.作者因批評sql的三值邏輯(3VL)而聞名.1)

作者強調了為什么在sql中應該避免使用3VL,但他沒有概述如果不允許使用可空列的數據庫模型的樣子.我已經考慮了一下,并提出了以下解決方案.如果我錯過了其他設計方案,我想聽聽他們的意見!

1)日期對sql 3VL的批評反過來也受到批評:見this paper by Claude Rubinson(包括C. J. Date的原始批評).

示例表:

作為示例,請使用下表,其中我們有一個可為空的列(DateOfBirth):

# +-------------------------------------------+

# | People |

# +------------+--------------+---------------+

# | PersonID | Name | DateOfBirth |

# +============+--------------+---------------+

# | 1 | Banana Man | NULL |

# +------------+--------------+---------------+

選項1:通過標志和默認值模擬NULL:

不是使列可為空,而是指定任何默認值(例如1900-01-01).另一個BOOLEAN列將指定是否應該簡單地忽略DateOfBirth中的值或者它是否實際包含數據.

# +------------------------------------------------------------------+

# | People' |

# +------------+--------------+----------------------+---------------+

# | PersonID | Name | IsDateOfBirthKnown | DateOfBirth |

# +============+--------------+----------------------+---------------+

# | 1 | Banana Man | FALSE | 1900-01-01 |

# +------------+--------------+----------------------+---------------+

選項2:將可為空的列轉換為單獨的表:

可空列由新表(DatesOfBirth)替換.如果記錄沒有該列的數據,則新表中將不會有記錄:

# +---------------------------+ 1 0..1 +----------------------------+

# | People' | | DatesOfBirth |

# +------------+--------------+ +------------+---------------+

# | PersonID | Name | | PersonID | DateOfBirth |

# +============+--------------+ +============+---------------+

# | 1 | Banana Man |

# +------------+--------------+

雖然這似乎是更好的解決方案,但這可能會導致需要為單個查詢加入許多表.由于不允許OUTER JOIN(因為它們會在結果集中引入NULL),所以可能不再像以前那樣只使用一個查詢來獲取所有必需的數據.

題:

是否有其他選項可以消除NULL(如果是,它們是什么)?

總結

以上是生活随笔為你收集整理的oracle将字段nullable设为Y,从DB模型中消除NULLable列的选项(为了避免SQL的三值逻辑)?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。