大家好,我现在在设计一个系统的数据库,这是是一个小区的物业费用管理系统,小区中有多项费用需要管理例如水费 管理费 垃圾费 等8种费用为了方便与清晰,我把每种费用分别设置为单独的一张表,由于费用是由业主缴纳的,所以业主ID作为费用的外码 然而费用的缴纳需要同发票等票据打交道,而一项费用可以对应多张发票,一张发票对应一种费用 那是不是我票据这张表需要有多个多种费用的ID作为外码呢? 希望大家能帮我解决一下 不胜感激

解决方案 »

  1.   

    是的,理论上是这样的。不过我觉得你可以再增加一个费用种类的表,比如说费用种类表:
    id  种类
    ----------
    1   水费
    2   管理费这样在费用那张表就不需要那么多外码了费用表:
    id      种类
    -------------
    费用1    1
    费用2    2
      

  2.   

    为什么要这样实现呢? 为什么不做成一张表?计费表(用户ID,项目名称,金额,时间,。)A73-805  , 水费, 54.00 , 2010-02-01
    A73-905  , 水费, 42.00 , 2010-02-01
    A73-805  , 管理费, 54.00 , 2010-02-01
    ...
      

  3.   

    一张业主信息表t_owners;
    一张费用类型表t_feetypes;
    一张费用信息表t_fees;(业主信息id和费用类型id做foreign key)
    一张发票表t_invoices;(费用信息id为foreign key)t_owners和t_fees之间为1对多关系;
    t_feetypes和t_fees之间为1对多关系;
    t_fees和t_invoices之间为1对多关系;我觉得简单点就这么搞
      

  4.   

    从数据的冗余性考虑我感觉可以全一张
    费用种类表: 
    id  种类 
    ---------- 
    1  水费 
    2  管理费
    而计费表(用户ID,项目名称,金额,时间,。)A73-805  , 1, 54.00 , 2010-02-01
    A73-905  , 1, 42.00 , 2010-02-01
    A73-805  , 2, 54.00 , 2010-02-01
    ...如果计费表很大这样可以减少冗余,减少数据的存储空间
      

  5.   

    水费有水费的一些属性 比如说抄表数 上期读数 本期读数等
    而管理费又与面积打交道 这样如何是好?一个类型表
    id  type
    --------
    1    水费
    2    电费
    3    管理费  这样子设计之后  每个费用是不是还是要分开一张表啊?