我正在为一个需要建模的数据问题而绞尽脑汁。我会尽力概述表格和关系
users (basic user information name/etc)
users.id
hospitals (basic information about hospital name/etc)
hospitals.id
pages
pages.id
user_id (page can be affiliated with a user)
hospital_id (page can be affiliated with a hospital)
这是新数据开始的地方,我遇到了问题
groups (name of a group of pages)
groups.id
groups_pages (linking table)
group_id
page_id
现在这是棘手的部分.. 一个组可以由用户或医院“拥有”,但这些页面不一定与该用户/医院相关联.. 此外,还有另一种类型的实体(公司)可以“拥有”该组
显示群组时,我需要知道群组是什么类型(用户/医院/公司),并能够获得正确的附属数据(姓名、地址等)
我对如何将组链接到其各自的所有者一无所知,因为我知道其各自的所有者可能不同。
最佳答案
Party
是个人或组织的通用术语。- 在
Party
表中保留所有常用字段(电话号码、地址..)。 Person
和Hospital
应该只有子类型的特定字段。- 如果 company 与
Hospital
有不同的列集,只需将其添加为另一个子类型即可。 - 如果
Hospital
和 company 有相同的列,将Hospital
重命名为更通用的Organization
PartyType
是鉴别器{P,H}
关于数据库架构推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11471251/