(5)图3-5为视图View_users的E-R图。
View_Users Article.username=Users.username 用户 Users 文章 Article
图3-5视图View_user的E-R图
3.4数据库逻辑结构设计
数据库的概念结构设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库逻辑结构。
根据博客的使用情况的不同,可以采用Access 2000数据库,Access 2000便于安装。
博客系统中各个表的设计结果如下面表格所示。每个表格表示在数据库中的一个表,表3-1为用户表,记录用户的详细信息。
表3-1 User用户表 字段名称 数据类型 字段大小 是否主键 默认值 是否必填 UserID Username Password Sex Question Answer Date 自动编号 文本 文本 文本 文本 文本 日期/时间 — 50 50 50 50 50 — 是 否 否 否 否 否 否 — — — — — — — — 否 是 是 是 是 是 备注 用户编号 用户代号 用户密码 用户性别 验证问题 验证问题答案 注册日期 Type表记录文章分类,其字段如表3-2所示
表3-2 Type文章分类表 字段名称 数据类型 字段大小 是否主键 默认值 TypeID 自动编号 — 是 — Username 50 文本 否 — Memo 50 文本 否 — Description 50 文本 否 — 表3-3博客主题表,记录博客的主题信息
是否必填 — 否 是 是 备注 分类编号 用户名称 分类描述 分类名称
表3-3 Title博客主题表 字段名称 数据类型 字段大小 是否主键 默认值 是否必填 备注 GuestID 自动编号 — 是 — — 主题编号 Username 50 文本 否 — 否 用户名称 Description 文本 50 否 — 是 主题名称 LogoSite 50 文本 否 — 是 Logo图表地址 表3-4为访客留言表,记录访客的留言信息。
表3-4 Guest访客留言表 字段名称 数据类型 字段大小 是否主键 默认值 是否必填 备注 GuestID 自动编号 — 是 — — 留言编号 Username 文本 50 否 — 否 博客所有者代号 GuestName 文本 50 否 — 是 留言者姓名 Content 50 备注 否 — 是 留言内容 Date 日期/时间 — 否 — 是 留言日期 表3-5文章评论表,记录文章的所有评论。
表3-5 Comment文章评论表 字段名称 数据类型 字段大小 是否主键 默认值 是否必填 备注 CommentID 自动编号 — 是 — — 评论编号 ContentID 50 文本 否 — 否 文章代号 Person 50 文本 否 — 是 评论者姓名 Description 备注 50 否 — 是 评论内容 Date 日期/时间 — 否 — 是 评论日期 表3-6为文章表,记录用户书写的所有文章。
表3-6 Article文章表 字段名称 数据类型 字段大小 是否主键 默认值 是否必填 备注 ContentID 自动编号 — 是 — — 文章编号 Username 文本 50 否 — 否 用户代号 Title 50 文本 否 — 是 文章标题 TypelD 数字 — 否 — 是 文章类别编号 Description 文本 50 否 — 是 文章描述 Content 备注 — 否 — 是 文章内容 Date 日期/时间 — 否 — 是 书写日期 Click 数字 — 否 — 是 点击数量 表3-7为博客主题表,记录博客的主题和一些个性化设置
表3-7 Affiche公告表 字段名称 数据类型 字段大小 是否主键 默认值 是否必填 备注 AfficheID 自动编号 — 是 — — 公告编号 Username 50 文本 否 — 否 用户名称 Content 50 备注 否 — 是 公告内容
3.5 数据库的完整性和安全性 3.5.1 数据库的完整性约束
数据库的完整性是指数据的正确性和相容性。数据库管理系统(DBMS)用一定的机
制来检查数据库中的数据是否满足规定的条件——完整性约束条件,数据的约束条件是语义的体现,将作为模式的一部分存入数据库中。数据库的完整性约束主要包括以下三方面要求:
(1)实体完整性
实体完整性是指若属性A是基本关系R的主属性,则属性A不能取空值。对于每个表来说,主键都不可以为空。在用户提交信息时,系统会对用户所填写的信息进行验证,对于其中的关键信息没有填写或者数据非法时,系统会提示用户更改后再提交。这样保证了系统实体完整性。
(2)参照完整性
由于表和表之间会存在某些联系,当关系R和关系S之间是一对多关系时(R的主键是A,S的主键是b,c是s中的外码),在插入数据时就要保证外码c的值或者为空或者等于R中某个元组的主码值。在对被参照表进行删除操作时应同时进行及联删除。
(3)用户定义完整性
任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。例如某个属性必须取唯一值、某个属性的取值范围等。
3.5.2 数据库的安全性
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。在数据库系统中,大量的数据集中存放,同时又为许多用户直接共享,是宝贵的信息资源,因此系统的安全保护措施就显得更为重要。键全的数据库安全机制可以防止数据库被恶意的破坏和非法的存取。
本系统的安全设计包括服务器和数据库两方面设计。当用户使用系统时,系统首先会检查用户是否登录,如果用户还没有登录,系统将会弹出警告窗口提醒用户,并将相应的页面跳转至用户登录。在用户提交登录信息后,系统会对用户的身份进行核对,如果在数据库中查找到了相关记录,打开用户页面,表明用户登录成功。对于数据库的安全,主要是通过对授权用户的身份验证实现的。在的系统管理页面,提示用户使用管理员帐号在此登录,没有管理权限的系统注册用户无法登录到数据库管理的后台。系统确认了管理员身份之后统会打开管理页面,系统管理者可在此对整个系统的数据库进行管理和维护。
第四章 系统设计
对博客系统进行系统分析、数据库设计之后,本章将主要介绍系统各功能模块的设计及其实现。
软件所实现的功能强弱是衡量一个软件的最根本的标准。通过对系统的全面分析并结合调研的情况,确定了本系统的功能模块图。本章先从系统总体结构设计介绍,接着分别对公用模块、客户界面、管理对功能模块加以描述。
4.1系统总体设计
本系统数据库采用Access,Web服务器采用IIS,系统结构图如图4-1所示
图4-1 系统结构图
首页 我的文章 我的留言 注册/登录 管理 关于 VBScript Access数据库 根据系统的功能分析可以画出系统的功能结构图,分别从客户界面、管理界面对功能模块图加以描述。客户界面的系统功能模块如图4-2所示。
图4-2 客户界面的模块功能图
管理 关于 首页 我的留言 注册/登录 文章列表 评论 我的文章 文章分类列表 管理界面的功能如图4-3所示。
图4-3 管理界面的功能图 留言管理 基本管理 修改 删除 管理 添加文章 文章管理 修改 删除 添加分类 分类管理 修改 删除 4.2公用模块的编写 4.2.1数据库连接文件
为了操作数据库方便,把连接数据库、查询、更新、插入、关闭连接等数据库操作都写在一个公用文件Conn.asp中,这样其他页面引入这个页面,就可以调用数据库操作方法,操作数据库了,这样便于提高程序的重用性。
4.2.2用户登录和注销
把判定用户登录和注销的程序写在首页Default.asp中。当用户在首爷输入用户名和密码请求登录时,先从数据库查询该用户的用户名和密码是否正确,如果正确则把该用户的用户名和密码,写入用户Cookie,这样其他页面如果需要用户登录才能访问,只需要从Cookie取用户的用户名,如果能取得,则说明用户已经登录,否则用户未登录。当然用Cookie记录用户登录是有风险的,最好用Session记录。注销只需要设置记录用户的Cookie过期就可以了。
4.2.3地址栏和博客主题设置
把博客主题的设置,以及地址栏地址写在一个公用文件Config.asp中。如果用户已经登录则从数据库取出该用户博客主题,并且赋值给一个变量“cfgTitle”,这样其他页面只要包含Config.asp页面,就可以获得“cfgTitle”,获得博客主题。另外如果用户已登录,以后还可以让用户直接在URL地址后面拼上自己的用户名,直接访问,无需在本机在登录。
4.3客户界面的设计与实现
界面模块化,可以提高代码的重用性,能为编程提供很大便利,节省开发时间,提高开发效率
4.3.1 界面头设计
(1)设计思想