会员产品数据模式

时间:2009-07-29 23:52:19

标签: database-design schema e-commerce membership product

我正在尝试对我的组织的会员产品进行建模,以便在我们的业务数据库中接受和记录会员资格购买。有一天,我们希望这些购买将在线进行并自动存入业务数据库。

问题是我们的会员产品到处都是。我们有4种类型的组织可以加入我们的组织。每种组织类型都有单独的价格表。组织的属性决定了他们将从时间表中支付的价格(例如,如果他们的收入在200万美元到500万美元之间,他们支付2000美元)。每个价格表中使用的属性不同。例如,企业根据其年收入进行支付,而学校根据他们的全日制同等学生入学率进行支付 - 我们通过让学校成员向我们提供他们的全日制和兼职学生入学#s来计算。为了使它更复杂,有折扣计划(例如,15个月的早期续订价格为12个,资源贫乏的学校的折扣等等)。然后,会员可以选择一次购买多个条款,我们有时会允许人们购买按比例分配的条款(月份是最小的单位)。

然后,最重要的是,我现在应该使产品和交易数据模式足够通用,它可以作为所有购买记录的数据源 - 例如,事件注册和程序注册以及成员资格购买。

帮助!!我被告知这是标准的商业数据模式的东西,但我能够在线找到的每个样本数据模式都不能做到这一点,至少就我所知。有没有人见过可以做这种事情的架构?如果你有,你可以和我分享吗?

任何其他线索也会受到高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

您似乎需要将业务逻辑与数据设计分开。试着考虑适用于这个问题的最简单的数据结构,并在它们之上放置会员的逻辑。

例如:

CREATE TABLE payment(
     memeber_id INT,
     payment INT,
     expected_date DATE,
     payment_date DATE);

 CREATE TABLE credit(
     memeber_id INT,
     credit INT,
     last_movement` INT,
     next_movement INT,
     last_movement DATE,);

 CREATE TABLE member(
     id INT,
     membership_plan INT,
     ...)

除此之外,例如,您可以非常轻松地查询该成员是否有信用,左,是否支付了预期的费用等。业务规则在软件中设置,并在此数据之上。对于每个会员计划,应该有不同的规则来管理它。

如果您计划以更可配置的方式构建业务逻辑,还可以添加一个通用的Entity-Atribute-Value表来支持这些计划。在极端情况下,每个成员甚至可以覆盖此表。

CREATE TABLE member_attributes(
         membership_type INT,
         attribute VARCHAR(30), --for example 'Monthly Pay', 'Membership duration'
         value INT)