คอลัมน์ Nullable สามารถอยู่ใน 1NF ถึง 5NF แต่ไม่ใช่ใน 6NF ตามสิ่งที่ฉันอ่าน
เฉพาะในกรณีที่คุณรู้ดีกว่า Chris Date "รูปแบบปกติแรกหมายถึงอะไร" ถ้า x และ y มีทั้ง nullable และแน่นอนในบางแถว x และ y มีทั้งที่null
แล้วไม่ได้ผลตอบแทนWHERE x=y
true
สิ่งนี้พิสูจน์ได้โดยปราศจากข้อสงสัยที่สมเหตุสมผลว่า null ไม่ใช่ค่า (เนื่องจากมูลค่าจริงใด ๆ จะเท่ากับตัวมันเองเสมอ) และเนื่องจาก RM กำหนดว่า "ต้องมีค่าในทุกเซลล์ของตาราง" สิ่งใด ๆ ที่อาจมีค่าว่างไม่ใช่สิ่งที่สัมพันธ์กันดังนั้นคำถามของ 1NF จึงไม่เกิดขึ้นด้วยซ้ำ
ฉันได้ยินมาว่ามันเป็นที่ถกเถียงกันอยู่ว่าคอลัมน์ Nullable โดยทั่วไปจะทำลายระดับแรกของการทำให้เป็นมาตรฐาน
ดูด้านบนสำหรับเหตุผลที่ดีที่เป็นรากฐานของข้อโต้แย้งนั้น
แต่ในทางปฏิบัติมันใช้ได้จริง
เฉพาะในกรณีที่คุณมีภูมิคุ้มกันต่ออาการปวดหัวซึ่งมักจะเป็นสาเหตุของคนทั่วโลก อาการปวดหัวอย่างหนึ่ง (และเป็นเพียงเล็กน้อยเมื่อเทียบกับnull
ปรากฏการณ์อื่น ๆ) คือความจริงที่ว่าWHERE x=y
ใน SQL หมายถึงจริงWHERE x is not null and y is not null and x=y
แต่โปรแกรมเมอร์ส่วนใหญ่ไม่ได้ตระหนักถึงข้อเท็จจริงนั้นและเพียงแค่อ่านมัน บางครั้งไม่มีอันตรายใด ๆ ในบางครั้งไม่
ในความเป็นจริงคอลัมน์ที่เป็นโมฆะได้ละเมิดกฎพื้นฐานที่สุดข้อหนึ่งในการออกแบบฐานข้อมูล: อย่ารวมองค์ประกอบข้อมูลที่แตกต่างกันในคอลัมน์เดียว Nulls ทำเช่นนั้นเพราะรวมค่าบูลีน "ฟิลด์นี้เป็น / ไม่มีอยู่จริง" เข้ากับค่าจริง