Ⅰ 如何合理和有效的进行数据库设计
通常情况下,可以从两个方面来判断数据库设计的是否规范:
1)一是看看是否拥有大量的窄表
窄表往往对于OLTP比较合适,符合范式设计原则
2)宽表的数量是否足够的少。
所谓的宽表就是字段比较多的表,包含的维度层次比较多,造成冗余也比较多,毁范式设计,但是利于取数统计
若符合这两个条件,我们可以说数据库设计的比较好.
当然这是两个泛泛而谈的指标。为了达到数据库设计规范化的要求,一般来说,需要符合以下五个要求。
要求一:表中应该避免可为空的列。
虽然表中允许空列,但是,空字段是一种比较特殊的数据类型。数据库在处理的时候,需要进行特殊的处理。如此的话,就会增加数据库处理记录的复杂性。当表中有比较多的空字段时,在同等条件下,数据库处理的性能会降低许多。
所以,虽然在数据库表设计的时候,允许表中具有空字段,但是,我们应该尽量避免。若确实需要的话,我们可以通过一些折中的方式,来处理这些空字段,让其对数据库性能的影响降低到最少。
要求二:表不应该有重复的值或者列。
如现在有一个进销存管理系统,这个系统中有一张产品基本信息表中。这个产品开发有时候可以是一个人完成,而有时候又需要多个人合作才能够完成。所以,在产品基本信息表产品开发者这个字段中,有时候可能需要填入多个开发者的名字。
如进销存管理中,还需要对客户的联系人进行管理。有时候,企业可能只知道客户一个采购员的姓名。但是在必要的情况下,企业需要对客户的采购代表、仓库人员、财务人员共同进行管理。因为在订单上,可能需要填入采购代表的名字;可是在出货单上,则需要填入仓库管理人员的名字等等。
为了解决这个问题,有多种实现方式。但是,若设计不合理的话在,则会导致重复的值或者列。如我们也可以这么设计,把客户信息、联系人都放入同一张表中。为了解决多个联系人的问题,可以设置第一联系人、第一联系人电话、第二联系人、第二联系人电话等等。若还有第三联系人、第四联系人等等,则往往还需要加入更多的字段。
所以,我们在数据库设计的时候要尽量避免这种重复的值或者列的产生。笔者建议,若数据库管理员遇到这种情况,可以改变一下策略。如把客户联系人另外设置一张表。然后通过客户ID把供应商信息表跟客户联系人信息表连接起来。也就是说,尽量将重复的值放置到一张独立的表中进行管理。然后通过视图或者其他手段把这些独立的表联系起来。
要求三:表中记录应该有一个唯一的标识符。
在数据库表设计的时候,数据库管理员应该养成一个好习惯,用一个ID号来唯一的标识行记录,而不要通过名字、编号等字段来对纪录进行区分。每个表都应该有一个ID列,任何两个记录都不可以共享同一个ID值。另外,这个ID值最好有数据库来进行自动管理,而不要把这个任务给前台应用程序。否则的话,很容易产生ID值不统一的情况。
另外,在数据库设计的时候,最好还能够加入行号。如在销售订单管理中,ID号是用户不能够维护的。但是,行号用户就可以维护。如在销售订单的行中,用户可以通过调整行号的大小来对订单行进行排序。通常情况下,ID列是以1为单位递进的。但是,行号就要以10为单位累进。如此,正常情况下,行号就以10、20、30依次扩展下去。若此时用户需要把行号为30的纪录调到第一行显示。此时,用户在不能够更改ID列的情况下,可以更改行号来实现。如可以把行号改为1,在排序时就可以按行号来进行排序。如此的话,原来行号为30的纪录现在行号变为了1,就可以在第一行中显示。这是在实际应用程序设计中对ID列的一个有效补充。这个内容在教科书上是没有的。需要在实际应用程序设计中,才会掌握到这个技巧。
要求四:数据库对象要有统一的前缀名。
一个比较复杂的应用系统,其对应的数据库表往往以千计。若让数据库管理员看到对象名就了解这个数据库对象所起的作用,恐怕会比较困难。而且在数据库对象引用的时候,数据库管理员也会为不能迅速找到所需要的数据库对象而头疼。
其次,表、视图、函数等最好也有统一的前缀。如视图可以用V为前缀,而函数则可以利用F为前缀。如此数据库管理员无论是在日常管理还是对象引用的时候,都能够在最短的时间内找到自己所需要的对象。
要求五:尽量只存储单一实体类型的数据。
这里将的实体类型跟数据类型不是一回事,要注意区分。这里讲的实体类型是指所需要描述对象的本身。笔者举一个例子,估计大家就可以明白其中的内容了。如现在有一个图书馆里系统,有图书基本信息、作者信息两个实体对象。若用户要把这两个实体对象信息放在同一张表中也是可以的。如可以把表设计成图书名字、图书作者等等。可是如此设计的话,会给后续的维护带来不少的麻烦。
如当后续有图书出版时,则需要为每次出版的图书增加作者信息,这无疑会增加额外的存储空间,也会增加记录的长度。而且若作者的情况有所改变,如住址改变了以后,则还需要去更改每本书的记录。同时,若这个作者的图书从数据库中全部删除之后,这个作者的信息也就荡然无存了。很明显,这不符合数据库设计规范化的需求。
遇到这种情况时,笔者建议可以把上面这张表分解成三种独立的表,分别为图书基本信息表、作者基本信息表、图书与作者对应表等等。如此设计以后,以上遇到的所有问题就都引刃而解了。
Ⅱ 《数据库》设计某企业计划开发一个进销存管理信息系统,替换原来的人工系统。
这个工程量大哦·
以上功能速达已经有现成的了,而且非常成熟了……
Ⅲ 商品管理系统数据库设计
一个完整的销售管理系统
我给你
Ⅳ 请问怎样建立公司采购数据库,数据库需要那些内容
简单点可建个Excel文件,如果公司有IT部门可由IT部门自行编个采购的程序或者根据需要买套软件,数据库中一般应有购买周期,批量,单价,供方等,我想建立此类数据库的目的主要是一方面防止出现供货不足或供货量大造成库存大,另一方面实现以较少的价钱买到合适的物料。
Ⅳ 如何建立自己个人的数据库,我是外贸采购的,需要管理成百上千的供应商数据资料。
我用过浙大恩特的外贸管理软件,他们的有供应商管理,用的还行工作效率是提高不少,具体是不是符合你的需要,你自己上网搜搜,打电话问问他们吧,每个人的要求是不一的。但愿对你有用
Ⅵ 数据库sql 的课程设计怎么做,要借哪些书看,求大神指教
IT行业,数据库确实是一门相当重要的课程。但是在大学里面,对待数据库原理及应用这么课程以及其课程设计的重视程度就相差很大了,各个学校要求也不一样。如果是要学好,那确实要下工夫;如果只是完成课程设计,交差了事,其实相当简单。
既然是课程设计,也算是个小小的项目,既然是项目,也就离不开需求分析、数据库设计、部署实现等环节。当然,这个小小的项目只需要前面的部分:需求和数据库设计,数据库设计是重点。
需求分析就不用多说,和所有其他项目一样,无非就是用户需求,功能需求,系统需求等,找任何一本关于需求分析的书都是可以,除了那些个空话之外,更多的是要根据设计需要进行分析。
数据库设计就比较复杂一点,首先得把数据库原理搞清楚,比如:符合什么样的范式,怎么画ER图,如何理解用例图。在设计数据库之前,有一系列的分析要做:面向对象分析,用例分析,类和对象分析等等。分析到位是数据库设计成功的重要保障。分析完成之后才是设计,比如:逻辑结构设计,关系模式设计,存取方法设计,存储结构设计,数据完整性设计,参考完整性设计,Check约束,Default约束,触发器设计,视图设计,存储过程设计,权限设计等。这些都完成了,最后一步才是写SQL代码实现这些设计,创建数据库及相关的数据表,关联,视图,触发器,存储过程等一些列的看得见的数据库参数。
上面说的比较理论,也比较笼统。我想我可以用一个简单例子告诉你我要表达的意思。例子很简单,其中很多地方都不是太好,不过或许可以给你一个直观的思路。
数据库应用课程设计报告书
网上超市管理系统
成 绩:
学 号:
姓 名:
指导教师:
20 年 月 日
目录
任务书......................................... (3)
1. 需求调查、分析................................. (4)
1.1.企业介绍.................................... (4)
1.2.需求调查及分析.............................. (5)
2. 面向对象分析和设计............................. (7)
2.1. 用例分析 (7)
2.2.类和对象设计 (12)
3. 逻辑结构设计.................................. (15)
3.1. 类和对象向关系模式转换............................................ (15)
3.2. 关系模式优化 (16)
4. 数据库物理结构设计............................ (16)
4.1. 存取方法设计 (16)
4.2. 存储结构设计 (17)
5. 数据库完整性设计.............................. (17)
5.1. 主键及唯一性索引 (17)
5.2. 参照完整性设计 (18)
5.3. Check约束 (18)
5.4. Default约束 (18)
5.5. 触发器设计 (19)
6. 数据库视图设计................................ (19)
7. 数据库存储过程设计............................ (20)
8. 权限设计...................................... (20)
9. 总结.......................................... (21)