财务表中有三个角色:总部、店铺、客户我现在设计的是有二个表,agent_finance,user_finance,分别是店铺表与客户表三个角色的关系如下:总部可以给店铺充值,店铺可以给客户充值,总部不能直接给客户充值
这里想问个问题:怎么设计支付者与接收者的关系?比如我现在是这么设计的(user_finance):字段列表:
payer:支付者ID  -这里可能是店铺ID,也可能是学生ID,因为允许店铺对学生进行+或者-的操作
incepter:接收者ID  -跟payer相反
payer_type:支付者类型 -比如agent,或者user,因为payer的值跟incepter的值可能会是同样的
像上面的设计查询的时候就显得很麻烦,比如我要查询店铺ID为2的在user_finance的记录,就要这么写
(payer=2 AND payer_type='agent') or (incepter='2' AND payer_type<>'agent')不知道大家平时都是怎么设计这类表的?

解决方案 »

  1.   

    额,最后那句SQL更正如下:上面多加了个引号
    (payer=2 AND payer_type='agent') or (incepter=2 AND payer_type<>'agent')
      

  2.   

    -- 1 公司总账,记录每代理的余款情况
    CREATE TABLE COMPANY_FIN(
    AGENT_CODE NVARCHAR(20),
    AMOUNT NUMERIC(14,2)
    )-- 2 代理充值及消费明细账,记录代理在公司的每次充值及每期间(代理同公司对账的周期)的消费结果
    CREATE TABLE COMPANY_SERIAL(
    SN int identity(1,1),
    CHARGING_DATE DATETIME, -- 充值或消费结算日期
    AGENT_CODE NVARCHAR(20),
    AMOUNT NUMERIC(14,4) -- +数为充值,-为消费
    )-- 3 代理总账,记录每个客户在代理商处的使用余额
    CREATE TABLE AGENT_FIN(
    AGENT_CODE NVARCHAR(20),
    CUSTOMER_CODE NVARCHAR(20),
    AMOUNT NUMERIC(14,2)
    )-- 4 客户充值及消费明细账,记录客户每次充值和消费的日期和金额
    CREATE TABLE AGENT_SERIAL(
    SN int identity(1,1),
    CHARGING_DATE DATETIME,
    AGENT_CODE NVARCHAR(20),
    CUSTOMER_CODE NVARCHAR(20),
    AMOUNT NUMERIC(14,4)
    )
      

  3.   

    哈哈,我在其它地方问到了,跟zejyu说的差不多
      

  4.   

    财务表中有三个角色:总部、店铺、客户我现在设计的是有二个表,agent_finance,user_finance,分别是店铺表与客户表三个角色的关系如下:总部可以给店铺充值,店铺可以给客户充值,总部不能直接给客户充值