我有一个需要创建数据库的要求,在该数据库中,用户可以具有多种付款方式,而针对那些多种付款方式,可以处理多个交易。
我创建了以下架构
这些表为何:
用户:此表包含有关用户的信息。例如:名字,姓氏,电子邮件等
user_payment_method:由于单个用户可以有多种付款方式,所以我创建了一个表来标识他拥有的所有付款方式,以便我可以在交易表中引用它们,并且可以确切地知道进行交易的付款方式。
transaction:此表包含有关所有事务的所有数据。例如:时间,user_id,user_method_id,金额等
Payment_method:此表用作关联表(数据透视表),用于引用可能存在的所有付款方式。由于所有付款方式都有不同的详细信息,因此我无法为此制作一张表格。
特定付款方式表:诸如bank_transfer和paypal之类的表包含用户有关该付款方式的特定详细信息。例如:贝宝密钥或银行帐号
问题
我一直坚持在payment_method
和specific payment method tables
之间创建关系。
如何在payment_method表的单个列中引用不同的付款方式。我是否为每种特定的付款方式创建联结表(数据透视表)?
编辑:如果有人有一个更简单的不同方法,请也让我知道我也愿意接受所有想法。
最佳答案
该问题可以归类为建模继承。您有n种付款方式,每种付款方式都有不同的(用户特定)属性。最简单的是每个层次结构的TPH表:将所有付款方式的所有用户属性放在user_payment_method表上。 here还有其他选项。忘记数据透视表:您正在对数据库模式进行建模,只需要表和列。考虑一下您需要存储什么,如何检索它以及仅将每个事实存储一次的重要性。