您的位置:首页 > 数据库 > MySQL

【MySQL之设计表(二)】一个典型的数据库设计问题

2015-05-12 18:13 916 查看
假如我有好多间房屋,每个房屋需要收不同的费用,如管理费、网费、电费、水费...等。但是每间房屋的收费标准和收费项目都不一样。而且,很有可能以后还会增加其它费用。有的要收网费,有的不需要收网费。怎样设计数据库?我有两个方案,第一个方案是把所有的费用都设一个列,并且增加很多个预留字段不足之处:要有很多个列,并且有很多个预留字段,表太长。房屋收费表第二个方案是,用三个表表示关系。不足之处,关系太复制,第三方表(房屋费用表的数据量巨大)房屋费用表具体例子:1(HouseFeeId1) 1(房屋1) 1(管理费)2(HouseFeeId2) 1(房屋1) 2(网费)3(HouseFeeId3) 1(房屋1) 3(水费)4(HouseFeeId4) 1(房屋1) 4(电费)5(HouseFeeId5) 2(房屋2) 1(管理费)6(HouseFeeId6) 2(房屋2) 2(网费)7(HouseFeeId7) 2(房屋2) 3(水费)….第三个方案,用拼接字符串的方法如:1 管理费,网费,水费,电费 150,50,20,30不足之处:不符合数据库的设计原则究竟怎样设计才好?有没有更好的方法?答:
你这个,一般用过数据库的都会选择第二种方式
关系复杂不是问题,主要是那种设计是最合理的,而且关系模式比较容易懂

第一个,看似一目了然,但是将来你添加费用字段会很麻烦
第三个,费用拆分起来也很麻烦
第二个虽然关系复杂,但是你要查的东西都可以用连接的方式将其查询出来

记得学数据库时有三个表吧
学生表,课程表,分数表
关系模式跟你第二个完全类似
那还有没有更好的方法那?

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐