我有一些数据结构 -
class House
{
int id;
string street;
string city;
string review;
string status;
}
街道和城市是常规字符串,应始终少于32个字符。我认为他们应该有一个nchar(32)的SQL数据类型?或者它们应该是varchar?
审核是用户可以输入的可选字符串。如果他们确实给了它,它可以变化很大,从4-5个字到2000多个字符。那么我应该使用什么数据类型来存储它?
状态是一个可以包含'New','Old','UnStarted'值的标志。它具有的任何值都将显示在桌面应用程序的数据网格中。我应该将此字段存储为字符串,还是将不同位作为标志存储的字节?
答案 0 :(得分:4)
如果您正在设计美国桌子,我建议您使用 VARCHAR(32)作为地址和城市。如果您正在设计国际字段,请将两个字段放大,例如切换到 NVARCHAR(72)。 NVARCHAR存储占用更多空间,但允许存储非ASCII字符....
CHAR(32)保留32个字节的数据,无论该字段是包含1个字符还是32个字符。此外,一些客户端编程语言不会自动修剪额外的空间(这是正确的,但可能不是预期的)。 NCHAR(32)保留64个字节,因为每个字符都以2个字节表示
对于审核,我同意lanks, TEXT 或 VARCHAR(最大) - (特定于MS SQL)是最好的。评论可以超过2000个字符吗?如果2000是绝对限制,那么我将使用 VARCHAR(2000)。如果您可以进行任何长度审查,我只会使用TEXT字段。请记住,如果用户输入超过2000个字符的评论,如果您尝试插入,则数据库将引发错误,因此您的应用程序需要限制字符数或在出现错误时处理错误。
状态应该是数据库允许的最小整数。您可以创建第二个表以提供代码的文本说明。