【问题标题】:Can I use the same foreign key in multiple child tables from the parent table in XAMPP phpmyadmin?我可以在 XAMPP phpmyadmin 的父表的多个子表中使用相同的外键吗?
【发布时间】:2021-07-06 14:56:37
【问题描述】:

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

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

我在牙科诊所数据库中有 5 个表。 约会PK(主键)app_id 患者 PK pat_id 支付PK pay_id 治疗PKtreat_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;

【问题讨论】:

  • 你的问题完全令人困惑......我建议editing 它,包括示例 DDL 并指出究竟是什么不起作用或你认为它有什么问题。
  • 我修改了问题。进行约束时,我需要先将其删除,然后再删除外键,并且表 Patient 和表 appointment 中有 3 个外键,但由于完整性约束,无法在其他表中进行 FK。我对外键应该做什么或它的目的有零了解。我应该说实话。

标签: sql database phpmyadmin xampp rdbms


【解决方案1】:

外键用于建立表之间的关系并确保该字段中数据的完整性。一个表可能有零个或多个外键。创建多个表并添加外键的过程称为规范化。阅读并正确理解它对您来说会很好。这将在你的一生中有所帮助。

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

一位患者有一个或多个预约。然而,没有病人就不能预约。一个约会只有一个病人,所以在这种情况下,表Appointment中必须有一个外键Patient

约会可以有一笔或多笔付款(取决于您的业务案例)。没有预约就无法付款。但是,将付款与患者联系起来有点多余,因为您可以在与付款相关的预约中找到患者。这仍然是基于业务需求的个案基础。

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

【讨论】:

  • 我在构建这两个表时发现了这一点。病人表和预约表。我想知道如何让预约表占用我输入到患者表中的数据。这是对 FK 的一个很好的解释。它澄清了我所缺乏的理解。
  • 您必须编写 sql 查询来检索数据。要为给定特定约会的患者选择所有数据,查询将类似于“从约会中选择 * ainner join patient p on a.pat_id = p.pat_id where a.app_id = X”。您必须将 X 替换为要获取其数据的所需约会 ID。
猜你喜欢
  • 1970-01-01
  • 2013-04-13
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
相关资源
最近更新 更多