Это источник синтаксической ошибки;
первичный ключ в таблице Bldg:
CONSTRAINT [PK_Bldg] PRIMARY KEY ([bldg], [owner])
А в таблице KeyToBuilding
, [FK_KeyToBuilding_Bldg]
вы пытаетесьссылка ([owner], [bldg])
вместо ([bldg], [owner])
Помогает, если вы просто немного очистите код, следующее выполняется нормально:
CREATE TABLE [dbo].[Owners]
(
[Owner] [varchar](10) NOT NULL
,CONSTRAINT [PK_Owners] PRIMARY KEY CLUSTERED ([Owner])
) ;
CREATE TABLE [dbo].[Key]
(
[owner] [varchar](10) NOT NULL
,[key_id] [varchar](10) NOT NULL
,[description] [varchar](10) NOT NULL
,CONSTRAINT [PK_Key] PRIMARY KEY CLUSTERED ([owner], [key_id])
) ;
ALTER TABLE [dbo].[Key] ADD CONSTRAINT [FK_Key_Owners] FOREIGN KEY([owner]) REFERENCES [dbo].[Owners] ([Owner]) ;
CREATE TABLE [dbo].[Bldg]
(
[bldg] [varchar](10) NOT NULL
,[owner] [varchar](10) NOT NULL
,CONSTRAINT [PK_Bldg] PRIMARY KEY CLUSTERED ( [bldg], [owner] )
) ;
ALTER TABLE [dbo].[Bldg] ADD CONSTRAINT [FK_Bldg_Owners] FOREIGN KEY([owner]) REFERENCES [dbo].[Owners] ([Owner]);
CREATE TABLE [dbo].[KeyToBuilding]
(
[owner] [varchar](10) NOT NULL
,[bldg] [varchar](10) NOT NULL
,[key_id] [varchar](10) NOT NULL
,CONSTRAINT [PK_KeyToBuilding] PRIMARY KEY CLUSTERED ([owner], [bldg], [key_id])
);
ALTER TABLE [dbo].[KeyToBuilding] ADD
CONSTRAINT [FK_KeyToBuilding_Key] FOREIGN KEY([owner], [key_id]) REFERENCES [dbo].[Key] ([owner], [key_id])
, CONSTRAINT [FK_KeyToBuilding_Bldg] FOREIGN KEY([bldg], [owner]) REFERENCES [dbo].[Bldg] ([bldg], [owner]) ;
Теперь о модели - я делаюЯ не совсем понимаю, но если бы я хотел отслеживать людей, ключи и здания, это бы:

Модель выше не отслеживает владельцев зданий, поэтому BuildingOwner
таблица добавлена.
- Человек может владеть несколькими зданиями.
- Здание может принадлежать нескольким людям (товарищество).

Ключ также может иметь владельца, не обязательно того, кто имеет ключ в данный момент.
- Ключ может открыть одно здание, одно здание может быть открыто многими ключами.
- Ключ имеет владельца.
- Ключ удерживается владельцем ключа, который может быть, а может и не быть владельцем ключа.
