kai*_*lya 1 .net c# database design-patterns
我无法对此做出明确的决定.
我可以通过在我的表上使用数值来获取DBA数据库中列的描述的值信息.
但是我也不想在将来有这样的观点,即在数据库中使用这些数值会给维护带来太多麻烦.
我不是特别喜欢在数据库上为这些枚举列添加字符串,因为它会在数据库上创建大量重复的字符串重复.它可能不是一个主要的性能问题,但我觉得在桌面上有如此多的字符串来表示值是正确的.
你能否从长远的经验中分享你的想法?谢谢
处理您的情况的标准方法是通过查找表.通常,它们具有简单的结构(通常只有两列):
CREATE TABLE LookupTable
(
code SMALLINT NOT NULL PRIMARY KEY,
name VARCHAR(32) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
您可能也可能不会使名称列唯一.然后,对于包含相关类型值的表,您使用:
CREATE TABLE ReferencingTable
(
...
lookup SMALLINT NOT NULL REFERENCES LookupTable,
...
);
Run Code Online (Sandbox Code Playgroud)
在这里,我的名字并不是很聪明; 您可以使用'CustomerStatus'代替'LookupTable',然后在ReferencingTable中使用列名CustStatus.您可以为"代码"列选择各种类型 - 单个字节的小整数,小型CHAR字段或INTEGER,具体取决于您可能需要的值.有时,查找表变得更加复杂,并且获取了描述实体的额外属性,尽管这通常意味着它正在为您的数据库建立一个重要的实体并且它不再仅仅是"查找表".
你可以得到相当多的这些查找表,但抵制陷入推广到"一个真正的查找表"(OTLT)习语的陷阱.正如其他SO问题和网络上的其他问题所述,这会导致数据完整性问题.