Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Ràng buộc duy nhất trên nhiều bảng

Thêm bảng thứ 4 cụ thể cho các giá trị này mà bạn muốn là duy nhất, sau đó liên kết các khóa này từ bảng này với các khóa khác bằng cách sử dụng mối quan hệ một với nhiều. Ví dụ:bạn sẽ có bảng duy nhất với ID, AppName và ItemName để tạo thành 3 cột. Sau đó, hãy liên kết bảng này với những bảng khác.

Để biết cách thực hiện điều này, đây là một ví dụ điển hình Tạo mối quan hệ một đến nhiều bằng SQL Server

CHỈNH SỬA: Đây là những gì tôi sẽ làm nhưng xem xét nhu cầu máy chủ của bạn, bạn có thể thay đổi những gì cần thiết:

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

Từ những gì tôi có thể cho biết cú pháp của bạn là ổn, tôi chỉ đơn giản là thay đổi nó theo cách này đơn giản vì tôi quen thuộc hơn với nó nhưng cũng nên hoạt động.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sao lưu cơ sở dữ liệu SQL Server bằng T-SQL

  2. Nhận ngày từ một số tuần trong T-SQL

  3. Cách @@ MAX_CONNECTIONS hoạt động trong SQL Server

  4. Cập nhật SQL với row_number ()

  5. Sự kiện chờ SQL Server -2