我的表格中有一个字段“婚姻状况”,用户必须选择(radiobutton),如果他(已婚,离婚,单身,voeuf)
我该怎么做这个字段的类型?
是否有布尔类型?
答案 0 :(得分:1)
marital status
听起来不像布尔值。这听起来像一个枚举。布尔值将是married
(Y / N),虽然我认为在这个时代你可能希望能够在那里存储多种关系,并且你自己指定你需要存储'devorced'同样,布尔值是不可能的。
所以我建议制作一个名为MaritalStatus的表,它有一个ID和一个描述。将各种状态存储在那里,并在表格中为MaritalStatusID创建一个外键。
答案 1 :(得分: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的情况,对于某人的婚姻状况,可能有两个以上的可能值,因此您应为所有可能的婚姻状况创建一个单独的表并使用外键约束。
答案 2 :(得分:0)
T-SQL的布尔等价物是bit
。
尽管如此,您似乎想要的不仅仅是答案。在这种情况下,使用int然后将int转换为枚举。
修改:Dukeling在编辑中删除了C#标记,因此我不确定该部分的相关性如何 /编辑
枚举:
enum MaritalStatus
{
Single,
Married,
Divorced,
...
}
来自DB的int:
int maritalStatusFromDB = //value from DB
将int转换为枚举:
MaritalStatus maritalStatus = (MaritalStatus)maritalStatusFromDB;
请注意,您的数据库可能包含未在枚举中定义的int值,例如10.您可以检查maritalStatusFromDB是否为有效的MaritalStatus,如下所示:
bool isValid = Enum.IsDefined(typeof(MaritalStatus), maritalStatusFromDB);
if( isValid == false )
{
//handle appropriately
}