【问题标题】:DB Relationships数据库关系
【发布时间】:2017-12-15 23:40:39
【问题描述】:

我想建立关系:

  • 用户
  • 帐户
  • 卡片
  • 银行
  • credit_processors。

问题是如何在数据库中设计模型。 当遇到这些情况时,我感到很困惑:

  1. 银行可以发行一张卡,银行会将卡链接到信用处理器,例如,Chase 会在他们的卡上使用 Visa,美国银行会在他们的卡上使用 Mastercard 和 Visa。
  2. 信用卡可以由信用处理商发行而无需银行,例如,Visa 可以发行自己的卡,美国运通可以发行自己的卡。

当数据库中的关系是这样的:

  • 账户属于银行,可以通过银行拥有信用处理器

  • 一个帐户直接属于信用处理器,没有银行。

这是我的数据库图的链接。 有没有更好的方法来设计这个db diagram

【问题讨论】:

    标签: ruby-on-rails database schema-design


    【解决方案1】:

    看起来不错,但我认为您不需要“resources”表,因为您可以将 bank_id 和 credit_processor_id 存储在“cards”表中

    只是从上到下穿过它

    • 用户拥有多个帐户
    • 一个账户有_一张卡(一个账户可以有多张卡)?
    • 如果您认为您希望经常查看所有用户卡,则卡应该属于_帐户、银行(可选字段)、CreditProcessor、类别和可能的用户

    您可能还希望在 Banks 和 CreditProcessors 之间建立多对多关系,具体取决于您认为查询的频率。

    【讨论】:

    • 感谢@SomeSchmo 抽出宝贵时间。资源表的想法是在银行和 credit_processors 之间建立多对多关系,这正是我苦苦挣扎的地方。您将如何设计多对多(银行、信用处理商)关系?
    • 我明白了。这很棘手,我可以理解为什么您想让 Card 指向该连接表,然后该连接表将引用 Bank 和 CreditProcessor,但是因为您可以拥有没有 Bank 的 Card,这不太好用。由于这个细节,我会保持连接表简单,只有银行和它们关联的 CreditProcessors,并让卡本身存储它们所属的银行和 CreditProcessor 的 ID_to
    • 如果我想列出属于银行的所有 credit_processors 怎么办?反之亦然?或者列出 bank 或 credit_processor 下的所有卡?
    • 只要您正确设置了数据库表和 Ruby 模型,ActiveRecord 应该会为您完成大部分工作。你以前在 Rails 中做过连接表之类的事情吗?
    • Ruby 模型知道如何在没有 Resources 表的情况下列出 Banks 和 Credit_processors 及其关系?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2015-03-06
    • 2019-09-17
    • 2010-12-20
    相关资源
    最近更新 更多