文档详情

基于SSH2架构的课程设计实训教学示例项目——《客户关系管理CRM系统》——构建项目中.

ss****gk
实名认证
店铺
DOC
86.50KB
约36页
文档ID:235309527
基于SSH2架构的课程设计实训教学示例项目——《客户关系管理CRM系统》——构建项目中._第1页
1/36

基于SSH2架构的课程设计实训教学示例项目一一《客户关系管理CRM系统》——构建项目中的数据库表结构杨教授大学堂精心创作的优秀程序员职业提升必读系列资料基于SSH2架构的课程设计实训教学示例项冃一一《客户关系管理CRM 系统》一一构建项目中的数据库表结构1.1.1设计项冃中的数据库表1>本项目中的数据库及数据库表结构数据库表的设计思路就是将数据分类,同一类的数据放在一个表中, 并且有一个字段与其他表之间建立联系而且要尽可能的细分,以最大限 度地保证每个表中不存在重复的数据资料1) 数据库系统为MySQL数据库,数据库名称为bluedreamcrmo杨教授大学堂,版权所冇,盗版必究 1/15页杨教授大学堂精心创作的优秀程序员职业提升必读系列资料(2) 定义标准的对象命名规范一定要定义数据库对象的命名规范对数据库表来说,从项目一开始 就要确定表名是采用复数还是单数形式3) 数据库表内的字段要针对键采用一整套设计规则比如,如果键是数字类型,可以用_Numb作为后缀;如果是字符类 型则可以采用_Char后缀对字段名应该采用标准的前缀和后缀H期字Customer和OrderCustomer表的前缀是cu_,所以该表内的字段 名女口下:cu_customerld_Numb cu_customerAddress_Char 等。

Order 表 的前缀是or_,所以字段名是:or_orderld__Numb和 or_orderDescription_Char 等2、数据库表设计中的三大范式(1) 第一范式1) 内容相似的数据列必须消除(消除的办法就是再创建一个数据表来 存放他们,建立关联关系)一一也就是所冇的数据项目都是不可再分的“原子”数据 单元,而对于“复合”数据单元必须要为每一组相关数据分别再创建一个 关联的数据库表2) 每条数据记录必须用一个主键来标示和能够唯一地区分对于表中的每一行,必须且仅仅有唯一的行值,并且在一行中的每一 列仅冇唯一的值并且具冇原子性第一范式是通过把重复的数据组放到每 个独立的表中,把这些表通过一对多关联联系起来这种方式来消除重复数 据组的如下对同一个问题存在两种不同的数据库表设计的结果:create table studentlnfoOne(id number;name varchar2(20), age numberinsert into studentlnfoOne values(l,'张三',21);create table studentlnfoTwo(studentltem varchar2(50))杨教授大学堂,版权所有,盗版必究。

2/15页杨教授大学堂精心创作的优秀程序员职业提升必读系列资料insert into studentlnfoTwo values('l__ 张三 _21 ');在第2种形式的数据库表studentlnfoTwo设计中采用一个复合字段包 含三个不同方面的信息,虽然对该表studentlnfoTwo通过应用字符串解析, 也能够达到和应用表studentlnfoOne 一样的应用效果,但显然第一种数据 库表的设计方法应该更好,查询数据更加方便,而表studentlnfoTwo不仅 查询数据比较麻烦,而且也违反了第一范式中所耍求的数据列是不可分的 原则2) 第二范式1) 只要数据列里面的内容出现重复,就意味着应该把表拆分为多个表2) 拆分形成的表必须用外键关联起来一一也就是要遵守主外键关联 的原则第二范式要求非主键列是主键的子集,非主键列活动必须完全依赖整 个主键主键必须有唯一性的元素,一个主键可以由一个或更多的组成唯 一值的列组成一旦创建,主键无法改变,外键关联一个表的主键主外键关联意味着一对多的关系第二范式主要是处理冗余数据的删除问题,当某张表中的信息依赖于 该表中其它的不是主键部分的列的时候,通常会违反第二范式。

如某个数据库表中有以下的字段:老师姓名、老师讲授的课程、学 生姓名、学生年级等这样的数据库表将可能会出现重复的数据行,比如:张老师、操作系统原理、张三、软工2年级张老师、操作系统原理、张三、软工2年级张老师、操作系统原理、张三、软工2年级因此,该数据库表是不满足2NF的要求,应该要将学生信息和老师信 息相互分离形成老师信息授课信息表和学生信息表,并将这两个数据库表 通过主、外键相互关联老师主键ID 老师姓名学生主键ID 学生姓名(3) 第三范式与主键没有直接关系的数据列必须消除(消除的办法就是再创建一个 表来存放他们),也就是要求非主键字段互不依赖第三范式规则查找以 消除没有直接依赖于第一范式和第二范式形成的表的主键的属性我们为 没有与表的主键关联的所有信息建立了一张新表杨教授大学堂,版权所冇,盗版必究 3/15页老师讲授的课程学生年级授课老师外键ID杨教授大学堂精心创作的优秀程序员职业提升必读系列资料 每张新表保存了来自源表的信息和它们所依赖的主键如在某一张数据库表中冇以下的字段:学号、姓名、班级号、班级名称、班级位置等字段,其中学号为该数据库表的主键,则班级号依赖于学 号,每个学生都有相应的班级号。

但是班级名称、班级位置是依赖于班级 号的并不需要依赖于学号因此,应该要将班级号、班级名称、班级位置 等字段从该数据库表中分离出,并放到班级数据库表中4) 第四范式第四范式禁止主键列和非主键列一对多关系不受约束5) 第五范式第五范式将表分割成尽可能小的块,为了排除在表中所冇的冗余3、为什么要遵守范式(1)应用范式的目标之一是保证数据逻辑的正确性例如,经理管理部门信息,人事工作人员管理员工如果采用范式分 成“部门”、“员工”主/子形式的2个数据库表,人事工作人员在管理员工 信息吋,只能为员工指定现在存在的合法部门ID而不能任意地分配部门ID 或者部门的其它信息项目如果不采用数据库表设计的范式进行“设计约束”,将可能会出现“部 门”和“员工”的信息在一个数据库表中,在管理员工信息时,就可能因 为人事疏忽、或程序不完善等情况为某个员工指定了一个错误、不存在的 部门名称或者编号;或者同一个部门,在不同的记录中,名称等相关信息 都一样,而部名的编号却不一致等等2)应用范式的目标之二一一节约存储采用范式最大的好处是节约存储,但坏处是做某些复杂查询时,需要 高级的程序员写出极其复杂的多级关联查询语句(但可以应用视图,通过 使用空间实现换速度)04、 合理地遵守范式(1) 在系统中实现一定的非范式化,可以简化查询、报表的工作但非范式系统的最大的问题是数据的一致性,因为数据库的主键(KEY) 和外键(FKEY)不能正常发挥作用,就需耍额外的机制来保证。

2) 适当不遵守范式因为数据库设计遵循先范化,再优化所以基木上最后的设计都不是 范化的,也很难找到这样的范化设计特别是在一些为了统计分析方便的 系统中,增加了大量冗余的统计杨教授大学堂,版权所有,盗版必究 4/15页杨教授大学堂精心创作的优秀程序员职业提升必读系列资料信息面向交易处理的系统,对数据库的插入、删除、修改操作占多,而查 询较少;但在决策、分析、统计查询的MIS系统中,对数据库的查询要求 比较多5、 索引是从数据库中获取数据的最高效方式之一95%的数据库性能问题都可以釆用索引技术得到解决但在应用索引 时,需要考虑数据库的空间有多大,表如何进行访问,还有这些访问是否 主要用作读写等大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它们也是经常使用的键还有,不要索引memo/note字段,不要索引大 对象字段,这样作会让索引占用太多的存储空间6、contract_info合同信息数据库表(1) 数据库表结构(2) 对应的SQL语句CREATE TABLE 'contractjnfo' ('contract」D' int(10) NOT NULL COMMENT '合同 ID','contract_kindNumber' varchar(50) NOT NULL COMMENT '合同类 型','contract_titleText' varchar(50) NOT NULL COMMENT '合同标题','customerJD' int(10) NOT NULL COMMENT '甲方签订人 ID','contract_secondName' varchar(25) NOT NULL COMMENT '乙方签 订人姓名','contract_currentState'varchar(lO) NOT NULL COMMENT '合同状 态','contract_totalMoney' double NOT NULL COMMENT '合同总金额'z'contract_signDate' date NOT NULL COMMENT '签订日期','contract_deadLineDate' date NOT NULL COMMENT '截止 H 期杨教授大学堂,版权所冇,盗版必究。

5/15页杨教授大学堂精心创作的优秀程序员职业提升必读系列资料'contractstructionText' text NOT NULL COMMENT '合同说明'zPRIMARY KEY ('contractJD'))ENGINE=IrrnoDB DEFAULT CHARSET=gb2312;INSERT INTO 'contractjnfo' VALUES ('1 ', '商业合同', '北京科技有限公司商业合同', '1', '李四', '待审批', '100000', '2011-03-20', '2011-03-31', '北京科技有限公司商业合同');7、customerjnfo个人客户信息数据库表(1) 数据库表结构(2) 对应的SQL语句CREATE TABLE 'customerjnfo' ('customerJD' int(10) NOT NULL DEFAULT '0' COMMENT ' 客户 ID','customer_name' varchar(25) NOT NULL COMMENT '客户姓名'z'customer_sex' tinyint (1) NOT NULL COMMENT '客户性别', 'customer^age' tinyint⑶ NOT NULL COMMENT '客户年龄', 'customerJsValid' tinyint (1) NOT NULL COMMENT '客户信息是否有效',在行业','customer_unitSize' varchar(15) NOT NULL,'customer__unitName' varchar(25) NOT NULL,'customer__unitlnstructionText' text NOT NULL COMMENT '客户单 位简介&#。

下载提示
相似文档
正为您匹配相似的精品文档