将字符与Id字段组合

时间:2015-05-05 12:44:31

标签: c# sql-server asp.net-mvc asp.net-mvc-5 guid

我将在MVC5应用程序中创建一个Issue表,我想对每种类型的问题使用特殊代码,如下所示:

对于IT相关问题INF-0001,INF-0002,... 对于一般类型的问题GEN-0001,GEN-0002,......

当我在同一张桌子上使用所有问题时,我认为最好将ID号存储为INF-0001,GEN-0001,...等。在这种情况下,我应该使用字符串作为数据类型MSSQL中的ID列?或者,为了存储Id的相关代码,最好的方法是什么?我也想到使用GUID,但我不确定它是否可行。提前致谢。

2 个答案:

答案 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