Oracle SQL Developer-如何向图添加约束

时间:2018-12-05 15:49:12

标签: oracle database-design oracle-sqldeveloper erd

我需要使用oracle SQL Developer创建ER图,我已经创建了它,但是我在努力添加约束,有人对此有任何建议吗?

我正在开发医院数据模型。谢谢

**enter image description here**

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

因此重新考虑您的实体可以从“您拥有什么物理对象以及这些对象可以做什么”的角度来考虑它

首先将它们全部识别,然后将它们组合在一起。

例如,职员,医生,全科医生和患者都是“人”,并且只共享类似的信息。“人”的类型不同,因此将它们组合起来!

每个病房都有工作人员,所以您会有人,病房和病房员工 每个人都可以有地址信息。 一个人可以入住病房 一个被录取的人可能会受到多种医生的治疗,并患有多种疾病

请记住,如果您必须在多个地方更新信息以保持准确性,则需要对其进行合并。

考虑实体之间的基数:病房是否需要指派护士? 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))