2014-01-18 25 views
2

我有一個領域我的表「婚姻狀況」,用戶必須選擇(單選)如果他(結婚,離婚,單身,voeuf)我應該如何製作「婚姻狀況」字段?

我應該怎麼做這個字段的類型?

是否有布爾類型?

+0

在T-SQL中,它是[位](http://msdn.microsoft.com/zh-cn/library/ms177603.aspx)。 –

+1

這取決於您正在使用的SQL數據庫的類型。請[編輯]問題並添加[標籤](http://stackoverflow.com/help/tagging)來表明這一點。 – Dukeling

+4

如果有四個可能的值,它不能是布爾值。 –

回答

0

T-SQL的布爾等價物是bit

雖然,它似乎不僅僅是一個是/否的答案。在這種情況下,使用一個int然後將int轉換爲一個枚舉。

編輯:Dukeling除去在編輯C#的標籤,所以我不知道這部分是如何相關的再/編輯

枚舉:

enum MaritalStatus 
{ 
    Single, 
    Married, 
    Divorced, 
    ... 
} 

從DB的int :

int maritalStatusFromDB = //value from DB 

int轉換成enum類型:

MaritalStatus maritalStatus = (MaritalStatus)maritalStatusFromDB; 

要知道,你的數據庫可能包含不在您的定義枚舉int類型,比如10.您可以檢查maritalStatusFromDB是否是一個有效的MaritalStatus如下:

bool isValid = Enum.IsDefined(typeof(MaritalStatus), maritalStatusFromDB); 
if(isValid == false) 
{ 
    //handle appropriately 
} 
1

marital status不聽起來像一個布爾無論如何。這聽起來像一個枚舉。一個布爾值將是married(是/否),儘管我認爲在這個時代你可能希望能夠存儲多種類型的關係,並且你指定自己也需要存儲'devorced',所以一個布爾值是不可能的。

所以我建議製作一個名爲MaritalStatus的表格,它有一個ID和一個描述。將各種狀態存儲在那裏,然後在表中爲MaritalStatusID創建一個外鍵。

1

使它成爲一個INT領域,在你的數據庫像

CREATE TABLE dbo.MaritalStatus 
(
M_ID INT PRIMARY KEY NOT NULL, 
M_Status NVARCHAR(20) 
) 
GO 

INSERT INTO dbo.MaritalStatus 
VALUES 
(1, 'Single'),(2,'Married'),(3,'Divorced'), 
(4,'Widowed'),(5,'Other'),(6,'Prefer Not to say').... bla bla 

現在在你的表中"Marital Status" field創建一個表指的是使用從dbo.MaritalStatus表的"M_ID" INT值的用戶婚姻狀況。

布爾或在SQL位數據類型是最好的,當你有一種情況可以是TRUE或NOT TRUE,對於某人的婚姻狀態可以有兩個以上的可能值,因此你應該爲所有可能的婚姻創建一個單獨的表狀態和使用外鍵約束。

相關問題