0

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

问题是我们的会员产品到处都是。我们有 4 种类型的组织可以加入我们的组织。每种组织类型都有单独的价格表。组织的属性决定了他们将根据时间表支付的价格(例如,如果他们的收入在 200 万美元到 500 万美元之间,他们支付 2000 美元)。每个价格表中使用的属性都不同。例如,企业根据其年收入进行支付,而学校根据其全日制同等学生人数进行支付——我们通过让学校成员向我们提供他们的全日制和非全日制学生人数来计算)。更复杂的是,还有折扣计划(例如,提前续订 12 个月的价格为 15 个月,资源不足学校的折扣等......)。然后,

然后最重要的是,我现在应该使产品和交易数据模式足够通用,以便它可以成为所有购买记录的数据源——例如,除了会员购买之外的活动注册和计划注册。

帮助!!有人告诉我这是标准的商业数据模式的东西,但是我能够在网上找到的每个示例数据模式都不能做到以上,至少据我所知。有没有人见过可以做这种事情的模式?如果有,可以分享给我吗?

任何其他线索也将不胜感激。谢谢!

4

1 回答 1

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,
     ...)

最重要的是,例如,您可以很容易地查询成员是否有信用、离开、是否支付了预期的费用等。业务规则在软件中设置在这些数据之上。对于每个会员计划,都应该有不同的规则来管理它。

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

CREATE TABLE member_attributes(
         membership_type INT,
         attribute VARCHAR(30), --for example 'Monthly Pay', 'Membership duration'
         value INT)
于 2009-07-30T06:47:31.180 回答