我将在MVC5应用程序中创建一个Issue表,我想对每种类型的问题使用特殊代码,如下所示:
对于IT相关问题INF-0001,INF-0002,... 对于一般类型的问题GEN-0001,GEN-0002,......
当我在同一张桌子上使用所有问题时,我认为最好将ID号存储为INF-0001,GEN-0001,...等。在这种情况下,我应该使用字符串作为数据类型MSSQL中的ID列?或者,为了存储Id的相关代码,最好的方法是什么?我也想到使用GUID,但我不确定它是否可行。提前致谢。
答案 0 :(得分:3)
我认为最好为自定义名称创建单独的字段。因此,您的表格将包含int
Id
(主键)字段和CustomName
varchar(100)
或nvarchar(100)
类型(如果您使用unicode字符)字段,其中包含您的自定义名称
如果您将int
文件表与其他人一起Id
,则性能最好将JOIN
用作INDEX
。如果您想在此字段中搜索值并且速度很慢,只需创建import java.util.ArrayList;
public class Alisttest {
public static void main(String[] args) {
ArrayList a = new ArrayList();
a.add("1");
a.add("2");
a.add("3");
a.add("4");
System.out.println("a=> "+a.get(2));
a.add(2, "Pankaj");
System.out.println("a=> "+a.get(2));
System.out.println();
System.out.println("a=> "+a);
}
}
。
答案 1 :(得分:2)
您可以将一般问题ID 和设为一个类别,例如:
表:问题
------------------------------------
IssueID | CategoryID | CategoryIndex
------------------------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 1 | 3
表:类别
-----------------------------
CategoryID | Prefix | Name
-----------------------------
1 | INF | IT
2 | GEN | General
然后在查询这些表时计算问题编号。
如果要在数据库发生更改时跟踪问题编号,可以将计算出的数字存储在表格中(例如:IT相关问题的前缀从INF
更改为IT
)
既然你有一个好的架构,你如何控制问题表上的类别序列?看看这个:
DECLARE @categoryID INT
DECLARE @nextSequence INT
SET @categoryID = 1 --You'll have to change this!
SELECT @nextSequence = i.CategoryIndex
FROM Issue i
WHERE i.CategoryID = @categoryID
SELECT COALESCE(@nextSequence, 0) + 1 as 'NextSequence'
您可以将其转换为存储过程(可能是NextSequence
?),它接收INT
作为参数(类别ID)并返回另一个INT
作为结果({{ 1}}用于新问题。)
最后,要创建完整的代码:
CategoryIndex