我有两张桌子 - 第一张是地方,第二张是位置。地点可以有零个或多个位置。Place PK 是 id,location PK 是两个组件键 place_id + id。
在第三张桌子(例如发票)中,我可以找到没有任何位置的地方。
问题是:如何在发票表中设置FK?
- 我不能只使用 place.id 作为 FK,因为我想知道位置。
- 如果我使用由 place_id + id 列组成的位置 PK - 那么与表位置的关系不一致 - 某些地方可以有 0 位置。
因此,主要问题是某些地方可以有 0 个位置。
是的,我可能会在位置表中设置代理 PK,并将 place_id FK、location_id FK 设置为 NULL。但是,要求是位置和位置键是自然的(基于公司组织结构)。第二个想法是进行一对一/多关联,并将位置 id 值 0 用于具有零位置的位置,并在用户界面中隐藏该位置。实际上,然后我需要为每个地方放置位置 0(无位置)。
谢谢。