0

皆さん、私の個人的な友人のデータベースを作成しようとしています。データベースの開発には不慣れでした。対処する。基本的に、私の問題は、「場所」と呼ばれる別のテーブルとの関連付けを持つ「ルーム」テーブルです。場所はあなたが期待するものすべて(buildingID、streetAddressなど)であり、RoomはbuildingIdを含む外部キーを持っています。私は自分の "部屋"テーブルがbuildingIdに基づいて部屋番号のためのユニークな値を持つことを望みます。データベースデザイン - 「部屋」テーブルの重複を防ぐ

もっと明確なアイデアを得るために、私はこれらのテーブルを作成するために使用しているスクリプトを& pにします。

CREATE TABLE [dbo].[Location](
[buildingId] [int] IDENTITY(1,1) NOT NULL, 
[streetAddress] [varchar](50) NOT NULL, 
[postalCode] [varchar](7) NOT NULL, 
[province] [varchar](30) NOT NULL, 
[city] [varchar](30) NOT NULL, 
CONSTRAINT [PK_Location] PRIMARY KEY CLUSTERED 
(
[buildingId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], 
CONSTRAINT [UN_postalCode] UNIQUE NONCLUSTERED 
(
[postalCode] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], 
CONSTRAINT [UN_streetAddress] UNIQUE NONCLUSTERED 
(
[streetAddress] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 



CREATE TABLE [dbo].[Room](
[rmId] [int] IDENTITY(1,1) NOT NULL, 
[roomNum] [varchar](10) NOT NULL, 
[floor] [int] NOT NULL, 
[capacity] [int] NOT NULL, 
[permission] [bit] NOT NULL, 
[buildingId] [int] NOT NULL, 
CONSTRAINT [PK_Room_1] PRIMARY KEY CLUSTERED 
(
[rmId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

SET ANSI_PADDING OFF 
GO 

ALTER TABLE [dbo].[Room] WITH CHECK ADD CONSTRAINT [FK_Room_Location] FOREIGN KEY([buildingId]) 
REFERENCES [dbo].[Location] ([buildingId]) 
GO 

ALTER TABLE [dbo].[Room] CHECK CONSTRAINT [FK_Room_Location] 
GO 

ご協力いただければ幸いです。

ありがとうございました。

答えて

2

テーブルレベルのユニーク制約はありますか?

ALTER TABLE dbo.Room WITH CHECK ADD 
    CONSTRAINT UQ_Room_RoomBuildingLocation UNIQUE (roomNum, buildingId) 

は、これは良い先生を支援するために、あまりにもできるようになるどの列に

+0

ああ男!おかげでINCLUDE一意のインデックスすることができます。 – Steve

関連する問題