0

我正在设计一个必须处理用户购买许可证的行为的应用程序。我不关注身份验证部分,而只关注过程的事务部分
基本上我会定义这些模型:

1) 用户 - 持有用户的数据
2) 许可证 - 持有许可证的数据。这将与用户具有多对一的关系,因为用户可以购买多个许可证,并且与交易是一对一的关系(一个许可证仅与一项交易相关)
3)付款方式 - 持有付款方式(基本上是信用卡)。这与用户 4) Transaction 有太多的关系
- 它保存交易的数据,并且与用户具有一对一的关系(一笔交易仅由一个用户完成)和与 Payment 的一对一关系方法(一笔交易与一种付款方式相关联)

你认为这是对的吗?
我通过添加用户和许可证之间的关系(只能通过事务连接)来增加一些冗余,但我认为它在 SQL 中保存了一些 JOINS。

4

1 回答 1

1

您可以对任何类型的产品订单系统使用相同的模式:

客户方针对一个或多个目录项供应商方下达销售订单,其中之一可能是销售协议,例如软件许可。

供应商方在收单地址一次或多次向收单方(可能与客户方相同)开具发票(要求付款) 。收单方针对该特定发票进行一次或多次付款,直到发票被支付

付款不一定与销售订单项目的装运交付一致。您可以在支付发票之前或之后运送销售订单项目。

销售订单项目通过收货地址(可以是 IP 地址或电子邮件地址)运送到收货方,并有望送达此时您会产生收入

这应该让你开始:

PARTY
id
type {organization, individual, automated_agent}
name
...


ADDRESS
id 
type {email, web, facility, telephone}
...


SALES_ORDER
id
order_date
customer_id -> party
vendor_id -> party
bill_to_id -> party
bill_to_address_id -> address


CATALOG_ITEM
id
type {good, service, agreement}
...


SALES_ORDER_ITEM
id
sales_order_id -> sales_order
catalog_item_id -> catalog_item
ship_to_id -> party
ship_to_address_id -> address
price
quantity


PAYMENT_METHOD
id
name


# whether payment has a key to invoice depends on whether you allow cross-invoice payments and/or partial payments
PAYMENT
id
payment_date 
payer_id -> party
payee_id -> party
amount
method -> payment_method

省略:

shipment_request
shipment
delivery
invoice
invoice_payment
于 2013-02-04T20:37:47.477 回答