【问题标题】:updating tables while preserving business rules在保留业务规则的同时更新表
【发布时间】:2011-05-31 12:53:55
【问题描述】:

我有以下场景,业务规则和数据库架构,我想只使用 SQL 更新客户和销售代表表,同时保留业务规则。我该怎么做。

场景:

假设 Premier Products 希望将所有客户和销售额 代表圣诞节奖金。所有客户的余额将减少 100 美元,他们的订单金额增加了 50 美元。增加的金额 订单流向他们的销售代表。但是由于订单上的销售代表金额不能超过 $1000 (BR4) 的限制, 一些销售代表不会获得奖金。

(a) 如何在纯 SQL 中实现这一点,同时保留所有业务规则。

BR1。客户欠款总额不得超过其信用额度。

BR2。销售代表的订单金额与其客户的金额相同。

BR3。所有新客户都会获得 100 美元的信用额度,即初始余额为 -100 美元。

BR4。销售代表无权就订单超过 1000 美元的销售额收取任何佣金。

/*-- SLSREP Table */
CREATE TABLE SLSREP
(SLSRNUMB DECIMAL(2),
TOTCOMM DECIMAL(7,2),
COMMRATE DECIMAL(3,2) CONSTRAINT CK_commrate CHECK( commrate BETWEEN 0 AND 1),
AMOUNTONORDER DECIMAL(9,2),
CONSTRAINT PK_SLSREP PRIMARY KEY (SLSRNUMB));

/*-- Customer Table */
CREATE TABLE CUSTOMER
(CUSTNUMB DECIMAL(3),
BALANCE DECIMAL(7,2) ,
CREDLIM DECIMAL(5) CONSTRAINT NN_credlim NOT NULL ,
SLSRNUMB DECIMAL(2) ,
AMOUNTONORDER DECIMAL(9,2) ,
CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUSTNUMB),
CONSTRAINT FK_CUSTOMER_slsrnumb FOREIGN KEY (SLSRNUMB) REFERENCES SLSREP,
CONSTRAINT CK_credit CHECK (balance +  AMOUNTONORDER <= credlim));

【问题讨论】:

    标签: sql


    【解决方案1】:

    这些要求似乎相互冲突。

    1. Premier Products 想要全力以赴 他们的客户和销售代表 圣诞节奖金。
    2. 但是由于一个限制 订单上的销售代表金额不能
      超过 1000 美元 (BR4),一些销售代表 不会得到奖金。
    3. BR4。销售代表无权 超过 1000 美元的任何销售佣金 订购。

    我会将奖金建模为奖金,而不是销售佣金。奖金不是佣金或订单;它们都是不同的东西。所以我提出了两个新的业务规则。

    BR5。奖金不是佣金。

    BR6。奖金不是订单。

    这是实现销售代表奖金表的一种方法。

    CREATE TABLE SLSREPBONUS (
       SLSRNUMB DECIMAL(2) REFERENCES SLSREP (SLSRNUMB),
       BONUSDT DATE,
       BONUSAMT DECIMAL(7,2) NOT NULL CHECK (BONUSAMT BETWEEN 1 AND 1000),
       CONSTRAINT PK_SLSREP PRIMARY KEY (SLSRNUMB, BONUSDT)
    );
    

    您的客户表只有汇总金额,因此我假设您必须在会计系统的其他部分中发放信用。我希望如果您这样做,客户聚合将正确更新。 (但我不得不说我已经知道希望不能很好地扩展。)

    【讨论】:

    • @jam:为了照顾销售代表,我会创建一个销售代表奖金表。如果您始终可以向客户申请信用,我可能会向客户发放 100 美元的信用。对客户的贷记不应该对销售代表的佣金产生任何影响,也不应该对订单金额产生任何影响。 (我想。我不太擅长会计。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多