我正在开发一个关系数据库,并坚持如何完成某些事情。
我有很多桌子,但其中有两个是问题。我有几千种海洋物种,称为“物种”。我有另一个表,其中包含分为188个不同子区域的全球海洋,称为“subRegions”。当然,每个物种都可以在多个子区域中找到。 subRegions表的字段为“id”,“name”和“coordinates”。
从种类id中设置subRegions id的外键很容易,但是如何设置它以便可以同时显示每个物种的多个区域?
有什么想法吗?
答案 0 :(得分:1)
所以你所拥有的是一种多对多关系,可选择参与每种关系。所以你会发现你的物种没有,一个或多个子区域;每个subRegion可能包含没有,一个或多个物种。
实现这一点,你将有一个中间表来记录这种关系。那就是你的新表叫做speciesSubRegions。该表将包含species_id和subRegion_id作为复合主键。
然后,这种关系看起来物种与speciesSubRegions有一对多的关系,可选择参与物种方面,并强制参与speciesSubRegions方面。然后subRegions与speciesSubRegions有一对多的关系,这在subRegions方面是可选的,在speciesSubRegions上是强制性的。
清除泥土?
答案 1 :(得分:0)
通过中间表关联物种和子区域提供了一些优势,但我相信在某些应用中,创建另一个表可能有点过分。我意识到这个问题已经得到解决,但是下面我已经提供了一种不同的方法来实现目标,而无需创建额外的表。
一种简单快捷的方法来完成与多个子区域相关的物种。
Filemaker将每个返回视为关系的不同值,因此此时您可以根据应用程序的设置显示相关数据。
如果要从门户中选择物种,可以设置脚本触发器以将“current_species_id”字段设置为所选门户行的ID,然后使用另一个基于subRegions2的门户来显示关联的子区域。然后,您可以对这些子区域执行任何操作。选择以获取更多信息,或创建新窗口。这只是实现相同目标的另一种方式,但比新表更依赖于关系。同一工作的不同工具。