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
ご協力いただければ幸いです。
ありがとうございました。
ああ男!おかげでINCLUDE一意のインデックスすることができます。 – Steve