对SQL有点陌生,所以这里需要一些帮助。首先,请参阅我的桌子图片(床桌、病房桌、病人桌)。
我正在使用Oracle版本19.4.0.354作为学习工具。
=====================================================================
编辑:因此,我已经更改了表如下:
床(BEDNO,BED_OCCUPIEDDATE,WARDNO,PATIENTNO)
PATIENTS(PATIENTNO,FIRSTNAME、LASTNAME、地址、性别、DATEOFBIRTH、MARITALSTATUS、PHONENO、REGISTEREDDATE、WAITINGLISTDATE、EXPECTEDSTAY、DATEWARDED、EXPECTEDLEAVE、DATELEFT)
WARD(WARDNO,WARDNAME,LOCATION,NUMBEROFBED,EXTNO)
BedNo在整个数据库中是唯一的。编号从1-240。这意味着WardA会有1-10床,WardB可能有11-20层,等等。
,只有在病房有床位的情况下,我才能允许将病人分配到病房?因为目前,如果您提到我的ERD.,床就不会被“标记”到病房。
发布于 2020-03-21 17:45:38
稍微改变一下设计。
先要病房的桌子。
CREATE TABLE ward
(wardno ...,
...
PRIMARY KEY (wardno)
...);
然后,在床的桌子上,参考使用这张床的病房,而不是占据它的病人。
CREATE TABLE bed
(bedno ...,
wardno ...,
...
PRIMARY KEY (bedno),
FOREIGN KEY (wardno)
REFERENCES ward
(wardno),
...);
在病人的桌子上参考病人所占的床。一张不存在的床不能被参考,没有床,病人就得不到病房。通过宣布裁判床是唯一的,只有一个病人可以占用同一张床。如果您不希望任何病人没有床,您也可以声明床参考NOT NULL
。
CREATE TABLE patient
(patientno ...,
...
bedno ... NOT NULL,
PRIMARY KEY (patientno),
FOREIGN KEY (bedno)
REFERENCES bed
(bedno),
UNIQUE (bedno),
...);
顺便说一句,如果这是ward.numberofbed
应该存储的,那么你不应该把病房里的床位数量计算出来。相反,您应该在需要时查询该数字。为了方便起见,您也可以使用视图,因此不需要重复这样的查询。
https://stackoverflow.com/questions/60790895
复制相似问题