我有类似的数据结构 -
class House
{
int id;
string street;
string city;
string review;
string status;
}
street 和 city 是常规字符串,应始终少于 32 个字符。我认为他们应该有一个 nchar(32) 的 SQL 数据类型?或者它们应该是 varchar?
review 是用户可以输入的可选字符串。即使他们确实给出了,也可能有很大差异,从 4-5 个单词到 2000 多个字符。那么我应该使用什么数据类型来存储它?
状态是一个标志,其值为"new"、“旧”、“未启动”。无论它具有什么值,都将显示在桌面应用程序的数据网格中。我应该将此字段存储为字符串,还是具有不同位作为标志的字节?
最佳答案
如果您正在设计美国表,我建议使用 VARCHAR(32) 作为地址和城市。如果您正在设计一个国际字段,请增大两个字段并切换为 NVARCHAR(72)。 NVARCHAR存储占用空间较大,但允许存储非ASCII字符...
CHAR(32) 保留 32 个字节的数据,无论该字段包含 1 个字符还是 32 个字符。此外,某些客户端编程语言不会自动修剪多余的空格(这是正确的,但可能不是预期的)。 NCHAR(32) 保留 64 个字节,因为每个字符都用 2 个字节表示
对于审查,我同意 lanks 的观点,TEXT 或 VARCHAR(max) -(MS SQL 特定) 是最好的。评论长度可以超过2000字吗?如果 2000 是绝对限制,那么我会选择 VARCHAR(2000)。如果您可以进行任意长度的审核,我只会使用文本字段。请记住,如果用户输入的评论超过 2000 个字符,如果您尝试插入它,数据库将引发错误,因此您的应用程序需要限制字符数或在错误发生时进行处理。
状态应该是数据库允许的最小整数。您可以创建第二个表来提供代码的文本描述。
关于字符串的 SQL 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679516/