假设我有一个实体,例如:
人
-id
-name
-address
-phone
然后我希望这个人有一些字符串,并且可能会为每个人重复很多次,例如邻居,这就是我认为应该做的事情:
人
-id
-name
-address
-phone
-idNeighborhood
并创建一个新表
邻
-id
-name
当然,idNeighborhood是邻居id的外键。
现在,我想的是我每次都必须加入JOINS(假设我会在90%的情况下使用邻居我想要使用某些人),所以,这是错:
人
-id
-name
-address
-phone
-neighborhoodName
我会保存邻居的名字,但当然会重复很多次(在另一种情况下我会重复很多ID ......所以...)..
另外,在我的特殊情况下,邻居永远不会成长,它总会有一个名字,这就是为什么我觉得这样做更好,但我不确定...... 我认为唯一不利的一点就是我不能制作一个邻域索引,然后它会变慢或不变?
答案 0 :(得分:1)
这是一个关于你想要建模的问题。您应该在数据库中对与您尝试使用系统解决的问题相关的事物进行建模。
您是否对社区感兴趣?
您希望制作邻居表的一些原因: -
请注意,您也可以将所有相同的逻辑应用于name列。但是,只有当你的数据库关于人们的名字时,你才会这样做,就像你应该建立一个邻居专栏一样,如果建模社区将有助于解决你正在解决的问题。
答案 1 :(得分:0)
这实际上取决于您的要求。如果您需要显示邻居的详细信息,例如NAME,PROFESSION等。在您的应用中,最好使用第一种方法,即创建具有所需属性的实体。
如果你真的不需要任何关于你邻居的细节,你只需要这个名字,你可以采用你的第二种方法