CREATE TABLE Address ( -- Address has Address Id, AddressId int IDENTITY NOT NULL, -- maybe Address is in Legislative District and Legislative District has District Number, LegislativeDistrictNumber int NULL, -- maybe Address is in Legislative District and Legislative District is for State Or Province and State Or Province has State Or Province Id, LegislativeDistrictStateOrProvinceId int NULL, -- maybe Address is assigned Postal Code, PostalCode int NULL, -- maybe Address is in State Or Province and State Or Province has State Or Province Id, StateOrProvinceId int NULL, PRIMARY KEY(AddressId) ) GO CREATE TABLE Politician ( -- maybe Politician represents Legislative District and Legislative District has District Number, LegislativeDistrictNumber int NULL, -- maybe Politician represents Legislative District and Legislative District is for State Or Province and State Or Province has State Or Province Id, LegislativeDistrictStateOrProvinceId int NULL, -- Politician has Politician Id, PoliticianId int IDENTITY NOT NULL, PRIMARY KEY(PoliticianId) ) GO CREATE VIEW dbo.Politician_LegislativeDistrictNumberLegislativeDistrictStateOrProvinceId (LegislativeDistrictNumber, LegislativeDistrictStateOrProvinceId) WITH SCHEMABINDING AS SELECT LegislativeDistrictNumber, LegislativeDistrictStateOrProvinceId FROM dbo.Politician WHERE LegislativeDistrictNumber IS NOT NULL AND LegislativeDistrictStateOrProvinceId IS NOT NULL GO CREATE UNIQUE CLUSTERED INDEX IX_PoliticianByLegislativeDistrictNumberLegislativeDistrictStateOrProvinceId ON dbo.Politician_LegislativeDistrictNumberLegislativeDistrictStateOrProvinceId(LegislativeDistrictNumber, LegislativeDistrictStateOrProvinceId) GO CREATE TABLE StateOrProvince ( -- State Or Province has State Or Province Id, StateOrProvinceId int IDENTITY NOT NULL, PRIMARY KEY(StateOrProvinceId) ) GO ALTER TABLE Address ADD FOREIGN KEY (LegislativeDistrictStateOrProvinceId) REFERENCES StateOrProvince (StateOrProvinceId) GO ALTER TABLE Address ADD FOREIGN KEY (StateOrProvinceId) REFERENCES StateOrProvince (StateOrProvinceId) GO ALTER TABLE Politician ADD FOREIGN KEY (LegislativeDistrictStateOrProvinceId) REFERENCES StateOrProvince (StateOrProvinceId) GO