Переменное количество наборов в виде таблиц базы данных SQL

Еще вопрос относительно модели базы данных для конкретной проблемы. Проблема заключается в следующем:

У меня есть ряд объектов, которые составляют строки в фиксированной таблице, все они различны (конечно). Хотелось бы создать наборы, которые содержат переменное количество этих хранимых объектов. Эти наборы будут определяться пользователем, поэтому нет жесткого кодирования. Каждый набор будет характеризоваться номером.

Мой вопрос: какой совет вы можете дать опытным программистам SQL для реализации такой функции. Мой самый прямой подход заключается в создании таблицы для каждого такого набора с использованием табличных переменных или временных таблиц. Наконец, уже существующая таблица, которая содержит имена наборов (как способ сообщить пользователю, какие наборы в настоящее время присутствуют в базе данных).

Если не эффективно, в каком направлении я буду искать, чтобы решить эту проблему?

Благодарю.

1 ответ

Решение

Табличные переменные и временные таблицы недолговечны, имеют узкую область применения и, вероятно, не то, что вы хотите использовать для этого. Одна таблица для каждого набора также не является решением, которое я бы выбрал.

По звуку вам нужны три стола. Один для объектов, один для наборов и один для отношений между объектами и наборами.

Примерно так (используя синтаксис 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 как красивая картинка:

Другие вопросы по тегам