在数据库模式中集成支付方式
Integrating payment methods in db schemas
我有一个要求,我需要创建一个数据库,用户可以在其中使用多种付款方式,并且可以针对这些多种付款方式处理多项交易。
我创建了以下架构
WHY THESE TABLES:
user: 这 table 包含有关用户的信息。例如:名字、姓氏、电子邮件等
user_payment_method: 由于单个用户可以有多种付款方式,我创建了一个 table 来识别他拥有的所有付款方式,以便我可以在交易中引用它们 table 并且可以确切知道交易是在哪种付款方式上进行的。
交易:这table包含所有交易的所有数据。例如:时间、user_id、user_method_id、金额等
payment_method: 这个 table 充当连接点 table(pivot table) 来引用所有支付方式那可能存在。由于所有付款方式都有不同的详细信息,因此我无法为此制作一个 table。
特定支付方式 tables:像 bank_transfer 和 paypal 这样的表格包含用户拥有的关于该支付方式的具体细节。例如:贝宝密钥或银行帐号
THE PROBLEM
我无法在 payment_method
和 specific payment method tables
之间创建关系。
如何在 payment_method table 的单个列中引用不同的付款方式。我是否为每个特定的付款方式创建一个连接(枢轴)table?
编辑:如果有人有更简单的不同方法,请告诉我,我愿意接受所有想法。
我可能会将架构简化如下:
user <- transaction -> payment method
付款方式将包括您的 PayPal 和银行转帐,两者不应 tables。
一般来说,您应该将付款方式视为一种类型交易。
在构建数据库时,您会寻找 table 真正的行动所在。在这种情况下,它是交易 table。您可以从实体图中将其识别为外键指向外的那个。在这种情况下,您可以说一笔交易属于某个用户,并且是某种类型。
交易table会有实际的付款详情,例如日期、金额、交易编号等
您还可以获得 table 首选付款详细信息。那会给你这样的东西:
user <- transaction -> payment method
<- preferred ->
请记住,偏好可以更改,因此来自首选 table 的数据应 复制 到交易 table 中,以允许偏好稍后更改。
不用说,我们假定您在密码、帐户详细信息和其他敏感数据方面采取了所有适当的预防措施……
问题可以归类为建模继承。您有 n 种付款方式,每种方式都有不同的(用户特定的)属性。最简单的是每个层次结构的 TPH table:将所有支付方式的所有用户属性放在 user_payment_method table 上。还涵盖了其他选项 here。忘掉数据透视表 table:您正在为数据库模式建模,您只需要 table 和列。想想您需要存储什么,需要如何检索它,以及每个事实只存储一次的重要性。
我有一个要求,我需要创建一个数据库,用户可以在其中使用多种付款方式,并且可以针对这些多种付款方式处理多项交易。
我创建了以下架构
WHY THESE TABLES:
user: 这 table 包含有关用户的信息。例如:名字、姓氏、电子邮件等
user_payment_method: 由于单个用户可以有多种付款方式,我创建了一个 table 来识别他拥有的所有付款方式,以便我可以在交易中引用它们 table 并且可以确切知道交易是在哪种付款方式上进行的。
交易:这table包含所有交易的所有数据。例如:时间、user_id、user_method_id、金额等
payment_method: 这个 table 充当连接点 table(pivot table) 来引用所有支付方式那可能存在。由于所有付款方式都有不同的详细信息,因此我无法为此制作一个 table。
特定支付方式 tables:像 bank_transfer 和 paypal 这样的表格包含用户拥有的关于该支付方式的具体细节。例如:贝宝密钥或银行帐号
THE PROBLEM
我无法在 payment_method
和 specific payment method tables
之间创建关系。
如何在 payment_method table 的单个列中引用不同的付款方式。我是否为每个特定的付款方式创建一个连接(枢轴)table?
编辑:如果有人有更简单的不同方法,请告诉我,我愿意接受所有想法。
我可能会将架构简化如下:
user <- transaction -> payment method
付款方式将包括您的 PayPal 和银行转帐,两者不应 tables。
一般来说,您应该将付款方式视为一种类型交易。
在构建数据库时,您会寻找 table 真正的行动所在。在这种情况下,它是交易 table。您可以从实体图中将其识别为外键指向外的那个。在这种情况下,您可以说一笔交易属于某个用户,并且是某种类型。
交易table会有实际的付款详情,例如日期、金额、交易编号等
您还可以获得 table 首选付款详细信息。那会给你这样的东西:
user <- transaction -> payment method
<- preferred ->
请记住,偏好可以更改,因此来自首选 table 的数据应 复制 到交易 table 中,以允许偏好稍后更改。
不用说,我们假定您在密码、帐户详细信息和其他敏感数据方面采取了所有适当的预防措施……
问题可以归类为建模继承。您有 n 种付款方式,每种方式都有不同的(用户特定的)属性。最简单的是每个层次结构的 TPH table:将所有支付方式的所有用户属性放在 user_payment_method table 上。还涵盖了其他选项 here。忘掉数据透视表 table:您正在为数据库模式建模,您只需要 table 和列。想想您需要存储什么,需要如何检索它,以及每个事实只存储一次的重要性。