亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在建模和規范化時如何處理空值?

在建模和規范化時如何處理空值?

我是SQL(仍在學習中)的新手,我必須為場所創建一個數據庫??蛻纛A訂活動室。問題在于客戶不總是提供他們的姓名,電子郵件和電話號碼。在大多數情況下,它是姓名和電子郵件或姓名和電話。這很少是全部3種,但確實會發生。我需要將它們分別存儲在各自的屬性(名稱,電子郵件,電話)中。但是他們給我他們的信息的方式,我有很多空值。這些空值怎么辦?有人告訴我最好不要有null。在那之后,我還需要規范化我的表。有任何建議請。
查看完整描述

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等)


查看完整回答
反對 回復 2019-11-20
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

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

查看完整回答
反對 回復 2019-11-20
  • 3 回答
  • 0 關注
  • 927 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號