MySQL 访问控制列表

MySQL Access Control List

我正在尝试实现一个患者可以访问医疗记录的站点。我的问题是临床医生可以在哪里访问记录。因此,如果他们在访问控制列表中,该列表说明哪些医生可以查看患者的记录,那么他们应该只能查看患者的记录。我的问题是临床医生与访问控制列表之间的关系是什么类型?会是多对一、多对多等等吗?此外,我不完全确定外键。

这是我想象中的样子,任何帮助都会很棒。

AccessList table 表示 Patient table 中的患者与 Clinician [=24] 中的临床医生之间的多对多关系=].因此,来自 Clinician table 的一位临床医生将多次出现在 AccessList table 中,因为他们可以访问许多患者的记录,即它是一对多的table 之间的关系。来自 Patient table 的患者可能有多个临床医生,即与 AccessList table 的一对多关系也是如此。因此 AccessList table 到 Patient table 中的 idPatientClinician idClinician 中应该有外键 table.

问题:

  1. 我不明白为什么您的访问列表中同时有患者和医疗记录。 (如果 1:1 患者病历)
  2. 我不明白你为什么有关于 Clinician 的 accessList 信息。这意味着临床医生只能访问 1 个访问列表?好像不对。

问题:

  • 您是否正在尝试设置数据,以便您拥有 ACL 组,您将患者分配给 "group",然后该组的所有临床医生部分都可以访问,因此您不必管理单个患者临床医生协会?如果是这样,我们需要 ACL_GROUP table 并且应该将临床医生分配到一个组;或者您需要 ACL table 中的层次结构。

我可能如何使用最新信息设置数据:

患者

  • idPatient (PK)

医疗记录

  • idMedicalrecord (PK)
  • Patient_idPatient(FK 给患者)

临床医生

  • idClinician (PK)

访问列表

  • idAccessList (PK)
  • AccessListName(组名或患者姓名)
  • Patient_idPatient(对患者的 FK)(复合唯一索引 1)
  • Clinician_idClinician(转给临床医生)(复合唯一索引 1)
  • IdAccessList_Parent(也许... FK 到 AccessList_IDAccessList)用于管理 "security groups")

这允许以下内容:

  1. 一个病历可以有1:M个病历
  2. 一份医疗记录关联到 1 位且仅关联到 1 位患者
  3. 临床医生可以访问患者及其所有病史;但如果有多个,则不是具体的医疗记录。如果您需要限制对某些患者医疗信息的访问,那么与其将 accessList 加入 Patient,不如将其加入 MedicalRecords;从而允许您限制特定的医疗信息;或同时保留两者以允许访问 对整个患者;或特定医疗记录(如果存在多个)。