我有一个显示表格信息并允许用户输入和编辑它的应用程序。我一直在为此进行数据库设计,并遇到了以下问题。
我想避免为应用程序中的每个表创建一个 MSSQL 表,所以我一直试图在两个表中表示所有表。
我已经定义了一个MyAppTable具有Id INTEGER主键和Name CHARACTER VARYING(255)列的表。
从那里,我定义了一个MyAppColumn表,其中外键针对该MyAppTable.Id列,并且还有一个Position INTEGER列来指示其在呈现表中的位置。
最后,我定义了一个MyAppRow表,其中针对该MyAppColumn.Id列的外键并有一个Data BINARY(32)列。这是一个小文件表,所以这种数据类型很合适。
实际的问题是我不能保证MyAppColumn.Position每个MyAppTable.
一个正常情况的例子:
MyAppTable与Id0MyAppColumn与Id0,TableId0,Position0MyAppColumn有Id1,TableId0,Position1MyAppRowColumnId0,[Data某事]MyAppRow与ColumnId1,Data[某事]MyAppTable有Id1MyAppColumn有Id2,TableId1,Position0MyAppRow与ColumnId2,Data[某事]
我想在数据库中使不可能的情况示例:
MyAppTable与Id0MyAppColumn与Id0,TableId0,Position0MyAppColumn有Id1,TableId0,Position0
如您所见,我想要某种方式来约束一对列。这两列应该是TableId,但如果这是独立完成的,这将意味着两个表永远不会有列都为 0。PositionUNIQUEPosition
如何在 Microsoft SQL Server 2012 中完成此操作?