Q　\ue50a2009-07-20　\ue50b20　views　1　likes　City　Area　User　每个区域都有且只有1个城市。　每个用户至少有一个但可能有多个区域。　每个用户有1个城市,只有1个城市。　什么是最优雅的方式来建模?　目前,我有:　User,　UserArea,　Area,　City　凡UserArea是一个1:M的关系W　/用户,以及面积为1:1的城市。　问题是这样的:　用户可以具有当前模型下3个或4的区域,但区域的2可以是在城市“1”,而其他2个区域可能是在市“2”　。这违反了商业规则。　我应该只是为了防止这种事情,或者是一个更好的方法来进一步规范化,以便这种类型的悖论是不可能的吗?如果是这样,那么如何模拟此系统以便:　1　User　=　1　City;　1　Area　=　1　City;　1　User　=　M　Areas;　感谢您的见解。　用户能有一个城市,但没有地方?　–　这个答案是从SQLServerCentral提供给我的,它的确如我所期待的那样。有一种冗余(正如本论坛指出的那样),但是不存在不规则的可能性。　我对你的意见和建议很感兴趣。　CREATE　TABLE　[dbo].[Cities](　[CityID]　[int]　IDENTITY(1,1)　NOT　NULL,　[CityName]　[varchar](50)　NOT　NULL,　CONSTRAINT　[PK_Cities]　PRIMARY　KEY　CLUSTERED　(　[CityID]　ASC　)　)　CREATE　TABLE　[dbo].[Users](　[UserID]　[int]　IDENTITY(1,1)　NOT　NULL,　[UserName]　[varchar](50)　NOT　NULL,　[CityID]　[int]　NOT　NULL,　CONSTRAINT　[PK_Users]　PRIMARY　KEY　CLUSTERED　(　[UserID]　ASC　)　)　ALTER　TABLE　[dbo].[Users]　WITH　CHECK　ADD　CONSTRAINT　[FK_Users_Cities]　FOREIGN　KEY([CityID])　REFERENCES　[dbo].[Cities]　([CityID])　GO　ALTER　TABLE　[dbo].[Users]