关于数据库设计的问题,大家来讨论讨论!
现在要做一个系统,系统是要求总公司和N个分公司用同一个系统,但是要把每个公司的业务区分开,即分公司A的员工进去系统,只能查到A公司的业务数据,举个例子吧
比如有个订单表 TE
字段有 TEID TENAME
分公司A有个订单存在里面
TEID TENAME
1 A1
分公司B有个订单存在里面
TEID TENAME
2 B1
现在A公司的员工进去只能看到 1 A1
B公司的员工进去只能看到 2 B2
还有些人有特殊权限的,比如老总要看所有公司的订单,就应该能全部看到
目前我想到的有2个方法
首先说下,这个系统比较大,相应的表也会很多
方法一:在每个表里面都加个字段,表示是哪个公司的业务
方法二:把每个分公司的数据都单独建一个数据库存起来
数据库的操作会写成一个封装类,我说下个人认为这两种方法的优缺点
1、方法一sql语句比方法二繁杂,每句sql后面都要添加 公司id=
2、数据库改动方面,由于客户在系统正式运行后可能要求添加新功能,而新功能在现有的数据库中不能满足客户的需求,需要新加字段或表,这时方法二对于数据库的改动就比方法一更麻烦
3、方法一种每个表中的数据量比方法二更庞大,子公司单查询的时候比方法二更耗时,但是总公司统计的时候,方法二回涉及到跨数据库操作,方法一反而更便于统计
不知道有没有更好的方法,各位讨论讨论!