可变数量的集合作为 SQL 数据库表

Posted

技术标签:

【中文标题】可变数量的集合作为 SQL 数据库表【英文标题】:Variable amount of sets as SQL database tables 【发布时间】:2012-04-07 16:16:13 【问题描述】:

关于特定问题的数据库模型的更多问题。问题如下:

我有许多对象组成固定表中的行,它们都是不同的(当然)。人们想创建包含可变数量的这些存储对象的集合。这些集合是用户定义的,因此没有硬编码。每组将由一个数字表示。

我的问题是:有经验的 SQL 程序员可以给我什么建议来实现这样的功能。我最直接的方法是使用表变量或临时表为每个这样的集合创建一个表。最后,一个已经存在的表,其中包含集合的名称(作为让用户知道数据库中当前存在哪些集合的一种方式)。

如果效率不高,我会寻找什么方向来解决这个问题?

谢谢。

【问题讨论】:

【参考方案1】:

表变量和临时表是短暂的,范围很窄,可能不是您想要使用的。每个 Set 一个表也不是我会选择的解决方案。

听起来你需要三张桌子。一种用于Objects,一种用于Sets,一种用于Objects和Sets之间的关系。

类似这样(使用 SQL Server 语法来描述表)。

create table [Object]
(
  ObjectID int identity primary key,
  Name varchar(50)
  -- more columns here necessary for your object.
)

go

create table [Set]
(
  SetID int identity primary key,
  Name varchar(50)
)

go

create table [SetObject]
(
  SetID int references [Object](ObjectID),
  ObjectID int references [Set](SetID),
  primary key (SetID, ObjectID)
)

这是 m:m 的关系图:

【讨论】:

以上是关于可变数量的集合作为 SQL 数据库表的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL集合(table)嵌套表操作实例讲解实例

用于从连接表中进行选择的 T-SQL 查询,其中有可变数量的参数?

具有可变数量的参数SQL的多次插入

是否可以在T-SQL中将行转换为可变数量的列?

Oracle之数组

可变数组(PLSQL)