将一种类型的对象与多种其他对象之一相关联的最佳方法是什么?
例如,一个简化的场景:
tblNews (_newsId_, _title_)
1, Hello world
2, Lorem ipsum
tblPeople (_personId_, _personName_)
1, John Smith
2, Joe Bloggs
tblPlaces (_placeId_, _placeName_)
1, Townville
2, Smallplace
定义tblNews中的项目与人员和地点之间的关系的最佳方法是什么(例如,新闻项目newsId = 1(Hello world)可能与person personId = 2(Joe Bloggs)相关并且PlaceId = 1 (Townville))?我考虑过使用两个表:
tblObjectTypes (_typeName_, _typeTable_, _typePK_)
person, tblPeople, personId
place, tblPlaces, placeId
tblNewsRelationships (_relationshipId_, _newsId_, _objectType_, _objectKey_)
1, 1, person, 2
2, 1, place, 1
这里tblNewsRelationship定义关系中的哪个新闻项,它涉及哪种类型的对象以及该对象的主键。
tblObjectTypes包含新闻项可能涉及的每种类型的对象,该类对象存储在哪个表中以及应该使用哪个字段来查找它们。代码将转到tblObjectTypes,查找关系中定义的objectType,并使用给定的typeTable和typePK来查找给定其objectKey的正确记录。
但是,这看起来似乎应该是一个常见的问题,这似乎非常令人费解。我进行了搜索和搜索,但是如果不知道描述这种关系的术语,就找不到任何有用的东西,所以我不知道是否有一种“正确”的方式来创建这种关系。
很抱歉提出这么长的问题。
答案 0 :(得分:1)
新闻项目可以与某个人和某个地方相关,对吧?因此,新闻表应该有一个名为person_id的列和一个名为place_id的列。每个新闻行都有相应人员或地点的相应身份证号码。
“外键”是您想要的术语。