首页 > 解决方案 > 如何区分在给定时刻可以扮演相同角色的两个实体

问题描述

我正在对来自系统的数据进行建模。

我有一个患者实体。该实体可以连接到该站点以检索他的医疗数据。

我还想为有权在网站上操作的人(管理员、主管和输入操作员)创建一个 USER 实体。

由于患者可以连接到站点并检索有关他的信息,并且服务成员可以做同样的事情,在这种情况下,患者实体不会与用户实体混淆吗?

还是我们应该区分这两个实体?

谢谢你。

我创建了实体 PATIENT,但我对此表示怀疑。

标签: mysqlsql

解决方案


出于定义数据模型的目的,您似乎遇到了患者是用户的情况。

这只是建议有两个独立的实体,用户 ID 是患者的属性。所以:

create table users (
    user_id int auto_increment primary key,
    -- information about users
    . . .
);

create table patients (
    patient_id int auto_increment primary key,
    user_id int,
    -- information about patients
    . . .
    constraint fk_patients_user_id foreign key (user_id) references users(user_id)
);

然后,您可以开始定义角色,例如“查看者”、“编辑者”、“维护者”,并提供一个将角色分配给用户的表格——并且只分配给用户。对于患者,默认角色是“仅查看我自己的记录”。其他人可能有更广泛的角色。


推荐阅读