3 回答

TA貢獻1798條經驗 獲得超3個贊
首先,數據庫中的空值沒有錯。并且正是出于此目的而制作的(未知屬性)。在我看來,避免數據庫中的空值是毫無意義的建議。
因此,您將具有三個(或四個)值-用于標識客戶的名稱(名字/姓氏,電子郵件地址和電話號碼)。您可以將它們放在表中并向其添加約束,以確保始終至少填充這些列中的一個,例如coalesce(name, email, phone) is not null
。這樣可以確保無法完全匿名完成預訂。
根據您的解釋,您不清楚是否總是會收到來自客戶的相同信息。那么,發生客戶預定一個房間并提供其姓名,然后又預定另一個房間并提供其電話的情況發生了嗎?還是會在數據庫中查找客戶,找到他們的名字以及分配給他們的兩個預訂?在后一種情況下,您可以擁有一個客戶表,其中包含您到目前為止所獲得的所有信息,并且預訂中將包含客戶記錄ID作為對此數據的引用。在前一種情況下,您可能不希望有一個clients表,因為您無法識別兩個客戶端(Jane Miller和[email protected])是真的是兩個不同的客戶端還是實際上只是一個客戶端。
我到目前為止看到的表:
房間(room_id,...)
地點(venue_id,...)
客戶(client_id,姓名,電子郵件,電話)
預訂(venue_id,room_id,client_id等)

TA貢獻1799條經驗 獲得超6個贊
如上所述,通常不需要這樣做。沒有價格的產品就是沒有最終確定的產品。我們尚未決定價格。沒有刪除日期的部門仍處于活動狀態,尚未(從邏輯上)刪除。沒有默認增值稅的產品組就沒有默認增值稅,每個產品的增值稅必須明確命名。我們創建數據庫;我們知道缺少價值意味著什么。
添加回答
舉報