图5-12 添加好友成功
5.2 数据库设计
1、数据库需求分析
根据即时聊天系统的功能模块分析可知,一个最最简单的聊天系统至少应该包括一张用户基本档案的数据表。由于本系统功能设计理念较为简单,因此只包含了两张数据表:用户表(users)和消息表(msg)。用户表用于存储用户信息,消息表用于存储用户的离线聊天消息,因此本系统需要的数据源包括用户信息、离线聊天消息。 2、概要设计
根据数据库的需求分析设计规划出的数据实体有:账户实体、用户信息实体、离线消息实体。每一个实体都是现实中实际存在的对象的抽象,并存在一定的数据关系。下面给出本系统的总体E-R图和数据库中各信息实体的E-R图。
31
系统总体E-R模型
图5-13 系统总体E-R图
用户的基本信息E-R模型:用户(用户ID,用户名,用户密码,用户IP地址,用户状态,用户性别,用户邮箱,用户最近一次登录日期,用户上一次退出日期,用户头像,用户生日)
图5-14 用户基本信息E-R图
32
聊天消息的E-R模型:消息(消息ID,消息类型,消息内容,消息发送者,消息发送时间,消息接收者)
图5-15 聊天消息E-R图
3、逻辑设计
本系统的数据库包含了两张表,分别为用户信息表、聊天消息表。下面简要介绍这两个表的设计。
(1)用户信息表: 该表中记录了本系统所有注册用户的用户名及其密码,以及其它一些个人信息。用户可以在客户端登录窗口通过输入用户名和匹配的密码登录,用户信息中只要有两者之一与该表内容不符便无法登录,系统会给出出错提示。 该表的设计如下:
表5-1 用户信息表
字段名 U_ID U_NAME U_PWD U_IP U_STATE U_GENDER U_EMAIL U_LAST_LOGIN U_LAST_EXIT U_HEAD_IMG U_BIRTHDAY
数据类型 NUMBER VARCHAR2(50) VARCHAR2(50) VARCHAR2(50) VARCHAR2(50) VARCHAR2(50) VARCHAR2(50) DATE DATE VARCHAR2(100) DATE 33
是否为主键 是 否 否 否 否 否 否 否 否 否 否
(2)聊天消息表:记录了用户发送给离线好友的消息,管理员可以查看。包括发送者、接受者和消息产生的时间等。
表5-2 聊天消息表
字段名 MSG_ID MSG_CONTENT MSG_SENDFROM MSG_SENDTO MSG_TYPE MSG_SENDTIME 数据类型 NUMBER VARCHAR2(2000) INTEGER INTEGER VARCHAR(2) DATE 是否为主键 是 否 否 否 否 否 4、物理设计
数据库最终要存储于存储设备上,将一个给定逻辑结构实施到具体的环境中时,逻辑数据模型要选取一个具体的工作环境,这个工作环境提供了数据存储结构与存取方法。
(1)USERS表
图5-16 USERS表
创建USERS表格 create table USERS (
u_id INTEGER not null, u_name VARCHAR2(50) not null, u_pwd VARCHAR2(50) not null, u_ip VARCHAR2(50), u_state VARCHAR2(50), u_gender VARCHAR2(50),
34
u_email VARCHAR2(50), u_last_login DATE, u_last_exit DATE,
u_remarke VARCHAR2(3000), u_signature VARCHAR2(100), u_head_img VARCHAR2(100), u_type VARCHAR2(50), u_birthday DATE )
tablespace SYSTEM pctfree 10 pctused 40 initrans 1 maxtrans 255 storage (
initial 64K next 1M minextents 1
maxextents unlimited );
-- Create/Recreate primary, unique and foreign key constraints alter table USERS
add constraint PK_USERS primary key (U_ID) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage (
initial 64K next 1M minextents 1
maxextents unlimited
);
(2)MSG表
35