คำถามที่ไม่มีคำอธิบาย:
อย่างไรก็ตามมีข้อ จำกัด ของค่า Null 2 ค่าที่ต้องมีค่า 1 เสมอหรือไม่ ตัวอย่างเช่นสองคอลัมน์วันที่ทั้งเป็นโมฆะ แต่มีอย่างน้อย 1 ที่ต้องมีค่า
คำอธิบายปัญหา:
สมมติว่าฉันมีตารางที่เรียกว่าค่าใช้จ่าย
และมี 2 วัน:
prevision_expense_expiration_date DATE NULLABLE ค่าใช้จ่าย _payment_date DATE NULLABLE
ตรรกะของคอลัมน์ 2 คอลัมน์ดังต่อไปนี้:
ฉันซื้อของบางอย่างและฉันรู้ว่าฉันต้องจ่ายเงินสำหรับบางวันเช่นค่าโทรศัพท์ ฉันจะป้อนสิ่งนี้เป็นค่าใช้จ่ายโดยมี costs_payment_date วันนี้เป็นวันที่ควรจะจ่าย แต่ไม่ใช่วันที่จ่ายจริงเช่นวันหมดอายุของใบแจ้งหนี้
ในสถานการณ์อื่น ๆ ฉันขายบัตรของขวัญของผู้ให้บริการบางรายเพื่อให้บริการ ฉันอาจมีค่าใช้จ่ายในการซื้อให้กับผู้ให้บริการของฉันบริการโอนไปยังลูกค้าของฉันเฉพาะในกรณีที่ลูกค้าแลกบัตร ดังนั้นบัตรของขวัญจึงมีวันหมดอายุฉันต้องการทำเช่นนั้นสำหรับ 'ค่าใช้จ่าย' โดยไม่ต้องใส่เป็นค่าใช้จ่ายสำหรับเวลาที่บัตรของขวัญนั้นถูกต้องหากบัตรของขวัญหมดอายุ 'ค่าใช้จ่าย' นั้นไม่ควรเข้าบัญชี ระบบ.
ฉันรู้ว่าฉันสามารถมี 2 ตารางเท่า ๆ กันที่เรียกว่า prevision_expense และ confirm_expense แต่ฟังดูไม่ถูกต้องดังนั้นฉันมีตารางเดียวกัน 2 วันที่ว่างเปล่า แต่ฉันต้องการ จำกัด หรือบางสิ่งเพื่อให้เป็นสิ่งที่จำเป็นเสมอ
มีอีกกลยุทธ์ที่เป็นไปได้:
payment_date DATE NOT NULL is_prevision_date BOOL NOT NULL
ดังนั้นในกรณีนี้ถ้าวันที่มีค่าเป็นบูนิกเป็น 1 มิฉะนั้นจะเป็น 0 ไม่มีค่า Null ทั้งหมดเป็นสิ่งที่ดี ยกเว้นว่าฉันต้องการตัวเลือกในการเก็บค่าทั้งสองเมื่อครั้งแรกที่ฉันมีวันที่แล้วและจากนั้น (ให้บอกว่าสองวันต่อมา) มีวันที่ยืนยันสำหรับค่าใช้จ่ายนั้นในกรณีที่มีกลยุทธ์ 2 ฉันจะไม่มีตัวเลือกนั้น
ฉันทำทุกอย่างผิดปกติในการออกแบบฐานข้อมูลหรือไม่? : D
CHECK
ข้อ จำกัด เช่นกัน ไม่จำเป็นต้องมีคอลัมน์ที่คงอยู่