one way to model it is this. The PK will ensure that a location can only have one parent.You can use a recursive common table expression to select out the hierarchycreate table locationHierarchy (locationID int not null ,parentLocationID int null) --NULL will be the rootsgoalter table locationHierarchyadd constraint PK_locationHierarchy primary key (locationID)go
EDIT:if you add a primary key to your location table then you can add your referential integrity:goalter table locationHierarchyadd constraint FK_locationid_LocationID foreign key (locationid) references dbo.location(locationid)goalter table locationHierarchyadd constraint FK_ParentLocationid_LocationID foreign key (parentLocationid) references location(locationid)go
Be One with the OptimizerTG