Dodaj czwartą tabelę specjalnie dla tych wartości, które chcesz, aby były unikalne, a następnie połącz te klucze z tej tabeli z innymi, używając relacji jeden do wielu. Na przykład będziesz mieć unikalną tabelę z identyfikatorem, nazwą aplikacji i nazwą elementu, aby uzupełnić jej 3 kolumny. Następnie umieść tę tabelę jako link do innych.
Oto dobry przykład, jak to zrobić. Utwórz relację jeden do wielu za pomocą SQL Server
EDYTUJ: Oto, co bym zrobił, ale biorąc pod uwagę potrzeby serwera, możesz zmienić to, co jest potrzebne:
CREATE TABLE AllItems(
[id] [int] IDENTITY(1,1) NOT NULL,
[itemType] [int] NOT NULL,
[AppName] [nvarchar](20) NOT NULL,
[ItemName] [nvarchar](32) NOT NULL,
CONSTRAINT [pk_AllItems] PRIMARY KEY CLUSTERED ( [id] ASC )
) ON [PRIMARY]
CREATE TABLE Analog(
[itemId] [int] NOT NULL,
[Value] [float] NOT NULL
)
CREATE TABLE Discrete(
[itemId] [int] NOT NULL,
[Value] [bit] NOT NULL
)
CREATE TABLE Message(
[itemId] [bigint] NOT NULL,
[Value] [nvarchar](256) NOT NULL
)
ALTER TABLE [Analog] WITH CHECK
ADD CONSTRAINT [FK_Analog_AllItems] FOREIGN KEY([itemId])
REFERENCES [AllItems] ([id])
GO
ALTER TABLE [Analog] CHECK CONSTRAINT [FK_Analog_AllItems]
GO
ALTER TABLE [Discrete] WITH CHECK
ADD CONSTRAINT [FK_Discrete_AllItems] FOREIGN KEY([itemId])
REFERENCES [AllItems] ([id])
GO
ALTER TABLE [Discrete] CHECK CONSTRAINT [FK_Discrete_AllItems]
GO
ALTER TABLE [Message] WITH CHECK
ADD CONSTRAINT [FK_Message_AllItems] FOREIGN KEY([itemId])
REFERENCES [AllItems] ([id])
GO
ALTER TABLE [Message] CHECK CONSTRAINT [FK_Message_AllItems]
GO
Z tego, co mogę powiedzieć, twoja składnia jest w porządku, po prostu zmieniłem ją w ten sposób, ponieważ jestem z nią bardziej zaznajomiony, ale albo powinno działać.