这个数据库如何设计才算合理,有经验的高手请进 (50分)

  • 主题发起人 xyt3dnow
  • 开始时间
X

xyt3dnow

Unregistered / Unconfirmed
GUEST, unregistred user!
有个办证的程序,涉及到房屋新租和续租的问题,新租就采用新的编号如1001、1002、1003
等一直下去。而续租我看到软件的数据库采用了同编号的处理方法,如果1001是张三
他缴费一年以后再来续租的话,就出现了两条1001、张三的记录,不同的只是日期和金额
而已。请问这样设计是否合理,是否存在什么弊端?有没有更好的解决方法?
用的是delphi5+sql97
谢谢各位了,其实这是个房屋租赁系统。
字段有编号、房屋座落、出租人、承租人、房屋结构、面积、地址、用途、起始日期、
缴费月份、截止日期、租金、房屋基金、手续费、建筑类型(包括临时、公私、续租、
新租等字段)发证机构、发证日期。本来的数据库只有一个,就是包括全部字段。
如果出现续租就增加一个差不多相同的记录。现在进行更改,如何建库,望高手指点。
 
避免出现相同编号的记录,可以多添加几个字段,如“是否续租”、“续租金额”、“续租日期”等等。
这样编号就唯一了,可建立索引,方便数据库操作。
 
这样有好有坏,好是当你查询张三的情况是,历史数据一起带出,写代码时可以省事些,
不用分开处理。坏处是,如果数据库大,管理起来很麻烦。同一编号记录数太多。
可以考虑分开建表,新租和续租,用第三个表与之建立关连。
 
分开建表
用户表和历史纪录表
把张三和它的租房纪录分离,租房纪录外键引用用户表用户ID
这样做我想比较负责任(方便系统扩展)
而且没有数据冗余
 
好象有点问题:
首先,你这个数据库的应用对象是谁??是房屋,租户,屋主,还是物业管理
我的理解,好象是物业管理,不知道对不对?
你的表是不是这样的:
编号,房屋编号,屋主编号,租户编号;
编号是唯一的, 如果是这样的话,那你的问题就成了对数据的增添和修改操作了,
新租的话,只要将原来记录删除,从新录入,续租的话,就改响应字段的值;
按你提的方法的话,数据就会有很多没有意义的,需要定期整理;
 
to:nothingknown
我想他的目的是肯定要保留历史纪录的吧
 
谢谢各位了,其实这是个房屋租赁系统。
字段有编号、房屋座落、出租人、承租人、房屋结构、面积、地址、用途、起始日期、
缴费月份、截止日期、租金、房屋基金、手续费、建筑类型(包括临时、公私、续租、
新租等字段)发证机构、发证日期。本来的数据库只有一个,就是包括全部字段。
如果出现续租就增加一个差不多相同的记录。现在进行更改,如何建库,望高手指点。
 
你好像用一张表就解决一个数据库的问题,这种做法不符合数据库设计[:D]

你至少要设计3张表结构,新租、续租、(新租、续租编号)
 
zhaomh大侠,可不可以说清楚点?
 
是不是增加多一个相同结构的历史表,然后将续租的重复编号的记录放到历史表中?
租房纪录外键引用用户表用户ID?怎么引用?望restle指点。
 
1. 房屋信息表
房屋编号, 房屋座落、出租人、房屋结构、面积、地址、用途、
发证机构、发证日期, "出租人联系电话"
2. 出租记录表
出租单号, 房屋编号, 出租人、承租人、起始日期、
缴费月份、截止日期、租金、房屋基金、手续费
建筑类型(包括临时、公私、续租、新租等字段)

新租和续租有什么区别? 有什么特殊要求?
 
大家想一下就知道了,租房是有两种情况,一种是新租,另外一种就是续租(同一个人
同一个地址),只是不同的是租期、起始时间、截止时间、金额不同而已。
 
用主子表的方法。
在原有表的基础上增加一个子表即可呀。
子表为
子表ID(出租单号)、出租人、租期、起始时间、截止时间、金额
如果方便再建一个出租人表。则上面的子表的出租人字段用ID来关联会好一点。
 
这是这类问题标准的数据库设计方法
1、建一个业务表,保存所有有关“张三”的内容,姓名啊,联系方式啊,最重要有一个客户ID,还要有房屋的信息
2、建一个租赁历史纪录表,保存租赁业务历史纪录,其中有一个字段为客户ID,这个ID要在业务表中能够找到。
至于新租、续租,只需要增加一个字段作为标志即可,或者只是简单判断租房日期即可。
这样做的优点:
1、结构清晰
2、无数据冗余
3、方便统计数据
3、方便系统扩展
 
同意gzfrank[:)]
 
zyx1122 的是正确的,如果新租和续租没什么区别的话(如并不会因为续租而租金少点等)
否则在“出租记录表”加一个“是否续租”的字段就行了
 
1. 新租房屋信息表(index 出租单号)
房屋编号, 房屋座落、出租人、房屋结构、面积、地址、用途、
发证机构、发证日期, "出租人联系电话",出租单号, 房屋编号,
出租人、承租人、起始日期、
缴费月份、截止日期、租金、房屋基金、手续费
建筑类型(包括临时、公私、续租、新租等字段)
2. 续租记录表(index 序号--自动增长1)
序号、出租单号、租期、起始时间、截止时间、金额、、、、、


最少的也需要两张表,能为你解决N多问题
 
其实就是一句话
主从表

有些细节问题不用考虑
 
如果新租和续租没有什么区别,
我想本来就没有什么区别. 都要交钱.
可以在Form里加一个command button叫"续租'
在它的事件里写:
//copy 当前的记录值到一个新记录, 出租编号不同.
//再修改起始日期、缴费月份、截止日期

还有你这个"缴费月份'是不是每个月(或几个月)要收费
把'出租记录表'的"缴费月份'删除.
就加一个"出租屋收费表'
收费单号, 收费日期, 房屋编号, 缴费月份, 租金. 等字段...
 
这个问题太简单,建立以下表
业主表
房屋表
租赁表

新组和续租没有任何区别。

记住:尽量把看似不同的东西做相同处理。
如部门和班组,其实没有任何区别的,唯一的区别是班组没有部门主管。

你做到了吗?
 
顶部