每月时间表和约会的数据库



我正在尝试创建一个在医生和患者之间预约的小系统。这是我的数据库(直到现在(。我有两个问题: 1(当用户登录到应用程序时,我如何定义他是管理员,患者还是医生? 2(主要问题...我希望医生在登录时设置他的每月时间表(他空闲的日期和时间(,当患者登录搜索医生时,查看他的日程安排并预约。我想不出如何执行医生的这个"月度时间表"。也许它会像专业表一样与医生表的外键链接?但是我如何实际制定时间表呢?

如果您到目前为止在我的数据库中发现任何错误,请随时告诉我。 提前谢谢。

CREATE TABLE `user` (
 `user_id` int(4) NOT NULL AUTO_INCREMENT,
 `username` varchar(25) DEFAULT NULL,
 `password` varchar(25) DEFAULT NULL,
 `firstname` varchar(20) DEFAULT NULL,
 `lastname` varchar(20) DEFAULT NULL,
 PRIMARY KEY (`user_id`)
)

CREATE TABLE `admin` (
 `user_id` int(4) NOT NULL,
 PRIMARY KEY (`user_id`),
 FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
)

CREATE TABLE `patient` (
 `user_id` int(4) NOT NULL,
 `sin` int(4) DEFAULT NULL,    //social insurance number
 PRIMARY KEY (`user_id`),
FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
)

CREATE TABLE `speciality` (
 `speciality_id` int(4) NOT NULL AUTO_INCREMENT,
 `speciality_name` varchar(25) DEFAULT NULL,
 PRIMARY KEY (`speciality_id`)
)

CREATE TABLE `doctor` (
 `user_id` int(4) NOT NULL,
 `speciality_id` int(4) NOT NULL,
 PRIMARY KEY(`user_id`),
 FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`),
 FOREIGN KEY (`speciality_id`) REFERENCES `speciality` (`speciality_id`)
)
CREATE TABLE `appointment` (
 `doctor_id` int(11) NOT NULL,
 `patient_id` int(11) NOT NULL,
 PRIMARY KEY (`doctor_id`,`patient_id`),
 FOREIGN KEY (`doctor_id`) REFERENCES `doctor` (`user_id`),
 FOREIGN KEY (`patient_id`) REFERENCES `patient` (`user_id`)
)

下面是关系架构。

通过简要查看您的架构,它看起来不错。

">

日程安排"只是"约会"表,但您需要为其添加开始时间和结束时间。

桌子上的SELECTWHERE doctor_id = X AND start_time >= first-day-of-the-month AND end_time < first-day-of-next-month给你X医生的时间表。

编辑

要确定用户是管理员、患者还是医生,您有多种选择。

  • 选项 #1:引入具有可能值的"用户类型":"ADMIN", "PATIENT", "DOCTOR"

  • 选项 #2:使用查询来确定是否可以在adminpatientdoctor表中找到useruser_id

  • 选项 #3:(我最喜欢的(将三个外键添加到user表中:admin_idpatient_iddoctor_id,其中只有一个可能是非空的。

最后一种方法的优点是它保持了架构的关系性质:用户行与(管理员、患者或医生(行相关,数据库可以强制引用完整性,这意味着如果patient_id字段为非 null,则数据库将确保此字段的值实际上对应于patient表中的user_id值之一。

相关内容

  • 没有找到相关文章

最新更新