数据库
说明书
内容管理系统(DWCMS)
文件状态:
[ ] 草稿
[ √ ] 正式发布
[ ] 正在修改
文件标识:
兄弟连 大腕组-LMB-DATABASE
当前版本:
2.0
作 者:
大碗小组
文件状态:
2014-01-01
版 本 历 史
版本/状态
作者
参与者
起止日期
备注
1.0
大腕组
大腕组成员员
2013-01-18
2014-01-08
测试版
2.0
大腕组
大腕组成员
2014-01-09
2014-02-13
正式版
引言
在使用任何数据库之前,都必须设计好数据库,包括将要存储的数据的类型,数据之间的相互关系以及数据的组织形式。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据。为了合理地组织和高效率地存取数据,目前最好的方式,就是建立数据库系统,因此在系统的总体设计阶段,数据库的建立与设计是一项十分重要的内容。由于数据库应用系统的复杂性,为了支持相关程序运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程,也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。
1.1 编写目的
数据库设计的好坏是一个关键。如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分,是一个系统的根基。用于开发人员进行项目设计,以此作为编码的依据,同时也为后续的数据库维护工作提供了良好的使用说明,也可以作为未来版本升级时的重要参考资料。数据库设计的目标是建立一个合适的数据模型。这个数据模型应当是满足用户
,既能合理地组织用户需要的所有数据,又能支持用户对数据的的所有处理功能。并且要具有较高的范式,数据完整性好,效益高,便于理解和维护,没有数据冲突。
1.2 背景
名称
说明
数据库名称
Lmbang(辣妈帮)
数据库系统
MySQL5.0
客户端连接工具
MySQL Command Line Client
项目任务提出者
LAMP兄弟连-大碗组
项目开发者
大腕组
使用用户
大腕组成员
1.3 定义
Lmbang: 辣妈帮
E-R图:实体关系图
1.4 参考资料
A. 《细说PHP》教程
B. 《DWCMS项目需求
说明书》
C. 本项目相关的其他参考资料。
2. 外部设计
外部设计是研究和考虑所要建立的数据库的信息环境,对数据库应用领域中各种信息要求和操作要求进行详细地分析,了解应用领域中数据项、数据项之间的关系和所有的数据操作的详细要求,了解哪些因素对响应时间、可用性和可靠性有较大的影响等各方面的因素。
2.1 标识符和状态
数据库
前缀:lmbang_
用户名:root
密码;020808
权限:全部
有效时间:开发阶段
说明:系统正式发布后,可能更改数据库用户/密码,请在统一位置编写数据库
连接字符串,在发行前请予以改正。
2.2 使用它的程序
本系统主要利用PHP作为前端的应用开发工具,使用MySQL作为后台的数据库, Linux或Windows均可作为系统平台。
2.3 约定
■ 所有命名一定要具有描述性,杜绝一切拼音、或拼音英文混杂的命名方式。
■ 字符集采用 UTF-8,请注意字符的转换。
■ 所有数据表第一个字段都是系统内部使用主键列,自增字段,不可空,名称为:
id,确保不把此字段暴露给最终用户。
■ 除特别说明外,所有日期格式都采用int格式,无时间值。
■ 除特别说明外,所有字段默认都设置不充许为空, 需要设置默认值。
■ 所有普通索引的命名都是表名加设置索引的字段名组合,例如用户表 User 中
name字段设置普通索引,则索引名称命名方式为 user_name。
2.4 支持软件
操作系统: Linux / Windows
数据库系统:MySQL
查询浏览工具:PHPMyAdmin
命令行工具:mysql
注意:mysql 命令行环境下对中文支持不好,可能无法书写带有中文的 SQL 语句,
也不要使用PHPMyAdmin录入中文。
结构设计
数据库的结构设计中有许许多多需要考虑的因素,如数据库的背景、应用环境等方面都需要有深入的了解,只有一个对所有这些因素都很了解的数据库设计专家,他设计的数据库才能易于使用和维护,并且具有高效和一致的特征。虽然这样只对数据库设计过程有一个概要的了解,但是仍然有助于读者了解和掌握 SQL,使读者可以很好地分析数据间的相互关系在使用SQL进行报表的生成、子查询及视图等操作时,可以更好地进行操作。
3.1 概念结构设计
概念数据库的设计是进行具体数据库设计的第一步,概念数据库设计的好坏直接影响到逻辑数据库的设计,影响到整个数据库的好坏。我们已经得到了系统的数据流程图和数据字典,现在就是要结合数据规范化的理论,用一种模型将用户的数据要求明确地表示出来。概念数据库的设计应该极易于转换为逻辑数据库模式,又容易被用户所理解。概念数据库设计中最主要的就是采用实体-关系数据模型来确定数据库的结构。数据是表达信息的一种重要的量化符号,是信息存在的一种重要形式。数据模型则是数据特征的一种抽象。它描述的是数据的共性,而不是描述个别的数据。一般来说,数据模型包含两方面内容。
(1) 数据的静态特性:主要包括数据的基本结构、数据间的关系和数据之间的相互约束
等特性。
(2) 数据的动态特性:主要包括对数据进行操作的方法。
在数据库系统设计中,建立反映客观信息的数据模型,是设计中最为重要的,也最基本的步骤之一。数据模型是连接客观信息世界和数据库系统数据逻辑组织的桥梁,也是数据库设计人员与用户之间进行交流的共同基础。概念数据库中采用的实体-关系模型,与传统的数据模型有所不同。实体-关系模型是面向现实世界,而不是面向实现方法的,它主要是用使用方便,因而在数据库系统应用的设计中,得到了广泛应用。实体-关系模型可以用来说明数据库中实体的等级和属性。以下是实体-关系模型中的重要标识:
● 在数据库中存在的实体
● 实体的属性
● 实体之间的关系
3.1.1 实体和属性的定义
按照定义的数据类型和属性创建实体和实体属性列表。实体形成表,如“用户”就是一个实体,属性则为表中的列,如对应于实体“用户”属性包含“用户名”、“用户ID”等。
◆ 实体
实体是实体-关系模型的基本对象,是现实世界中各种事物的抽象。凡是可以相互区别开并可以被识别的事、物、概念等对象均可认为是实体。本网站数据库中,基本的实体列表如下:
● 广告
● 意见反馈
● 帮
● 帮标签
● 帮分类
● 收藏
● 评论
● 日记
● 日记上传数据
● 达人
● 友情链接
● 热门搜索
● 加入的帮
● 赞
● 私信
● 私信
表
● 图片
● 用户关系
●
举报
●
话题
●
用户
●
最近访问
●
最近浏览
●
网站信息
●
词语过滤
在绘制实体-关系图(E-R 图)时,实体出现在矩形中。如图1所示。
图1 表示实体的E·R图
一般来说,每个实体都相当于数据库中的一个表。上面介绍的实体都是强实体,每个实体都有自己的键。但是在实际领域中,经常存在一些实体,它们没有自己的键,这样的实体称为弱实体。弱实体中不同的记录有可能完全相同,难以区别,这些值依赖于另一个实体(强实体)的意义,必须与强实体联合使用。在创建了实体之后,就可以标识各个实体的属性了。
◆ 属性
每个实体都有一组特征或性质,称为实体的属性。实体的属性值是数据库中存储的主要数据,一个属性实际上相当于表中的一个列。下面来看看“文章”(article)实体。这个实体具有哪些属性呢?对于一篇文章来说,都具有文章标题、文章简介、添加时间、文章来源、文章内容、关键字、访问次数、推荐状态、审核状态。所以关于“文章”实体的属性如下:
● 文章标题(title)
● 文章编号(id)
● 文章简介(summary)
● 添加时间(posttime)
● 文章来源(comefrom)
● 文章内容(content)
● 关键字(keyword)
● 访问次数(views)
● 推荐状态(recommend)
● 审核状态(audit)
实体“栏目(column)”包含的属性如下:
● 栏目标题(title)
● 栏目路径(path)
● 栏目描述(description)
● 排序编号(ord)
由于篇幅有限这里就不列出所有实体的属性了,在绘制 E-R 图中,属性由椭圆包围,在属性和它所属的实体间使用直线进行连接,以实体brocms中 “文章”为例进行示例,如图2所示。
图2 包含属性的 Department的 E-R图
对于每个实体,都有其确定的主属性(实体中的主属性实际上相当于表中的主键),就可以惟一地确定实体的每个记录。最好是创建一个单独的属性作为主属性,在实体文章中可以选择“文章编号”作为主属性,在绘制 E-R 图中,主属性在属性下加下划线来说明。以实体“文章”为例进行示例,如图-3所示。
图3 定义了主属性的“文章”的 E-R图
注意:在数据库设计中,选择和设置列作为主键是一个关键步骤。
3.1.2 E-R 图的绘制
实体-关系图是表现实体-关系模型的图形工具,简称E-R 图。这节会以DWCMS数据库为例,给出一个完整的数据库的E-R 图设计示例。图3给出了在E-R 图中使用的各种元素的图形符号。
图-4 E-R图中使用的各种元素的图形符号
在 E-R 图中,实体之间的关系以菱形表示,关系中各方面的表通过直线与菱形中的关系名称相连接。还要为每个关系命名一个“关系名称”,实体与关系相连的直线旁都根据关系的属性标注有“1”或“N”。 E-R图为读者的数据库提供了一个不错的蓝图,可以分成三步进行:首先设计局部 E-R图;然后合并各局部 E-R 图,并解决可能存在的冲突,得到初步 E-R 图;最后修改和重构初步 E-R 图,消除其中的冗余部分,得到最终的全局 E-R 图,即概念模式。设计全局 E-R模式的目的不在于把若干局部 E-R 模式形式上合并为一个 E-R 模式,而在于消除冲突使之成为能够被全系统中所有用户共同理解和接受的统一的概念模型。使设计人员仅从用户角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。
3.1.3 设计局部E-R 模式
先设计局部 E-R 图,也称用户视图。在设计初步 E-R 图时,要尽量能充分地把组织中
各部门对信息的要求集中起来,而不需要考虑数据的冗余问题。 局部概念模型设计是从用
户的观点出发,设计符合用户需求的概念结构。局部概念模型设计的就是组织、分类收集到
的数据项,确定哪些数据项作为实体,哪些数据项作为属性,哪些数据项是同一实体的属性
等。确定实体与属性的原则:
■ 能作为属性的尽量作为属性而不要划为实体;
■ 作为属性的数据元素与所描述的实体之间的联系只能是1:n的联系;
■ 作为属性的数据项不能再用其他属性加以描述,也不能与其他实体或属性发生联系。
以下是例子 辣妈帮 的部分局部 E-R 图的设计:
3.1.4 设计全局E-R 模式
综合各局部E-R 图,形成总的E-R图,即用户视图的集成。所有局部ER模式都设计好了后,接下来就是把他们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。
另外,在进入下一节之前,先回顾一下概念数据库的设计,其中主要是实体-关系模型的建立。简要总结一下实体-关系模型建立的步骤:
(1) 对需求进行分析,从而确定系统中所包含的实体。
(2) 分析得出每个实体所具有的属性。
(3) 保证每个实体有一个主属性,该主属性可以是实体的一个属性或多个属性的组合。
主属性必须能惟一地描述每个记录。
(4) 确定实体之间的关系。
经过这些步骤后,读者就可以绘制出 E-R 图。之后可以再看看数据库的需要,判断是否获取了所需的信息,是否有遗漏信息等,读者可以再对 E-R 图进行修改,添加或删除实
体与属性。
3.1.5 全局 ER 模式的优化
在得到全局 ER 模式后,为了提高数据库系统的效率,还应进一步依据处理需求对 ER模式进行优化。一个好的全局 ER 模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:
1. 实体类型的个数要尽可能的少
2. 实体类型所含属性个数尽可能少
3. 实体类型间联系无冗余
逻辑结构设计
逻辑结构设计的任务是把概念设计阶段建立的基本 E-R 图,按照选定的内容管理系统软件支持的数据模型,转化成相应的逻辑设计模型。也就是可以将实体、实体间的关系等模型结构转变为关系模式,即生成数据库中的表,并确定表的列。下述讨论由实体-关系模型生成表的方法。
■ 任务:
将基本 E-R 图转换为与选用 辣妈帮 产品所支持的数据模型相符合的逻辑结
构。
■ 过程:
1) 将概念结构转换为现有辣妈帮 支持的关系模型 。
2) 从功能和性能要求上对转换的模型进行评价,看它是否满足用户要求。
3) 对数据模型进行优化
4.1 ER 图向关系模型的转化
上面实体之间的关系的基础上,将实体、实体的属性和实体之间的联系转换为关系模式。这种转换的原则是:
◆ 一个实体转换为一个关系,实体的属性就是关系的属性,实体的码就是关系
的码。
◆ 一个联系也转化为一个关系,联系的属性及联系所连接的实体的码都转化为关系的属性,但是关系的码会根据关系的类型变化,如果是:
1) 1:1联系,两端实体的码都成为关系的候选码
2) 1:n联系,n 端实体的码成为关系的码
3) m : n 联系,两端的实体码的组成为关系的码
4.2 消除冗余
所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库的维护增加困难,应当予以消除。本系统的冗余数据和冗余关系已经在概念结构设计中处理过了,这里不再进行过多的叙述。
物理结构设计
数据库设计的最后阶段是确定数据库在物理设备上的存储结构和存取方法,也就是设计数据库的物理数据模型,主要是设计表结构。一般地,实体对应于表,实体的属性对应于表的列,实体之间的关系成为表的约束。逻辑设计中的实体大部分可以转换成物理设计中的表,但是它们并不一定是一一对应的。本次项目开发采用的是MySQL建立数据库。
5.1 设计数据表结构
在利用MySQL创建一个新的数据表以前,应当根据逻辑模型和数据字典先分析和设计数据表,描述出数据库中基本表的设计。需要确定数据表名称,所包含字段名称,数据类型,宽度以及建立的主键、外键等描述表的属性的内容。本项目全部 26 个数据表结构设计如下所示:
表5.1-1 广告结构表
表名
Lmbang_add 用于保存广告记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
SMALLINT(11)
无符号/非空/自动增涨
主键
广告编号
adname
VARCHAR(5)
无符号/非空/缺省0
广告名称
type
VARCHAR(50)
非空/缺省' '
广告类型
pic
VARCHAR(10)
非空/缺省' '
广告图片
url
VARCHAR(100)
非空/缺省' '
链接地址
orderno
INIT(11)
排列顺序
补充说明
表5.1-2 意见反馈结构表
表名
Lmbang_advise用于保存反馈的一件,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
反馈编号
uid
INT(11)
无符号/非空/缺省0
外键/普通索引
反馈用户
message
TEXT
非空/缺省' '
反馈信息
posttime
BIGINT
非空/缺省'0'
反馈时间
补充说明
表5.1-3 帮表
表名
Lmbang_bang 用于保存用户信息,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
帮编号
bcid
INT(11)
无符号/非空/缺省0
外键/普通索引(bcid)
分类编号
bangname
VARCHAR(50)
非空/缺省' '
帮名
bangpic
VARCHAR(50)
非空/缺省' '
帮图片
orderno
INT(11)
非空/缺省' '
排列顺序
补充说明
与帮分类通过bcid关联
表5.1-4 帮标签表
表名
Lmbang_tag 用于保存标签记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
消息编号
bid
INT(11)
无符号/非空/缺省0
帮id
tagname
VARCHAR(50)
非空/缺省' '
标签名
补充说明
通过bid与帮表相关联,标签就是每个帮下面的小分类
表5.1-5 帮分类表
表名
Lmbang_bclass 用于保存帮分类记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
分类编号
bclassname
VARCHAR(50)
分类名
补充说明
帮的分类,帮表的父级表
表5.1-6 最近浏览帮表
表名
Lmbang_browsebang 用于用户浏览的帮的记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
浏览编号
bid
INT(11)
无符号/非空/缺省0
帮id
uid
INIT(11)
非空/缺省' '
用户id
bangname
VARCHAR(30)
帮名
posttime
VARCHAR(20)
浏览时间
补充说明
保存用户的浏览记录
表5.1-7收藏表
表名
Lmbang_collect 用于保存相册记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
收藏编号
uid
INT(11)
无符号/非空/缺省0
用户id
topicid
INIT(11)
非空/缺省' '
话题id
collecttime
BIGINT(20)
收藏时间
补充说明
通过uid和topicid与用户表和话题表关联
表5.1-8 评论表
表名
Lmbang_comment,用于保存评论记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INIT(11)
无符号/非空/自动增涨
主键
评论编号
ctype
TINYINIT(4)
非空/缺省' '
评论名称
cid
INIT(11)
非空/缺省' '
评论所属id
content
TEXT
非空/缺省' '
评论内容
posttime
BIGINIT(20)
非空/缺省'
发表时间
uid
INIT(11)
非空/缺省'
用户id
qid
INIT(11)
非空/缺省'
引用回复id
floor
INIT(11)
无符号/非空/缺省0
所属楼层
补充说明
Ctype类型:1 话题评论,2图片日记 3文字图片 4语音图片。
Qid是话题评论时,引用回复的id
Floor话题评论所属楼层
表5.1-9 日记表
表名
Lmbang_diary,用于保存日记记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
日记编号
uid
INIT(11)
非空/缺省' '
用户id
type
VARCHAR(20)
非空/缺省' '
日记类型
content
TEXT
非空/缺省' '
日记内容
posttime
BIGINIT(20)
非空/缺省'
发表时间
补充说明
Type类型: audio 音频日记 pic 图片日记 text 文档日记
表5.1-10 日记上传数据表
表名
Lmbang_diarydata,用于保存日记上传数据,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
日记编号
diaryid
INIT(11)
非空/缺省' '
日记id
filename
VARCHAR(50)
非空/缺省' '
路径名
补充说明
日记表的子表
表5.1-11 达人数据表
表名
Lmbang_doyen,用于保存达人记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
达人编号
uid
INIT(11)
非空/缺省' '
用户id
bcid
INIT(10)
非空/缺省' '
帮分类id
count
INIT(10)
非空/缺省' '
发表话题数
补充说明
统计达人数据
表5.1-12 友情链接表
表名
Dw_flink,用于保存友情链接记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(4)
无符号/非空/自动增涨
主键
链接编号
Flinkname
VARCHAR(50)
非空/缺省' '
网站名称
type
VARCHAR(15)
非空/缺省' '
链接类型
url
VARCHAR(100)
非空/缺省' '
链接地址
logo
VARCHAR(50)
非空/缺省'
链接图片
orderno
INIT(11)
非空/缺省'
显示顺序
isplay
TINYINIT(4)
非空/缺省'
是否显示
补充说明
显示方式:有两种显示方式,0 为显示网站名称,1 为显示
Type类型:text文字链接,pic为图片链接
表5.1-13 加帮数据表
表名
Lmbang_joinbang,用于保存用户加帮记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
链接编号
uid
INT(11))
非空/缺省' '
用户id
bid
INT(11)
非空/缺省' '
帮id
bcid
INT(11)
非空/缺省' '
帮分类id
补充说明
表5.1-14 赞数据表
表名
Lmbang_like,用于保存赞记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
链接编号
pid
INT(11))
非空/缺省' '
图片id
uid
INT(11)
非空/缺省' '
用户id
type
INT(11)
非空/缺省' '
类型
补充说明
表5.1-15 私信数据表
表名
Lmbang_diary,用于保存用户私信记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
私信编号
puid
INT(11))
非空/缺省' '
发私信id
auid
INT(11)
非空/缺省' '
收私信id
content
TEXT
非空/缺省' '
私信内容
posttime
BIGINIT(20)
非空/缺省'
发表时间
补充说明
表5.1-16 私信记录数据表
表名
Lmbang_diarydata,用于保存私信数据记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
私信编号
uid
INT(11))
非空/缺省' '
发私信id
fuid
INT(11)
非空/缺省' '
收私信id
lasttime
BIGINIT(20)
非空/缺省'
最后联系时间
补充说明
表5.1-17 图片数据表
表名
Lmbang_pic,用于保存图片记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
图片编号
type
INT(11))
非空/缺省' '
图片类型
tid
INT(11)
非空/缺省' '
图片所属id
picname
VARCHAR(20)
非空/缺省' '
图片名
posttime
BIGINIT(20)
非空/缺省'
发表时间
补充说明
Type类型:1是话题,2是回复,3是头像
Tid就是各个类型对应的话题,回复,用户id
表5.1-18 用户关系数据表
表名
Lmbang_relation,用于保存用户关系记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
关系编号
uid
INT(11))
非空/缺省' '
操作用户id
auid
INT(11)
非空/缺省' '
被操作用户id
type
INIT(2)
非空/缺省' '
关系类型
actiontime
BIGINIT(20)
非空/缺省'
关系建立时间
补充说明
Type类型:1是关注,2是黑名单
表5.1-19 举报数据表
表名
Lmbang_report,用于保存举报记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
私信编号
uid
INT(11))
非空/缺省' '
用户id
type
TINYINT(2)
非空/缺省' '
举报id
ruid
INT(11))
非空/缺省' '
内容id
reporttime
BIGINIT(20)
非空/缺省'
举报时间
补充说明
Type类型:1是举报话题,2是举报评论
表5.1-20 话题信息表
表名
Lmbang_topic 用于保存话题记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
话题编号
uid
INT(11)
非空/缺省' '
用户id
bid
INT(11)
非空/缺省' '
帮id
title
VARCHAR(200)
非空/缺省 0
话题标题
content
TEXT
非空/缺省 0
话题内容
ccount
INT(11)
非空/缺省 0
话题下评论数
tagid
INT(11)
非空/缺省 0
所属标签id
posttime
BIGINT(20)
非空/缺省 0
发表时间
lasttime
BIGINT(20)
非空/缺省 0
回复时间
补充说明
表5.1-21 用户信息表
表名
Lmbang_user 用于保存用户信息记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
用户编号
username
VARCHAR(50)
非空/缺省' '
用户邮箱
nickname
VARCHAR(50)
非空/缺省' '
用户昵称
userpwd
VARCHAR(32)
非空/缺省 0
用户密码
province
VARCHAR(20)
非空/缺省 0
所在省
city
VARCHAR(20)
非空/缺省 0
所在市
babytype
TINYINT(2)
非空/缺省 0
妈妈类型
babysex
TINYINT(4)
非空/缺省 0
宝宝性别
babybrithday
BIGINT(20)
非空/缺省 0
宝宝生日
score
INT(11)
非空/缺省 0
积分
groups
TINYINT(4)
非空/缺省 0
用户组
headpic
VARCHAR(30)
非空/缺省 0
头像
signature
VARCHAR(200)
非空/缺省 0
签名
regtime
BIGINT(20)
非空/缺省 0
注册时间
lasttime
BIGINT(20)
非空/缺省 0
最后登录时间
regip
VARCHAR(20)
非空/缺省 0
注册ip
lastip
VARCHAR(20)
非空/缺省 0
登录ip
custombg
TINYINT(4)
非空/缺省 0
空间背景图片编号
ccount
INT(11)
非空/缺省 0
发话题数
findpwd
VARCHAR(20)
非空/缺省 0
找回密码参数
isdiary
TINYINT(2)
非空/缺省 0
是否公开日记
islogin
TINYINT(2)
非空/缺省 0
是否禁号
ispost
TINYINT(2)
非空/缺省 0
是否禁言
iscomment
TINYINT(2)
非空/缺省 0
是否公开回复
issee
TINYINT(2)
非空/缺省 0
同城是否可见
sinawb
VARCHAR(50)
非空/缺省 0
qqwb
VARCHAR(50)
非空/缺省 0
补充说明
Type类型:1为妈妈,2为准妈妈,3为备孕。Babysex为0表男,1表女。几个是否1为是,0为否
表5.1-22 用户搜索表
表名
Lmbang_usersearch用于保存用户搜索记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
搜索编号
type
TINYINT(2)
无符号/非空/缺省 0
搜索类型
keywords
VARCHAR(20)
无符号/非空/缺省 0
搜索内容
count
INT(10)
无符号/非空/缺省 0
搜索次数
posttime
BIGINT(20)
非空
搜索时间
补充说明
Type为1是帮,2是话题,3是用户
表5.1-23 最近访问表
表名
Lmbang_vist用于保存用户最近记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
访问编号
uid
INT(11)
无符号/非空/缺省 0
访问用户id
vuid
INT(11)
无符号/非空/缺省 0
被访问用户id
visttime
BIGINT(20)
非空
访问时间
补充说明
表5.1-24 网站配置表
表名
Lmbang_webconfig 用于保存文章记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(11)
无符号/非空/自动增涨
主键
配置编号
title
VARCHAR(50)
非空/缺省' '
网站标题
content
VARCHAR(200)
非空/缺省' '
网站描述
keywords
VARCHAR(100)
无符号/非空/缺省0
关键词
logo
VARCHAR(30)
无符号/非空/缺省0
LOGO
description
TEXT
非空/缺省' '
网站介绍
email
VARCHAR(50)
非空
联系邮箱
tel
VARCHAR(15)
非空/缺省' '
联系电话
adress
VARCHAR(500)
无符号/非空/缺省0
联系地址
补充说明
表5.1-25 关键词过滤表
表名
dw_keywords 用于保存相册记录,表引擎为 MyISAM 类型, 字符集为 utf-8
列名
数据类型
属性
约束条件
说明
id
INT(8)
无符号/非空/自动增涨
主键
关键词编号
words
VARCHAR(100)
非空/缺省' '
违法关键字
rewords
VARCHAR(100)
非空/缺省' '
替换关键字
补充说明
对于违法关键字可以进行替换,删除,修改,屏蔽操作
5.2 创建数据表
通过数据表结构的详细设计,再结合 MySQL的创建数据表的语法,本项目的 10个数据表的完整建表 SQL语句如下所示,默认表前缀为“dw_”:
创建 广告表lmbang_add的语句如下所示:
CREATE TABLE `lmb_ad` (
`id` int(11) NOT NULL auto_increment COMMENT '广告ID',
`adname` varchar(50) NOT NULL COMMENT '广告名称',
`type` varchar(10) NOT NULL COMMENT '类型',
`pic` varchar(50) NOT NULL COMMENT '图片',
`url` varchar(100) NOT NULL COMMENT '地址',
`orderno` int(11) NOT NULL COMMENT '排序',
PRIMARY KEY (`id`)
)ENGINE=MyISAM
DEFAULT
CHARSET=utf8
COMMENT='广告AUTO_INCREMENT=15 ;
创建 意见反馈表 lmbang_advise的语句如下所示:
CREATE TABLE `lmb_advise` (
`id` int(11) NOT NULL auto_increment COMMENT '意见反馈ID',
`uid` int(11) NOT NULL COMMENT '用户ID',
`message` text NOT NULL COMMENT '意见反馈内容',
`posttime` bigint(20) NOT NULL COMMENT '提交时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='意见反馈' AUTO_INCREMENT=12 ;
;
创建 帮表 lmbang_bang的语句如下所示:
CREATE TABLE `lmb_bang` (
`id` int(11) NOT NULL auto_increment COMMENT '帮ID',
`bcid` int(11) NOT NULL COMMENT '帮分类ID',
`bangname` varchar(50) NOT NULL COMMENT '帮名称',
`bangpic` varchar(50) NOT NULL,
`orderno` int(11) NOT NULL default '1',
PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='帮' AUTO_INCREMENT=62 ;
创建 帮标签表lmbang_bangtag的语句如下所示:
CREATE TABLE `lmb_bangtag` (
`id` int(11) NOT NULL auto_increment COMMENT '帮标签ID',
`bid` int(11) NOT NULL COMMENT '帮ID',
`tagname` varchar(50) NOT NULL COMMENT '帮标签名称',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
创建 帮分类 lmbang_class的语句如下所示:
CREATE TABLE `lmb_bclass` (
`id` int(11) NOT NULL auto_increment COMMENT '帮分类ID',
`bclassname` varchar(50) NOT NULL COMMENT '帮分类名字',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='帮分类' AUTO_INCREMENT=9 ;
创建 最近浏览帮lmbang_browerbang的语句如下所示:
CREATE TABLE `lmb_browsebang` (
`id` int(11) NOT NULL auto_increment,
`uid` int(11) NOT NULL COMMENT '用户id',
`bid` int(11) NOT NULL COMMENT '浏览帮id',
`bangname` varchar(30) NOT NULL COMMENT '浏览帮名',
`posttime` int(11) NOT NULL COMMENT '浏览时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='最近浏览帮表' AUTO_INCREMENT=25 ;)
创建 收藏表lmbang_collect的语句如下所示:
CREATE TABLE `lmb_collect` (
`id` int(11) NOT NULL auto_increment COMMENT '收藏ID',
`uid` int(11) NOT NULL COMMENT '用户ID',
`topicid` int(11) NOT NULL COMMENT '话题ID',
`collecttime` bigint(20) NOT NULL COMMENT '收藏时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='收藏表' AUTO_INCREMENT=15 ;)
创建 评论表lmbang_comment的语句如下所示:
CREATE TABLE `lmb_comment` (
`id` int(11) NOT NULL auto_increment COMMENT '评论ID',
`ctype` tinyint(4) NOT NULL COMMENT '评论类型(1话题3文字日记语音日记评论2日记图片评论)',
`cid` int(11) NOT NULL COMMENT '评论所属ID',
`content` text NOT NULL COMMENT '内容',
`posttime` bigint(20) NOT NULL COMMENT '发表时间',
`uid` int(11) NOT NULL COMMENT '用户ID',
`qid` int(11) NOT NULL COMMENT '引用ID',
`floor` int(11) NOT NULL COMMENT '楼层',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='评论表' AUTO_INCREMENT=133 ;
创建 日记表lmbang_diary的语句如下所示:
CREATE TABLE `lmb_diary` (
`id` int(11) NOT NULL auto_increment COMMENT '微日记ID',
`uid` int(11) NOT NULL COMMENT '用户ID',
`type` varchar(20) NOT NULL COMMENT '类型',
`content` text NOT NULL COMMENT '内容',
`posttime` bigint(20) NOT NULL COMMENT '发表时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=169 ;
创建 日记上传数据表lmbang_diarydata的语句如下所示:
CREATE TABLE `lmb_diarydata` (
`id` int(11) NOT NULL auto_increment COMMENT '日记数据ID',
`diaryid` int(11) NOT NULL COMMENT '日记ID',
`filename` varchar(50) NOT NULL COMMENT '日记数据名称',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='日记上传数据' AUTO_INCREMENT=189 ;
创建 达人表lmbang_doyen的语句如下所示:
CREATE TABLE `lmb_doyen` (
`id` int(11) NOT NULL auto_increment COMMENT '达人ID',
`uid` int(11) NOT NULL COMMENT '用户ID',
`bcid` int(11) NOT NULL COMMENT '帮分类ID',
`count` int(11) NOT NULL default '0' COMMENT '话题数',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='达人表' AUTO_INCREMENT=25 ;
创建 友情链接表lmbang_flink的语句如下所示:
CREATE TABLE `lmb_flink` (
`id` int(11) NOT NULL auto_increment COMMENT '友情链接ID',
`flinkname` varchar(50) NOT NULL COMMENT '名称',
`type` varchar(4) NOT NULL COMMENT '类型',
`url` varchar(100) NOT NULL COMMENT '地址',
`logo` varchar(50) NOT NULL COMMENT 'LOGO',
`orderno` int(11) NOT NULL COMMENT '排序',
`isdisplay` tinyint(4) NOT NULL COMMENT '是否显示',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='友情链接' AUTO_INCREMENT=52 ;
创建 已加入帮表lmbang_joinbang的语句如下所示:
CREATE TABLE `lmb_joinbang` (
`id` int(11) NOT NULL auto_increment COMMENT 'ID',
`uid` int(11) NOT NULL COMMENT '用户ID',
`bid` int(11) NOT NULL COMMENT '加入的帮ID',
`bcid` int(11) NOT NULL COMMENT '帮分类ID',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='加入的帮' AUTO_INCREMENT=1164 ;
创建 赞表lmbang_like的语句如下所示:
CREATE TABLE `lmb_like` (
`id` int(11) NOT NULL auto_increment COMMENT '赞ID',
`pid` int(11) NOT NULL COMMENT '图片ID',
`uid` int(11) NOT NULL COMMENT '用户ID',
`type` int(11) NOT NULL,
PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='赞表' AUTO_INCREMENT=87 ;
创建 私信表lmbang_message的语句如下所示:
CREATE TABLE `lmb_message` (
`id` int(11) NOT NULL auto_increment COMMENT '私信ID',
`puid` int(11) NOT NULL COMMENT '发私信ID',
`auid` int(11) NOT NULL COMMENT '收私信ID',
`content` text NOT NULL COMMENT '内容',
`posttime` bigint(20) NOT NULL COMMENT '发送时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='私信表' AUTO_INCREMENT=10 ;
创建 私信记录表lmbang_msg的语句如下所示:
CREATE TABLE `lmb_msg` (
`id` int(11) NOT NULL auto_increment COMMENT '私信记录ID',
`uid` int(11) NOT NULL COMMENT '发私信者ID',
`fuid` int(11) NOT NULL COMMENT '收私信者ID',
`lasttime` bigint(20) NOT NULL COMMENT '最后联系时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='私信记录表' AUTO_INCREMENT=5 ;
创建 图片表lmbang_pic的语句如下所示:
CREATE TABLE `lmb_pic` (
`id` int(11) NOT NULL auto_increment COMMENT '图片ID',
`type` tinyint(4) NOT NULL COMMENT '所属类型(1话题,2回复,3头像)',
`tid` int(11) NOT NULL COMMENT '所属ID',
`picname` varchar(50) NOT NULL COMMENT '图片名称',
`posttime` bigint(20) NOT NULL COMMENT '上传时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='图片表' AUTO_INCREMENT=73 ;
创建 用户关系表lmbang_relation的语句如下所示:
CREATE TABLE `lmb_relation` (
`id` int(11) NOT NULL auto_increment COMMENT '关系ID',
`uid` int(11) NOT NULL COMMENT '操作用户ID',
`auid` int(11) NOT NULL COMMENT '被操作用户ID',
`type` tinyint(4) NOT NULL COMMENT '关系类型',
`actiontime` bigint(20) NOT NULL COMMENT '关系建立时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户关系表' AUTO_INCREMENT=570 ;
创建 举报表lmbang_report的语句如下所示:
CREATE TABLE `lmb_report` (
`id` int(11) NOT NULL auto_increment COMMENT '举报ID',
`uid` int(11) NOT NULL COMMENT '举报用户ID',
`type` tinyint(4) NOT NULL COMMENT '举报类型',
`ruid` int(11) NOT NULL COMMENT '被举报用用户ID',
`reporttime` bigint(20) NOT NULL COMMENT '举报时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='举报' AUTO_INCREMENT=30 ;
创建 话题表lmbang_topic的语句如下所示:
CREATE TABLE `lmb_topic` (
`id` int(11) NOT NULL auto_increment COMMENT '话题ID',
`uid` int(11) NOT NULL COMMENT '用户ID',
`bid` int(11) NOT NULL COMMENT '帮ID',
`title` varchar(100) NOT NULL COMMENT '标题',
`content` text NOT NULL COMMENT '内容',
`ccount` int(11) NOT NULL COMMENT '评论数',
`posttime` bigint(20) NOT NULL COMMENT '发表时间',
`lasttime` bigint(20) NOT NULL COMMENT '最新评论时间',
`tagid` int(11) NOT NULL COMMENT '帮标签ID',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='话题表' AUTO_INCREMENT=44 ;
创建 用户表lmbang_user的语句如下所示:
CREATE TABLE `lmb_user` (
`id` int(11) NOT NULL auto_increment COMMENT '用户ID',
`username` varchar(50) NOT NULL COMMENT '用户名',
`nickname` varchar(50) NOT NULL COMMENT '昵称',
`userpwd` varchar(32) NOT NULL COMMENT '密码',
`province` varchar(20) NOT NULL COMMENT '所在省',
`city` varchar(20) NOT NULL COMMENT '所在市',
`babytype` tinyint(2) NOT NULL COMMENT '妈妈类型',
`babysex` tinyint(4) NOT NULL COMMENT '宝宝性别',
`babybirthday` bigint(20) NOT NULL default '0' COMMENT '宝宝生日',
`score` int(11) NOT NULL COMMENT '积分',
`groups` tinyint(4) NOT NULL default '0' COMMENT '用户组',
`headpic` varchar(30) NOT NULL default 'face.png' COMMENT '头像',
`signature` varchar(200) NOT NULL COMMENT '签名',
`regtime` bigint(20) NOT NULL COMMENT '注册时间',
`lasttime` bigint(20) NOT NULL COMMENT '最后进入个人中心时间',
`regip` varchar(20) NOT NULL COMMENT '注册IP',
`lastip` varchar(20) NOT NULL COMMENT '最后登录IP',
`custombg` tinyint(4) NOT NULL default '1' COMMENT '个人空间背景图片编号',
`ccount` int(11) NOT NULL,
`findpwd` varchar(20) NOT NULL COMMENT '找回密码参数',
`isdiary` tinyint(2) NOT NULL default '1' COMMENT '是否公开日记',
`islogin` tinyint(2) NOT NULL default '1' COMMENT '是否禁号',
`ispost` tinyint(2) NOT NULL default '1' COMMENT '是否禁言',
`iscomment` tinyint(2) NOT NULL default '1' COMMENT '是否公开回复',
`issee` tinyint(2) NOT NULL default '1' COMMENT '同城是否可见',
`sinawb` varchar(50) NOT NULL,
`qqwb` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户表' AUTO_INCREMENT=121 ;
创建 用户搜索表lmbang_usersearch的语句如下所示:
CREATE TABLE `lmb_usersearch` (
`id` int(11) NOT NULL auto_increment,
`type` int(11) NOT NULL COMMENT '类型1帮2话题3辣妈',
`keywords` varchar(20) NOT NULL COMMENT '搜索词',
`count` int(11) NOT NULL COMMENT '搜索次数统计',
`posttime` int(11) NOT NULL COMMENT '搜索时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=32 ;
创建 最近访问表lmbang_vist的语句如下所示:
CREATE TABLE `lmb_viste` (
`id` int(11) NOT NULL auto_increment COMMENT '访问ID',
`uid` int(11) NOT NULL COMMENT '访问用户ID',
`vuid` int(11) NOT NULL COMMENT '被访问用户ID',
`vistetime` bigint(20) NOT NULL COMMENT '访问时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='最近访问表' AUTO_INCREMENT=58 ;
创建 网站配置表lmbang_webconfig的语句如下所示:
CREATE TABLE `lmb_webconfig` (
`id` tinyint(4) NOT NULL,
`title` varchar(100) NOT NULL COMMENT '网站标题',
`content` varchar(500) NOT NULL COMMENT '网站描述',
`keywords` varchar(500) NOT NULL COMMENT '关键词',
`logo` varchar(30) NOT NULL COMMENT '网站LOGO',
`description` text NOT NULL COMMENT '网站介绍',
`email` varchar(50) NOT NULL COMMENT '邮箱',
`tel` varchar(15) NOT NULL COMMENT '电话',
`address` varchar(500) NOT NULL COMMENT '地址'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='网站信息';
创建 关键词过滤表lmbang_wordsfilter的语句如下所示:
CREATE TABLE `lmb_wordsfilter` (
`id` int(11) NOT NULL auto_increment COMMENT '过滤ID',
`words` varchar(100) NOT NULL COMMENT '原词',
`rewords` varchar(100) NOT NULL COMMENT '替换词',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='词语过滤' AUTO_INCREMENT=11 ;
5.3 数据表记录的输入
在创建数据表的时候可以根据系统提示直接输入记录,但是也可以暂时
不输入记录。没有记录的数据表叫做空表,可以随时向数据表中追加记录,也
可以向已经存在的记录的数据表追加记录。
本数据库系统采用安全的用户名加口令方式登录。用户名的权限限制为只能进行基本的增删改查数据功能。
6.1 完整性
数据库应用对数据一般都具有一定的限制,这种限制称为完整性。数据库的完整性是保
证数据库正确的关键。广义上说,数据库完整性包括数据库中数据的准确性和一致性。理想
情况下,数据库软件提供了检查数据完整性的各种方法,但遗憾的是,目前大多数关系数据
库系统对数据库的完整性支持并不够充分。
关系数据库系统应该保证输入的值符合其规定的数据类型,并保证值在系统支持的范围内。
不同的关系数据库系统可能提供了不同的数据类型,但所有的关系数据库系统都检查输入的
值,并且拒绝不符合定义的数据类型的值或者不在系统支持范围内的值。例如,不希望将一
个工作人员的生日输入为“1981.11.5”而将另一个工作人员的生日输入为“11/5/1981”。数据必须准确且在数据库中一致存储,这样才能从数据库中检索出正确的数据,才能在数据间作出正确比较。一般来说,关系数据库系统都支持3种完整性:
■ 域约束
■ 实体完整性约束
■ 关联完整性约束
6.2 数据库设计的其他问题
上面介绍了数据库设计的主要部分,这些可以帮助用户设计出基本符合要求的数据库,但是在数据库的设计中还有许多其他的问题需要考虑。
■ 索引是数据库实现的重要组成部分,对于数据的检索、存储等有很大的影响。
关于索引的创建将在第3章创建数据库中介绍。
■ 安全性: 在数据库中安全性是一个非常重要的问题。必须保证数据库数据的安全性,
特别是在Internet迅速发展的今天,有效地保障数据库数据的安全对用户来说是非常重要的。
■ 数据字典: 数据字典用来存储数据库中存储的数据的描述信息和数据库管理系统需要的控制信息,数据字典与数据库管理软件密切相关。
■ 物理数据库设计: 每个数据库管理系统都提供很多种存储结构和存储方法供数据库设计人员选择,物理数据库设计的好坏对数据库的性能有很大的影响。