Я разрабатываю систему и хотел бы иметь метки для некоторых моих столбцов, которые управляются в одном месте, и чтобы были ограничения, чтобы гарантировать, что все используемые метки перечислены в таблице меток. Каков наилучший способ выполнения sh этого?
Сейчас я работаю с таблицей под названием [Метки] со столбцами для [Группа], [ID] и [Название], где [Группа] относится к группе записей, имеющих одно и то же значение [Группа], [ID] относится к уникальной метке в этой группе, а [Название] является дружественным для человека значением, которое будет использоваться приложением. Однако я не знаю, как ограничить значения, так как ограничения внешнего ключа, похоже, не принимают значения stati c. Возможно, мне не хватает чего-то простого ...
Пример запроса:
SELECT [Labels].[Title]
FROM [EventList]
INNER JOIN [Labels] ON [Labels].[ID] = [EventList].[Status] AND [Labels].[Group] = 'Event Status'
Пример ограничения внешнего ключа:
ALTER TABLE [EventList]
ADD CONSTRAINT FK_EventList_Labels
FOREIGN KEY ('Event Status',[Status])
REFERENCES Labels([Group],[ID])
Таблица меток:
CREATE TABLE Labels
(
[Group] VARCHAR(20) NOT NULL,
[ID] VARCHAR(20) NOT NULL,
[Title] VARCHAR(20) NOT NULL
)
Пример данных метки
'Event Status',1,'Planning'
'Event Status',2,'Completed'
'Event Type',1,'Public'
'Event Type',2','Private'
'Employee Status',1,'Active'
...
Используется сервер Microsoft SQL Стандарт сервера 2016.
Заранее благодарим за любую помощь, указатели или рекомендации.