2.5 数据库设计
视频讲解
开发一个功能完善的网上社区离不开数据库的支持,只有拥有了强大的数据库,网上社区才能够存储大量的数据信息,实现更多、更好的功能来吸引更多的社区成员。本节将对BCTY365网上社区数据库的设计进行详细介绍。
2.5.1 数据库分析
BCTY365网上社区是一个中型的面向软件开发者的程序,考虑到开发的成本、搭配的合理性以及操作的灵活性等,使用了MySQL数据库。从成本考虑MySQL数据库是完全免费的,可以在网上免费下载;从匹配的角度讲,PHP与MySQL数据库一直是公认的最佳搭档;MySQL数据库不但可以在命令模式下进行操作,而且还配备了一些比较流行的图形化管理工具,如phpMyAdmin等,可以轻松地对MySQL数据库中的数据进行操作。
2.5.2 数据库概念设计
图2.15 注册用户实体E-R图
根据上述各节对BCTY365网上社区系统做的需求分析和系统设计,规划出BCTY365网上社区的实体关系E-R图。其中包括注册用户实体、发帖信息实体、回帖信息实体、订单信息实体和编程词典信息实体,其他还有一些辅助的实体,是对上述实体中内容的补充。由于涉及的实体较多,这里只对注册用户实体、发帖信息实体和订单信息实体的E-R图进行介绍。
1.注册用户实体
注册用户实体用于存储用户注册信息,包括编号、用户名、真实姓名、密码、邮箱、性别、电话、QQ号码、家庭地址、访问次数、注册时间、最后一次登录时间、IP地址、邮政编码、用户类型、密码提示问题、密码答案、真实密码、表情图、发帖次数等属性。注册用户实体的E-R图如图2.15所示。
2.发帖信息实体
发帖信息实体用于存储登录本社区的会员在论坛中发布帖子的相关信息,包括编号、用户名ID、帖子类型、帖子标题、帖子内容、发帖时间、最后回复时间、表情图、访问次数、是否顶帖、上传图片等属性。发帖信息实体的E-R图如图2.16所示。
3.订单信息实体
订单信息实体存储用户在线购买时填写的订单信息,包括编号、用户名、性别、家庭地址、邮政编码、QQ号码、邮箱、手机号码、电话号码、收货方式、邮资、产品金额、订单时间、订单号、选择城市等属性。订单信息实体的E-R图如图2.17所示。
图2.16 发帖信息实体E-R图
图2.17 订单信息实体E-R图
2.5.3 创建数据库及数据表
在BCTY365网上社区系统中应用的是db_bcty365数据库,其中涉及18个数据表,数据表的名称和功能如表2.3所示。
表2.3 db_bcty365数据库中的数据表
本案例中创建数据库和数据表使用的是phpMyAdmin图形化管理工具,下面将介绍数据库和数据表的创建方法,以及在创建过程中需要注意的一些问题。
1.数据库的创建
打开phpMyAdmin图形化管理工具的主页,首先在文本框中输入要创建的数据库的名称(如db_bcty365),然后在下拉列表框中选择要使用的字符编码格式,这里使用的是utf8_general_ci,如图2.18所示。最后单击“创建”按钮,数据库创建成功。
技巧
创建数据库的过程中,尽量使用与程序内容贴切的英文字符进行命名,有助于对数据库的理解。如果使用phpStudy配置PHP开发环境,那么在使用phpMyAdmin创建数据库时不需要指定编码的格式,默认值为utf8_general_ci;如果自行配置开发环境,那么就要指定编码格式为utf8_general_ci,否则创建数据库的编码格式为latin1_swedish_ci,将导致数据库中的数据出现乱码。
2.创建数据表
在成功创建数据库以后,接下来就是创建数据表,这里以tb_bb编程词典版本信息表为例,讲解如何创建数据表,以及在创建数据表的过程中都需要注意哪些问题。这里创建一个名为tb_bb的数据表,包括3个字段,如图2.19所示。
图2.18 phpMyAdmin管理界面
图2.19 创建tb_bb数据表
单击“执行”按钮后,进入到如图2.20所示的添加字段信息的页面中,在此处对字段进行详细的设置,包括字段名、数据类型、长度/值、属性、默认值、额外、主键和索引等。
图2.20 添加数据表中字段信息
技巧
创建数据库中的数据表时,字段名的设计尽量要与数据表的内容相符合,这样有助于程序后期维护和修改工作的进行,能够直观地看出数据表的作用。
如果使用phpStudy配置PHP开发环境,那么在创建数据表时不需要指定数据表类型和编码格式;如果使用自行配置的PHP开发环境,那么就要指定数据表的类型为MyISAM和字符的编码格式为utf8_general_ci,否则创建的数据表类型为InnoDB,而编码格式为latin1_swedish_ci,将导致该数据表中的数据复制到其他机器上后不可用,并且数据表中的数据出现乱码。
在创建数据表的过程中,一定要为数据表指定一个主键,它是数据表的唯一标识。
掌握数据表的创建方法后,就可以自行创建数据表。由于本案例中涉及的数据表多达18个,这里不能对每个数据表的功能设计进行一一介绍,所以只给出几个重要的数据表的结构供广大读者参考,其他数据表请参见本书附带的资源包。数据表的设计结构如表2.4~表2.6所示。
(1)tb_user(注册用户信息表)。
注册用户信息表主要用于存储本社区中会员的个人信息。该数据表的结构如表2.4所示。
表2.4 注册用户信息表结构
(2)tb_reply(论坛回帖信息表)。
论坛回帖信息表主要用于存储登录会员在本社区中回复帖子的信息。该数据表的结构如表2.5所示。
表2.5 论坛回帖信息表结构
(3)tb_bccd(编程词典信息表)。
编程词典信息表主要用于存储本社区的在线订购模块中出售的编程词典的基本信息。该数据表的结构如表2.6所示。
表2.6 编程词典信息表结构