菜鸟咨询~ 关于数据库建表问题,(动态多对多)
各位大神,我就这么点分了 !
假设:
N个科室,对应着 ,N项收入
科室和收入项目都是动态的(增删改),
我原本是,科室建了一个表(ks);收入项目建了一个表(sr);
两者之间的联系建了一个表(ks_sr);
需求是要对这个ks_sr 做 可添加记录,也可以合计、统计记录
同时也能修改科室和收入项目
建完表,我都不知道要怎么进行下一步了,因为科室和项目都是动态的。
这样建表正确吗?
------解决方案--------------------要么在一个事务中一起执行,要么用触发器来实现逻辑。用外键级联操作的话可以实现联动,不过实现不了合计、统计等功能
------解决方案--------------------建表脚本给来看看
------解决方案--------------------1、科室表
字段: KS_ID,自动编号;
名称
2、收入项目表
字段:SR_ID 自动编号,
名称
3、收入明细表
字段: DT_ID 自动编号,
KS_ID int
SR_ID int
名称可以随便改,
收入分析的话,join查询统计就是了
------解决方案--------------------收入明细表的其他字段自己加,比如 金额 decimal(12,2)
------解决方案--------------------在我见过的系统里面,你这量算是非常小
------解决方案--------------------项目可以存在一列中,不过最好不要一列存几个项目,比如
项目
a,b,c
这样是不好的,虽然也行,不过后期操作会很多麻烦
------解决方案--------------------一般就是采用:
科室表:存储所有的科室
项目表:存储所有的项目
科室和项目表(存储了,哪些个科室,有哪些项目,收了多少费用)
------解决方案--------------------N个科室,对应着 ,N项收入
科室和收入项目都是动态的(增删改),
这种动态的情况,最好按行来存放,而不要一个收入一个列,这样DDL太过频繁了,这个可以建一个关系表,对比一个科室有多少项收入:
科室表
id name
收入表
id name
科室于收入的关系表
id kid sid
这样可以实现多对多的关系。
我原本是,科室建了一个表(ks);收入项目建了一个表(sr);
两者之间的联系建了一个表(ks_sr);
需求是要对这个ks_sr 做 可添加记录,也可以合计、统计记录
不应该对关系表做统计吧?
------解决方案--------------------加了合适的索引的话,不会很慢的。
------解决方案--------------------統計可以建個視圖解決