C# 数据库id列或代码列

C# 数据库id列或代码列,c#,database-design,C#,Database Design,我正在做一个项目,我必须实现一些新的功能。 在这个过程中,我必须设计一些表,并为这些数据构建一些编辑器。 我有一个分类表和一个类型表 在客户端,我必须使用这些类型构建一些列表,但每个列表必须只使用一个类别中的类型。 我不喜欢在我的C#中使用PKs的想法。在准备列表时,我宁愿在category表中创建一个列名“Code”,并在我的C#Code中使用它 编辑:我不是指删除主键(我将有一个int base Id列)。我的意思是在类别中添加另一列(“代码”),将C#中的jsut用作字符串常量,而不是ID

我正在做一个项目,我必须实现一些新的功能。 在这个过程中,我必须设计一些表,并为这些数据构建一些编辑器。 我有一个分类表和一个类型表

在客户端,我必须使用这些类型构建一些列表,但每个列表必须只使用一个类别中的类型。 我不喜欢在我的C#中使用PKs的想法。在准备列表时,我宁愿在category表中创建一个列名“Code”,并在我的C#Code中使用它

编辑:我不是指删除主键(我将有一个int base Id列)。我的意思是在类别中添加另一列(“代码”),将C#中的jsut用作字符串常量,而不是ID


这是个好主意吗?

如果我理解了你的问题,我建议你的表格采用以下结构:

Table Category
    ID Int                     -- primary key
    Code Varchar(8)            -- Code value displayed to users
    Description Varchar(100)


Table Item
    ID Int                     -- primary key
    CategoryID Int             -- foreign key to Category
    Code Varchar(8)            -- Code value displayed to users
    Description Varchar(100)

这样,如果更改类别记录的代码,幕后不会发生任何更改,并且键值永远不会向用户公开。

我认为数据库表之间应该始终具有主外键关系,前提是数据库支持它,并且它们存在于此是有意义的。这样可以吗?继续实施你发布的方式。。。如果你面对的是一个问题,你会。。。您会明白,这不是一个好主意。如果数据元素在逻辑上是相关的,那么最好将它们与数据库支持的主键-外键关系和适当的级联逻辑相关联。您可能会引入一种方法来保持数据库的正常运行,同时使用一些对客户端业务有意义的“代码”。@TimBiegeleisen请参阅我的编辑。提前谢谢你!