因此重新考虑您的实体可以从“您拥有什么物理对象以及这些对象可以做什么”的角度来考虑它
首先将它们全部识别,然后将它们组合在一起。
例如,职员,医生,全科医生和患者都是“人”,并且只共享类似的信息。“人”的类型不同,因此将它们组合起来!
每个病房都有工作人员,所以您会有人,病房和病房员工
每个人都可以有地址信息。
一个人可以入住病房
一个被录取的人可能会受到多种医生的治疗,并患有多种疾病
请记住,如果您必须在多个地方更新信息以保持准确性,则需要对其进行合并。
考虑实体之间的基数:病房是否需要指派护士? Nurce总是在病房里吗?一个病房可以有零个,一个或多个护士吗?
病人的一种或多种疾病可以为零吗?
一个博士可以拥有零个或多个患者吗?
博士仅限病房吗?
博士也有专长吗? (他们可以有多个吗?)
以下是我看到的实体:
- 沃德
- WardType
- 警卫队
- 入学
- 人员
- PersonType
- 地址
- PatentAdmittanceAilments
- AilmentType
- TreatmentType
然后是我如何看待它们之间的关系。重新阅读这4页,看看是否正确。问什么问题,问什么丢失。还有太多吗?
围场
- WardID(int)PK
- 名称(varchar(10))
- WardTypeID(int)
警卫队
- WardID(int)PK
- 作为护士的StaffID(Varchar(6))PK(唯一约束)只能在1个病房中工作
- 最有效日期显示护士成为病房负责人的时间
- LeadNurseID(varchar(6))FK到PersonID
入学
- AdmittanceID(int)PK
- PatientID(VARCHAR(6))
- WardID(Int)FK到病房
- 入学日期(日期)
- 出院日期(日期)
人员
- PersonID(varchar(6))PK
- PersonTypeID(整数)
- 名称(varchar(30))
- DOB日期(日期)
- GPID(6,0)
- AddressID(int)FK到地址
地址
- AddressID(Int)PK
- 地址号(varchar(10))
- BuildingName(varchar(30))
- Unit#(varchar(10))
- 城市(Varchar(50))
- 街道(varchar(50))
- 状态(varchar(02))
- 国家(varchar(10))
- 邮政编码(varchar(10))
PatientAdmittanceAilments
- AdmittanceID(Int)PK_1of3
- DrID(varchar(06))FK to Person
- 从AilmentID(int)FK到Ailment PK2of3,需要创建一个触发器
- 确保ComplianceID
- AilmentAdditional(varchar(40))与DTS / DTE不重叠
- 治疗的治疗ID(int)FK
- TreatmentAdditional(varchar(40))
- DTS(日期)PK3of3
- DTE(日期)
PersonType
- PersonTypeID(Int)PK
- 说明(Varchar(30))(例如:员工,患者,医生,全科医生)
WardType
- WardTypeID(int)PK
- 说明(varchar(20))(例如:骨科,老年医学...)
疾病类型
- AilmentTypeID(int)PK
- 说明(varchar(40))
治疗
- TreatmentTypeID(int)PK
- 说明(varchar(40))