gpt4 book ai didi

sql-server - 如何在 MSSQL 中表示应用程序中的行和列?

转载 作者:行者123 更新时间:2023-12-01 10:58:27 25 4
gpt4 key购买 nike

我有一个显示表格信息并允许用户输入和编辑的应用程序。我一直在为此进行数据库设计,并遇到了以下问题。

我想避免为应用程序中的每个表创建一个 MSSQL 表,所以我一直试图在两个表中一起表示所有表。

我定义了一个 MyAppTable表有 Id INTEGER主键和一个 Name CHARACTER VARYING(255)列。

从那里,我定义了一个 MyAppColumn MyAppTable.Id 外键对应的表列,还有一个 Position INTEGER列以指示其在呈现的表格中的位置。

最后,我定义了一个MyAppRow MyAppColumn.Id 外键对应的表列并有一个 Data BINARY(32)柱子。这是一个小文件表,因此这种数据类型很合适。

实际问题是我不能保证 MyAppColumn.Position每个 MyAppTable 的列都是唯一的.

一个正常情况的例子:

  • MyAppTableId 0
  • MyAppColumnId 0, TableId 0, Position 0
  • MyAppColumnId 1、TableId 0, Position 1
  • MyAppRowColumnId 0, Data [某事]
  • MyAppRowColumnId 1、Data [某事]
  • MyAppTableId 1
  • MyAppColumnId 2、TableId 1、Position 0
  • MyAppRowColumnId 2、Data [某事]

我想在数据库中使不可能的情况示例:

  • MyAppTableId 0
  • MyAppColumnId 0, TableId 0, Position 0
  • MyAppColumnId 1、TableId 0, Position 0

如您所见,我想要一些方法来约束一对列。两列TableIdPosition应该是 UNIQUE但如果这是独立完成的,那就意味着两个表永远不会在 Position 中有列。共 0 个。

如何在 Microsoft SQL Server 2012 中完成此操作?

最佳答案

您的问题的解决方案是不对表中的元数据进行编码,而是创建实际的表,即使这样做不方便或需要大量工作。

一些很快就会咬你的东西:

  • 没有关系可以建模
  • 无法索引
  • 没有输入验证(是日期、整数还是图像?)
  • 无法获得实际准确的统计数据
  • 您编写的每一个查询都将是一场噩梦

在未来为自己节省大量时间和精力,现在就在设计阶段制作实际的表格。 This type of meta-data "god table" has been tried repeatedly and never works.

话虽这么说,如果您表示的是一组非常有限的数据(如您所说,仅针对文件),我会考虑使用坐标系。

保持你的 MyAppTable 不变。

创建一个包含字段的 MyAppFile 表:

  • FileId (int identity)
  • MyAppTableId (FK)
  • 数据 (varbinary)
  • XPos (int)
  • YPos (int)

(MyAppTableId, Xpos, Ypos) 有唯一约束。

这更准确地表示您要存储的内容,更易于维护,并允许您强制执行完整性。

关于sql-server - 如何在 MSSQL 中表示应用程序中的行和列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13278514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com