gpt4 book ai didi

mysql - 如何实现一张表到两张表的一对一关系?

转载 作者:行者123 更新时间:2023-11-29 12:08:13 24 4
gpt4 key购买 nike

我有包含两个表的 Mysql 数据库:
一个是 payment_by_check 表,另一个是 payment_by_credit_card 表。

有一个选项可以取消所有这些,所以我创建了一个新的取消表。
每笔支票付款或信用卡付款在取消表中可能有记录,也可能没有。

我不知道构建它的正确方法是什么,选项是:

  1. 在每个付款表中添加取消 ID 列。
  2. 在取消表中添加一列用于通过支票 ID 进行付款,以及另一条是信用卡ID支付的,每条记录都会其中之一是空的。

付款表非常大,因此我宁愿避免向这些表添加列。

我的问题是:
选择第二个选项是否正确?
对性能有影响吗?

最佳答案

支票付款和信用卡付款是所谓“通用化/特化”的典型案例。这大致相当于对象建模中的类和子类。您可以通过搜索网络找到一些关于如何在 ER 模型中包含 gen-spec 的好文章。

当您使用关系表来实现此设计时,事情会变得有趣。有两种广泛使用的方法:单表继承和类表继承。 StackOverflow 中有两个具有这些名称的选项卡。如果您检查这些选项卡下的信息,您将获得概览。您也可以在网上查找这些内容。我特别喜欢马丁·福勒的治疗方法。每种替代方案都有其优点和缺点。

就您而言,我将使用单表继承方法,两种类型都只有一个付款表。您必须有一个列来说明每笔付款的类型,再加上一些仅与信用卡付款相关的列,以及一些仅与支票付款相关的列。

但这是你的决定。如果您决定改用类表继承,并且使用共享主键在所有三个表之间共享 Id,您也会发现这也很好。

关于mysql - 如何实现一张表到两张表的一对一关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31110481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com