我正在尝试建立一个医生-病人预约系统。到目前为止,我有四张桌子:
Patient:- Doctor:- Appointment:- Availability:-
patientID doctorName time time
name room date doctorName
address patientID
doctorName
所有的关系都是一对一的,很多人都是从预约表中出来的。
患者:-患者详细信息表
医生:医生详细资料表
预约:预约表
可用性:-存储每个医生可用时间段的表
不过,这对我来说都是相对较新的东西,我很难接受。首先,在DOCTORID表中应该有一个DOCTORID字段,并将其用作主键而不是医生名称吗?即使那张表中可能只有少数记录。
其次,如果我要在所有表中更改为doctorid而不是doctorname,那么在需要时,我是否仍然能够轻松地访问doctorname?这部分让我很困惑,也许我只是想得太多了。
我问的原因是,比如说,我要出具一份显示医生姓名的预约报告,我应该能够根据关系得到报告的医生姓名,对吗?同样,基于患者ID的患者。
我想我的表中也有足够的信息来检查和防止约会冲突。
非常感谢,
最佳答案
你真的应该使用doctorsid
而不是doctorsName
。因为如果你打算把这些join
放在一起,那么最好先在ints上tables
然后在join
上varchars
。
还有一个问题,如果你仍然使用varchar
解决方案,如果医生改变了名字(婚姻或其他),会发生什么。您需要update
Realted表和Doctor表。如果你要使用int,你只需要在一个地方更改它(医生表)
是的,而且你什么时候要出示预约报告。你需要通过加入表格来获得医生的名字。
所以您的表结构应该如下所示:
Patient:- Doctor:- Appointment:- Availability:-
patientID DoctorId AppointmentTime AvailabilityTime
PatientName room AppointmentDate DoctorId
address doctorName patientID
DoctorId
关于sql - 门禁预约系统,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9977583/