如何处理数据库中的状态ID

时间:2013-04-11 09:37:03

标签: sql database data-structures

假设我在db 'Product''Status'中有表格。

'Product' design is: Id, Name StatusId

'Status' design is: Id, Name

'状态'数据(例如):1-Reserve,2-Paid

问题是:当我想从UI预订某些产品时,如何从状态表中获取正确的ID?如何处理它们?

我有一些解决方案:请记住,1是预留,2是付费。另一个是使用'Key',但问题是:将来你可能会添加另一个状态,例如3-Returned。

编辑:

感谢您的回答,但问题是另一个问题。 当您想要Create new UI for reservation only时,会出现此问题,例如您提供用户数据的输入(用户名,联系人)和选择产品选项并单击“保留”按钮,之后我需要将所有数据保存在数据库中,但是我需要StatusId作为状态表中的保留。 How I know which record in 'Status' table is Reservation?

3 个答案:

答案 0 :(得分:0)

每次准备视图(UI)数据时,都会从数据库中填充Status个对象的列表。这样您就可以在视图中将其显示为某些选择组合。如果您向statuses表添加新行,下次您的列表将拥有它们。 如果您不经常更新状态,则只能在每个会话的应用开始/一次加载此列表。

编辑: 通常在任何组合小部件中,您可以将选项列表定义为对(id,name)。在你的情况下,它将是[(1,保留),(2,付费)],因此组合框的选定值是一个id。该ID是您在数据库中保存的内容。

答案 1 :(得分:0)

在我的想法中......您可以将FK从“状态”变为“产品”,如下所示:

  

'产品'设计是:Id,Name,FK_IdStatus StatusId
  '状态'设计是:Id,Name

然后在UI中您将所有“状态”选择到组合框中以选择

  

选择Id,Name From Status ...并将此数据表分配给combobox数据源并选择combobox.ValueMember =“Id”和combobox.DisplayMember =“Name”

然后,您可以通过从组合框中选择状态来为UI中的产品选择任何状态 并且在“产品”表中存储了每个产品的FK_IdStatus

答案 2 :(得分:0)

vadchen也是对的...我可以告诉你有枚举而不是拥有“状态”表格,你可以在“产品”表格中保存枚举的“状态”ID

如果您不打算使用组合,那么您将在每个过程中管理您的类型。 我的意思是......

  

过程A导致1.Reserved
  过程B导致2.Paid
  进程C导致3.另一个状态
  等等...

然后在这种情况下,您知道进程A总是导致1.Reserved 然后如果您有任何其他进程(如进程C),您必须将其管理到其他“状态”< BR />

但在我的想法中,您必须将此枚举类型编号(状态ID)保留在“产品”表中作为“int”而不是nvarchar类型...如下所示:

  

'产品'设计是:Id,Name,IdStatusType(as int)

然后您可以删除“状态”表格,并在“产品”表格中了解ID的状态类型