探讨数据库设计的最实际的原则!高手新手都请进!! (50分)

  • 主题发起人 主题发起人 hunyuan
  • 开始时间 开始时间
H

hunyuan

Unregistered / Unconfirmed
GUEST, unregistred user!

数据库设计是软件开发中非常重要的一个环节,小弟感觉实践是提高合理设计数据库的最好方式。

但是,数据库设计还是有一定原则的,只是相关资料太少了,请进行深入讨论。
我把自己知道的两点先说出来,抛砖引玉:
1、面向实际的原则,就是说库结构与实际业务流程越相似越好
2、合理分配每个表的字段,不要一个表的字段过多;数据量过大,考虑分成多个表
………………
请有经验的朋友给予指点,代表菜鸟深鞠一躬!谢谢了!!!!

有个小问题:
设计数据库,字段类型用数据库提供的相应类型更合理吗?比如,时间就用日期时间型,
而不用文本型(有个朋友喜欢用文本型代替日期型,因为好管理);数值字段根据类型选择整型或浮点型;
货币型用数字型不也可以吗,用货币型有什么优势?


现在以一个我正做的一个餐饮小软件为例讨论一下吧:

吧台部分:(ACCESS 2000数据库)

菜和酒水单价表
unit_name
id 自动编号
unitname 酒水名称
price 单价
type 类型(酒水或菜类)

销售记录表
id 自动编号
sell_id 销售编号(根据系统时间生成)
sell_name 名称(酒水或菜类名称)
sell_price实际销售价格

日、月报表
id 自动编号
sell_id 销售编号(与上表对应)
sell_date 销售日期
total_price买单总价
rebat_price打折价格(实际收现金)

操作员表
id 自动编号
operator_name 操作员名称
password 密码

更改以上各表的记录表
id 自动编号
handlers 操作员名字
edit_date 编辑日期
content 编辑操做的种类(删除、修改等)


[red]另外,想通过老板的电脑查看这台电脑上的销售情况,怎么实现呢?
吧台的电脑做成单机版可以吧,用什么方式连接和查询呢? [/red]
 
最好是用SqlServer!
不过用Access2000来做的话,对于数据之间的同步就不是很好了!
也就是说老板想看销售情况的话,就只能做异步查询!
 
网络程序,最好换一个数据库,否则,在设计时要将服务端的数据库进行共享,才能进行。安全性较差。
 
时间就用数据库的日期时间型,处理会更加方便,比如附当前时间,日期加减几天 ...
货币型能保证精度,数字型 1 也许成了 0.9999999999,它会使你的统计差几分钱,
或者几毛钱,但是客户看了会很不舒服。

数据库设计可没有你想象的那么简单。送你个入门资料:
An Introduction to Database Normalization
http://www.devshed.com/Server_Side/MySQL/Normal/Normal1/print
 
感谢各位,特别感谢孙老师!

继续听课
 
》》red]另外,想通过老板的电脑查看这台电脑上的销售情况,怎么实现呢?
》》吧台的电脑做成单机版可以吧,用什么方式连接和查询呢? [/red]
只是单机录入,别的机只可以查看,mailto nulk@21cn.com
 
或是建一个共享目录,要可写的(但太不安全了),内放入Access数据库!
其它电脑的Connection连接到那个Access数据库就行了!
其实用SqlServer最好!
另外如果没有联机的话,就只能异步传输数据了,在这边做的操作,记录下操作的Sql串列,
然后在那边执行!
 
我的感觉是:用户需求分析——>业务流程——>数据流图——>基本表设计——>规范化,
再往后就是其他一些实现细节。
推荐一本书《数据库设计》,不是很厚的,不会太贵,全是数据库设计的实践,很值得一看
 
不好意思,有点跑题了:)
最实际的原则我想应该是数据的唯一性和完整性,所有的设计方法都是围绕这两点展开。
 
多人接受答案了。
 
后退
顶部