日期:2014-05-17  浏览次数:20518 次

菜鸟咨询~ 关于数据库建表问题,(动态多对多)
各位大神,我就这么点分了 !

假设:
N个科室,对应着 ,N项收入
科室和收入项目都是动态的(增删改),

我原本是,科室建了一个表(ks);收入项目建了一个表(sr);
两者之间的联系建了一个表(ks_sr); 
需求是要对这个ks_sr 做 可添加记录,也可以合计、统计记录
同时也能修改科室和收入项目

建完表,我都不知道要怎么进行下一步了,因为科室和项目都是动态的。
这样建表正确吗?

sql 多对多

------解决方案--------------------
要么在一个事务中一起执行,要么用触发器来实现逻辑。用外键级联操作的话可以实现联动,不过实现不了合计、统计等功能
------解决方案--------------------
建表脚本给来看看
------解决方案--------------------
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 做 可添加记录,也可以合计、统计记录
不应该对关系表做统计吧?


------解决方案--------------------
加了合适的索引的话,不会很慢的。
------解决方案--------------------
統計可以建個視圖解決