2012-04-02 91 views
2

我正试图建立一个博士 - 病人预约系统。到目前为止,我有四个表: -访问预约系统

Patient:-   Doctor:-   Appointment:-    Availability:- 
patientID   doctorName   time      time 
name    room    date      doctorName 
address        patientID 
             doctorName 

所有的关系都是1至manys,与许多侧出来的预约表。

病人: - 病人细节

医生: - 对于医生表详细

预约: - 约会表

可用性: - 存储时隙表中的每个医生可用

但是这对我来说都是相对较新的东西,我越来越被抛出。首先在医生桌上,我应该有一个DoctorID字段,并将其用作主键而不是医生名字?尽管在该表中可能只有少数记录。

其次,如果我在所有表格中更改为DoctorID而不是doctorName,那么如果需要时仍可轻松访问doctorsName?这部分是混淆了我,也许我只是在想这些事情。

我问的原因是,比如说我要提交一份显示doctorID的约会报告,我应该能够根据这个关系得到医生的报告名称权吗?基于患者ID的患者也是如此。

我猜我也有足够的信息在表中检查和防止约会冲突。

非常感谢,

+0

这是功课? – Fionnuala 2012-04-02 13:51:32

+0

不,我一直在通过一个例子,它让我思考。 – mjsey 2012-04-02 13:56:52

回答

3

你真的应该使用doctorsid代替doctorsName。因为如果您计划将这些tables放在一起,那么对于整数然后在varchars上要好得多。

还有一个问题,如果你仍然在与varchar解决方案将发生什么,如果医生改变它的名字(婚姻或其他)。你需要update真实表和医生表。如果你接着用int,你只需要在一个地方改变它(医生桌)

是的,当你要产生你的预约报告。您需要通过加入表格来获取医生姓名。

所以,你的表结构应该是这个样子:

Patient:-   Doctor:-   Appointment:-    Availability:- 
patientID   DoctorId   AppointmentTime   AvailabilityTime 
PatientName  room    AppointmentDate   DoctorId 
address   doctorName   patientID 
             DoctorId 
+0

除了这个名字,时间和日期是Access中的保留字:) – Fionnuala 2012-04-02 14:09:52

+1

好的。我会为他改变它。不知道。当有人说访问我像地狱一样运行 – Arion 2012-04-02 14:12:43

+0

快乐吗?..... – Arion 2012-04-02 14:14:08