作者jamuqa (jamuqa)
看板Database
标题Re: [系统] 同个栏位对应到不同资料表的id
时间Thu Mar 24 19:53:43 2011
※ 引述《jamuqa (jamuqa)》之铭言:
: 麻烦大家看我这样设计有没有问题..
: 交易纪录表
: TradeRecordId CustomerId TradeRecordState
: 1 1 1
: 2 1 2
: 顾客资料表
: CustomerId CustomerName
: 1 AAA
: 员工资料表
: EmployeeId EmployeeName
: 1 BBB
: 当TradeRecordState为1时,CustomerId对应到顾客资料表的CustomerId
: 当TradeRecordState为2时,CustomerId对应到员工资料表的EmployeeId
: 所以TradeRecordId为1的交易纪录意义为AAA所购买
: 所以TradeRecordId为2的交易纪录意义为BBB所购买
: 仰或是将员工加到顾客资料表
: 顾客资料表
: CustomerId CustomerName
: 1 AAA
: 2 BBB
: 这样交易纪录表的CustomerId只对应到顾客资料表里
: 有请各位大大赐教
我再重新叙述我的问题好了
方法1(目前倾向的作法)
交易纪录资料表纪录了交易的行为,其中有一个栏位纪录着交易的对象
交易纪录表:
交易序号 交易对象 交易状态
1 1 顾客
2 1 员工
顾客资料表:
顾客id 顾客名字
1 小王
员工资历表:
员工id 员工名字
1 小李
假设小王是一般顾客,小李是店员,他们的资料分别纪录在不同资料表中
(顾客资料表和店员资料表)
为了区分这两笔交易
目前的作法是在交易纪录表开一个交易状态的栏位去区别他
也就是说交易对象内容的值相同,但交易状态不同
交易对象的值则指向不同的资料表,代表着交易对象为不同的人
缺点:
1. 交易对象的值可能指向不同的资料表
方法2
交易纪录表多开一个栏位纪录当交易对象为员工的id
交易序号 顾客id 员工id
1 1 0
2 0 1
缺点:
1. 顾客id和员工id相依性高,不符2阶正规划
2. 新增某类型之交易对象时,又要开新栏位去区分
优点:
1. 同一栏位明确指向哪个资料表的id
方法3
多开一个资料表纪录交易对象为员工的交易资料
交易序号 顾客id
1 1
交易序号 员工id
1 1
缺点:
1. 算总金流时要向两个表分别查询并加总
2. 新增某类型之交易对象时,又要开新资料表
优点:
1. 较省空间
方法4
将员工资料表和顾客资料表合并,交易纪录表只像此表的id搜寻
人的资料表:
人的id 人的名字 人的属性
1 小李 顾客
2 小王 员工
缺点:
1. 员工和顾客之属性并不尽相同
2. 目前作法是员工和顾客分开,合并工程浩大
优点:
1. 无须更改目前的交易纪录表
请问各位还有更好的设计吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.125.41.241