我可以在XAMPP phpmyadmin中的父表的多个子表中使用相同的外键吗



这些书是学术性的,没有指定如何处理外键。为了大学作业,我正在为一家牙科诊所建立一个SQL数据库。

如果我必须创建外键,我是每张桌子都需要一个,还是可以让一位牙科专家转诊没有外键。

我在牙科诊所数据库中有5张表。预约PK(主键(app_id患者PK pat_id付款PK pay_id治疗PK treat_id转诊PK ref_id

-- Constraints for table `appointment`
--
ALTER TABLE `appointment`
ADD CONSTRAINT `patient` FOREIGN KEY (`pat_id`) REFERENCES `patient` (`pat_id`),
ADD CONSTRAINT `pay_id` FOREIGN KEY (`pay_id`) REFERENCES `payment` (`pay_id`);
--
-- Constraints for table `patient`
--
ALTER TABLE `patient`
ADD CONSTRAINT `appointment` FOREIGN KEY (`app_id`) REFERENCES `appointment` (`app_id`),
ADD CONSTRAINT `ref` FOREIGN KEY (`ref_id`) REFERENCES `referral` (`ref_id`),
ADD CONSTRAINT `treat` FOREIGN KEY (`treat_id`) REFERENCES `treatment` (`treat_id`);
--
-- Constraints for table `payment`
--
ALTER TABLE `payment`
ADD CONSTRAINT `app` FOREIGN KEY (`app_id`) REFERENCES `appointment` (`app_id`),
ADD CONSTRAINT `pat` FOREIGN KEY (`pat_id`) REFERENCES `patient` (`pat_id`);
COMMIT;

外键用于建立表之间的关系,并确保该字段中数据的完整性。一个表可能有零个或多个外键。创建多个表并添加外键的过程称为规范化。如果你能仔细阅读并正确理解它,那就太好了。这将对你的一生有所帮助。

在你的情况下,在我看来,假设一个病人可以独立存在,这个病人没有任何依赖性。

患者有一个或多个预约。但是,没有患者,预约就不可能存在。一个预约只有一个患者,因此在这种情况下,表Appointment中必须有Patient的外键。

预约可以有一次或多次付款(取决于您的业务案例(。没有预约,付款就不可能存在。然而,将付款与患者联系起来有点多余,因为你可以在与付款相关的预约中找到患者。尽管如此,这还是基于业务需求的个案基础。

现在假设您有一个患者id为1。您正在添加一个新的预约,但由于错误,没有将1用于外键患者id,而是使用了另一个值,如100。在系统中,没有id为100的患者。执行插入操作时,您将收到一个外键约束错误,通知您不存在id为100的患者。外键确保表中使用的外键的数据完整性,如表预约中的外键患者id。

最新更新