2012-06-20 38 views
1

我正在使用SQL Server數據庫,我正在一個房地產網站上工作。我應該爲NULL設置一個可選值的列嗎?

我有一個表列出了一個名爲SIZE的列的屬性。

用戶可以有選擇地輸入一個屬性的值(只有積分和正數)SIZE

目前我使用這個

int Size NULL 

我想知道:

  • 如果在這種情況下,NULL值纔有意義(我讀了一些文章不鼓勵使用NULL,所以我想如果是這樣的話)
  • 大小的值應該是從0到100000,我想知道是否數據類型Int被佔用。

請如果你覺得這個問題不恰當的只是評論,我會從網站中刪除它。

感謝

回答

2

NULL是「正確」的方式,但它可以使文字查詢一個痛苦,因爲NULL不會只是IS NULL匹配任何謂詞。例如,假設您想要一個查詢找到所有具有x和y之間大小的行,但是您還想顯示沒有任何大小的行。您的查詢將是這樣的:

select * from some_table 
where size between x and y or size is null; 

這會帶來不必要的複雜性,還需要應對如何呈現零大小。

更好的選擇恕我直言,是使列NOT NULL並強制用戶輸入一個大小。這將簡化您的應用程序和查詢代碼。

不要告訴我,客戶擁有一個財產,不知道它有多大。

+0

@BurhanKhalid如果他們足夠愚蠢地進入這個,那就讓他們吧。它們的屬性不會出現在基於大小的搜索中。所以呢?他們無法抱怨 - 他們輸入了數據。無論如何,我可能會在場上進行驗證,以防止意外輸入太小或負值等,但只要它通過基本驗證,將其存儲並繼續前進。不要讓網站「太聰明」,否則你最終會陷入混亂。銀行不允許您輸入 - 20美元作爲ATM提款金額。人們也會接受不得不輸入一個有效的大小。網站設計師通常對用戶同情 – Bohemian

2

NULL這裏是正確的,因爲它具體是指沒有值進入,這是您要代表什麼。任何其他價值實際上都會有一些意義。例如0是一個有效的值 - 儘管在這種情況下它可能沒有意義。具體將其設置爲NULL意味着您明確指出沒有輸入值。

至於最大INT問題,從documentation:從-2^31(2,147,483,648)通過2^31

INT

整型(整數)數據 - 1(2,147,483,647) 。

2

如果在這種情況下,NULL值纔有意義(我讀了一些文章是鼓勵使用NULL,所以我想,如果是這種情況)

NULL是好的,如果你想代表無價值的東西。對於每種不同的數據類型,它要比組成一個不同的表示(例如數字中的-1或空字符串)要好。如果沒有看到您閱讀的文章並且知道它提出的論點(以及在什麼情況下),我們就無法進一步評論。

大小的值應該是從0到100000,我想知道是否撥出DataType int

這是最適當大小的整體式 - tinyintsmallint具有較低的最大值超過10萬。如果你想徹底,加CHECK約束到你的餐桌也:

CREATE TABLE Properties (
    -- Various Columns 
    Size int null, 
    constraint CK_Properties_Sizes CHECK (Size between 0 and 100000) 
    -- More columns, constraints, etc 
) 
+0

有趣的使用約束,感謝posintg! – GibboK

相關問題