财务表中有三个角色:总部、店铺、客户我现在设计的是有二个表,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')不知道大家平时都是怎么设计这类表的?
这里想问个问题:怎么设计支付者与接收者的关系?比如我现在是这么设计的(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')不知道大家平时都是怎么设计这类表的?
(payer=2 AND payer_type='agent') or (incepter=2 AND payer_type<>'agent')
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)
)