| 实训X班X组 | 文 档 编 号 | 产品版本 | 密级 | |
| 文件状态: [ ] 草 稿 [ ] 正式发布 [ ] 正在修改 | 1.0 | 内部 | ||
| 项目名称 | 服装电子商务 | 共16页 | ||
文档作者: 邹泽桦
项目组长: 付磊扬
批 准 人:
批准日期:
版本状态
| 版本 | 作者 | 参与者 | 起止日期 | 注释 |
| V0.1 | 邹泽桦 | 2013.9.12-2013.9.16 | 初稿 | |
| 团队 | 版本 | 日期 | 签名 |
| 姓名 | 位置 | 分发方式 | 分发日期 |
1.1编写目的
数据库设计报告描述了一个数据库的设计,数据库是将一组相关数据存储为一个或多个计算机文件,并允许用户或计算机程序通过数据库管理系统(DBMS)访问这些数据。它同时也描述了用来访问或操作这些数据的软件模块。
本文档是说明了数据库设计的整个概念,设计过程及各对象之间的关系提供了数据库设计的可视性以及软件支持所需的信息。
1.2编写约定
对照《联微邮件通讯平台项目数据库设计报告1.0》编写数据库
1.2.1目录规则
一级标题字体为小三+黑体+加粗,编号从1开始
二级标题字体为四号+黑体+加粗,编号如1.1开始,1为上级编号
三级标题字体为小四+黑体+加粗,编号如1.1.1开始1.1为上两级编码组合;
四级标题字体为五号+黑体+加粗,编号如1.1.1.1开始,1.1.1为上级编号
五级标题字体为五号+黑体+加粗,编号如1),重新开始编号;
六级标题字体为五号+黑体+加粗,编号如(1),重新开始编号;
七级标题字体为五号+黑体+加粗,编号如a.,重新开始编号;
标题的字体依次类推,最小字体不得小于五号,都为黑体+加粗;
1.2.2正文内容
正文内容都为五号+宋体(首行缩进两个字符),段间距为1.5倍行距;项目符号可以自行定义。
图片下方应出现图例“图 *-*-*”,图片需要调整大小,以适合某章节中图片不跳页而使得上一页有大量空白。并且每章最后插入一个分页符,使得各章节之间互不干扰。
表的标注在表上方居中显示“表*-*-*”;表格内的字体统一为小五号+宋体。
表格内的字体统一为五号+宋体。
1.2.3模板标注
采用斜体标注的是提示部分,供填写时参考,此部分内容需要删除。
采用兰色字体标注的是示例部分,供填写时参考,此部分内容需要删除。
1.3读者对象
《微软实训项目管理平台数据库设计报告》的阅读对象为:
1)对相关业务技术和总体方案作出决策的管理人员和质量管理人员;
2)对本《数据需求说明书》进行评审和确认的有关业务、技术人员;
3)参加详细设计,测试设计阶段工作的全体设计人员;
4)《微软实训项目管理平台》项目组,其他有权需要调用本文档的人员
1.4术语解释
| 名词/术语/缩写词 | 解 释 |
| … |
无
2数据库环境说明
1.待开发的数据库名称:微软实训项目管理平台数据库
2.数据库系统:SQL Server 2008
3.数据库宿主环境:
软件环境:
Microsoft SQL Server 2008 R2 数据库
Power Designer 12.5 数据库开发工具
Microsoft Visual Studio 2010开发工具
硬件环境:
Intel Pentium 2GHz及以上;
800×600分辨率及以上;
内存1G及以上
4.客户端连接工具:IE7.0或以上版本
3数据库的命名规则
数据库命名要遵从以下命名原则:
表意性原则:数据库命名本着表意性原则,即命名应尽量反映存储/action/view/column的数据内容;
长名原则:很少使用或者不使用缩写;
数目最少化原则:数据库对象应该尽量满足数据最小化原则,也就是数据库数目,存储过程,视图等数量最小化。
数据库名:
●数据库数目最少化原则 ;
●数据库名采用Pascal大小写命名方法;
表
●表名采用Pascal大小写命名法;
●整个表名的长度不要超过30 个字符;
●首字母大写,多个单词的话,单词首字母大写,反对order/Useraccout/ORDER;
●避免中文拼音;
●避免下划线连接,反对User_Accout(下划线适用Oracle数据库);
●避免保留字;
●表别名命名规则:取表义名的前3个字符加最后一个字符。如果存在冲突,适当增加字符(如取表义名的前4 个字符加最后一个字符等);
●数据库中不论是表名还是字段名,都一律用英文,不准出现其它语言;且保留原来的字段名,保留它们的规范;
●表名称 = 表内容标识(首字大写),如User。
●命名应尽量反映存储的数据内容;
●为了不增加数据库当中的表名的长度,一般不允许出现如Form或者Table的字样,如:记录表:应为Record,而不是RecordTable;
属性(列或字段)
●采用有意义的列名;
●采用Pascal大小写命名法;
●属性名前不要加表名等作为前缀;
●必须有一主键,主键不直接用ID,而是表名+Id;
●不要使用“ID”作为列名;
●属性后不加任何类型标识作为后缀;
●避免中文拼音;
●避免下划线连接;
●避免名称过长;
●避免保留字。
3.1主键
●主键一般以表名加表示主键的意义的词组成或者表名+Id;
●原则上任何表都必须定义主键;
●原则上反对联合主键;
●主键命名为:“表名+表示意义的词”,如UserId。
3.2外键
●外键即其主键表的主键名,所以参考主键命名规范。
4物理设计
4.1表汇总
| 表名 | 功能说明 |
| 表 Brand | |
| 表 Categories | |
| 表 Chileren | |
| 表 Commodity | |
| 表 CommodityOrders | |
| 表 CommodityStyle | |
| 表 DeleteBills | |
| 表 GoodBills | |
| 表 GoodOrders | |
| 表 Goodstate | |
| 表 Orders | |
| 表 OrdersState | |
| 表Parameter | |
| 表Review | |
| 表Salebills | |
| 表ShoppingCar | |
| 表sysdiagrams | |
| 表UserRoles | |
| 表Users |
| 表Usertates |
| 表名 | Brand | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | 说明 |
| 商标编号 | BID | Number | 非空 | 主键 | |
| 商标名称 | BName | varchar(10) | 非空 | ||
| parentID | parentID | Number | 非空 | 外键 | |
| 补充说明 | |||||
| 表名 | categories | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | 说明 |
| 类别编号 | CID | number | 非空 | 主键 | |
| parentld | parentld | number | 非空 | 外键 | |
| 类别名字 | CName | varchar(20) | 非空 | ||
| HosearchTime | HosearchTime | int | 非空 | 对于每一件的搜索热度 | |
| 补充说明 | |||||
| 表名 | children | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | 说明 |
| 童装ID | Id | int | 非空 | 主键 | |
| 商品ID | commodityId | int | 非空 | 外键 | |
| 体重 | Height | Nvachar(20) | 非空 | ||
| 性别 | sex | Nvachar(20) | 非空 | ||
| 补充说明 | |||||
| 表名 | commodity | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | 说明 |
| 商品编号 | COMID | number | 非空 | 主键 | |
| 商品名字 | COMName | varchar(30) | 非空 | ||
| 价格 | COMPrice | int | 非空 | ||
| 风格ID | COMStyleld | number | 非空 | ||
| 售价 | COMSales | int | 非空 | ||
| 点击量 | Hitnum | int | 非空 | ||
| 商标编号 | Brandld | number | 非空 | 外键 | |
| ISBN | ISBN | varchar(500) | 非空 | ||
| 时间 | times | time | 非空 | ||
| 介绍 | Introduction | varchar(500) | 非空 | ||
| 库存量 | Stock | int | 非空 | ||
| 类别ID | Categoriesld | Number | 非空 | ||
| 商品类别 | Goodscategories | number | 非空 | ||
| 补充说明 | |||||
| 表名 | commodityOrders | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| 商品列表 | id | number | 非空 | 主键 | |
| 商品编号 | Commodityld | number | 非空 | 外键 | |
| 商品数量 | Commoditycount | Int | 非空 | ||
| 订单编号 | Orderld | number | 非空 | 外键 | |
| 补充说明 | |||||
| 表名 | commodityStyle | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | 说明 |
| 风格ID | Id | Number | 非空 | 主键 | |
| 风格名称 | StyleName | varhar(50) | 非空 | ||
| 补充说明 | |||||
| 表名 | Deletebills | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | 说明 |
| 订单编号 | DELID | number | 非空 | 主键 | |
| 客户姓名 | username | varchar(10) | 非空 | ||
| 用户类型 | userRoles | varchar(10) | 非空 | ||
| 商品名称 | goodsName | varchar(10) | 非空 | ||
| 价格 | price | float | 非空 | ||
| 数量 | number | int | 非空 | ||
| 总金额 | Totalprice | float | 非空 | ||
| 订单状态 | Orderstate | varchar(10) | 非空 | ||
| 订单时间 | ordertime | datetime | 非空 | ||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | Goodsbills | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| 订单编号 | DBID | int | 非空 | 主键 | |
| 客户姓名 | userName | nvarchar(50) | 非空 | 外键 | |
| 用户类型 | Userstate | nvarchar(50) | 非空 | 外键 | |
| 商品名称 | GoodName | nvarchar(100) | 非空 | 外键 | |
| 价格 | Price | float | 非空 | 外键 | |
| 数量 | Number | int | 非空 | 外键 | |
| 总金额 | totalPrice | float | 非空 | 外键 | |
| 订单状态 | Orderstate | nvarchar(50) | 非空 | 外键 | |
| 订单时间 | Ordertime | datetime | 非空 | 外键 | |
| 发货状态 | deliverState | nvarchar(50) | 非空 | ||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | GoodsOrders | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| 订单编号 | GOID | int | 非空 | 主键 | |
| 客户姓名 | username | nvarchar(50) | 非空 | 外键 | |
| 用户类型 | userState | nvarchar(50) | 非空 | 外键 | |
| 商品名称 | GoodName | nvarchar(100) | 非空 | 外键 | |
| 价格 | Price | float | 非空 | 外键 | |
| 数量 | Number | int | 非空 | 外键 | |
| 总金额 | totalPrice | float | 非空 | 外键 | |
| 订单状态 | Orderstate | nvarchar(50) | 非空 | 外键 | |
| 订单时间 | Ordertime | datetime | 非空 | 外键 | |
| 发货状态 | deliverState | nvarchar(50) | 非空 | ||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | Goodstate | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| ID | int | 非空 | 主键 | ||
| Goodstate | nvarchar(50) | 非空 | 外键 | ||
| 表名 | Orders | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| id | int | 非空 | 主键 | ||
| Quality | int | 非空 | 外键 | ||
| Moneytotal | float | 非空 | 外键 | ||
| OrderStateId | int | 非空 | 外键 | ||
| UserId | int | 非空 | 外键 | ||
| OrderTime | datetime | 非空 | 外键 | ||
| GoodstateId | int | 非空 | 外键 | ||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | OrderStates | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| id | int | 非空 | 主键 | ||
| States | nvarchar(50) | 非空 | 外键 | ||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | Parameter | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| ParameterId | number | 非空 | 主键 | ||
| CommodityId | number | 非空 | 外键 | ||
| Color | varchar(10) | 非空 | |||
| material | varchar(10) | 非空 | |||
| size | Int | 非空 | |||
| Fitages | varchar(10) | 非空 | |||
| Style1 | varchar(10) | 非空 | |||
| Style2 | varchar(10) | 非空 | |||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | Review | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| ReviewId | int | 非空 | 主键 | ||
| CommodityId | number | 非空 | 外键 | ||
| times | Time | 非空 | |||
| usersId | Number | 非空 | 外键 | ||
| Title | varchar(10) | 非空 | |||
| content | varchar(10) | 非空 | |||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | Salebills | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| 订单编号 | SBID | int | 非空 | 主键 | |
| 客户姓名 | username | varchar(10) | 非空 | ||
| 用户类型 | userState | varchar(10) | |||
| 商品名称 | goodsName | varchar(10) | |||
| 价格 | Price | Int | |||
| 数量 | Number | Int | |||
| 总金额 | totalPrice | Int | |||
| 订单状态 | orderState | varchar(10) | |||
| 发货状态 | deliverState | varchar(10) | |||
| 订单时间 | ordertime | varchar(10) | |||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | ShoppingCar | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| SCID | number | 非空 | 主键 | ||
| userID | number | 非空 | 外键 | ||
| CommodityId | number | 非空 | 外键 | ||
| commodityCount | Int | 非空 | |||
| ShopingTime | Time | 非空 | |||
| Moneytotal | int | 非空 | |||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | sysdiagrams | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| Name | number | 非空 | 主键 | ||
| Printcipal_id | number | 非空 | 外键 | ||
| Diagram_id | number | 非空 | |||
| Version | Varchar(10) | 非空 | |||
| definition | Varchar(10) | 非空 | |||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | UserRoles | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| URID | number | 非空 | 主键 | ||
| Roles | varchar(50) | 非空 | |||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | Users | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| usersID | int | 非空 | 主键 | ||
| userSName | varchar(50) | 非空 | 外键 | ||
| Passwords | |||||
| Rigstertime | |||||
| roleID | |||||
| statesId | |||||
| lastlogintime | |||||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
| 表名 | Usertates | ||||
| 列别名 | 列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
| UTID | Number | 非空 | 主键 | ||
| states | varchar(50) | 非空 | |||
| 补充说明 | 图片数据类型存放的是图片所在路径 | ||||
5.1防止用户直接操作数据库的方法
采用三层架构开发该系统,用户只能访问web层应用,并通过web层调用业务逻辑处理层BLL里面的方法调用数据库内容,完全杜绝了用户直接操控数据库的方法。
5.2用户帐号密码的加密方法
采用MD5加密方法,MD5是输入不定长度信息,输出固定长度128-bits的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128-bits散列。基本方式为,求余、取余、调整长度、与链接变量进行循环运算。
将密码转换成32位数据存储在数据库里,极大地加强了账户密码的安全性。
5.3其他
防止SQL注入式攻击我们的解决方式是:
1、首先在UI录入时,要控制数据的类型和长度、防止SQL注入式攻击,系统提供检测注入式攻击的函数,一旦检测出注入式攻击,该数据即不能提交;
2、业务逻辑层控制,通过在方法内部将SQL关键字用一定的方法屏蔽掉,然后检查数据长度,保证提交SQL时,不会有SQL数据库注入式攻击代码;但是这样处理后,要求UI输出时将屏蔽的字符还原。因此系统提供屏蔽字符 的函数和还原字符的函数。
3、在数据访问层,绝大多数采用存储过程访问数据,调用时以存储过程参数的方式访问,也会很好的防止注入式攻击。
6性能优化
分析并优化数据库的“时-空”效率,尽可能地“提高处理速度”并且“降低数据占用空间”。
(1)分析“时-空”效率的瓶颈,找出优化对象(目标),并确定优先级。
(2)当优化对象(目标)之间存在对抗时,给出折衷方案。
(3)给出优化的具体措施,例如优化数据库环境参数,对表格进行反规范化处理等。
| 优先级 | 优化对象(目标) | 措施 |
完成数据库的物理设计以后,设计人员就要用RDBMS提供的数据定义语言和其他使用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,再经过调试产生目标模式,然后就可以组织数据入库了。下载本文