移动APP管理用户信息系统数据库设计
一、需求分析:
目前,各类网络应用迅速向基于移动互联网的以智能手机为代表的智能移动终端迁移。由于使用场景与网络环境的变化,各类移动APP的研发发生了较大的变化。请以常用移动APP开发为背景,设计一个APP的管理用户基本信息的数据库,同时要考虑到用户权限管理的设计,要求如下:
1)用户需要分角色管理,如管理员、区域管理、会员、普通用户等角色;
2)用户信息包括用户基本信息和用户登录信息。
用户基本信息包括姓名、性别、出生日期、所在城市、身份信息(身份证、护照等)、联系信息(手机、E_mail、微信、QQ)等;
登录类型
用户注册支持手机号验证码、账户、微信、QQ、微博注册;
用户登录支持手机号码、账户、微信、QQ、微博登录;
用户注册信息包括登录名、密码、注册日期、注册地址、注册IP、注册MAC地址、注册终端类型(手机、PC等)、注册操作系统、是否在线等信息;
登录信息
用户每次登录时,还需要保存登录地址、登录日期、退出日期、登录IP、登录MAC、登录类型(账户、微信、QQ、微博等)、登录终端类型(手机、PC等)、登录操作系统、,如果手机登录,还需要记录手机型号、手机操作系统版本等信息;
- 每个用户可以同时拥有多个角色,每个角色可以拥有多个用户。
二、概念模型设计
实体E-R图
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,如下:
移动APP用户管理系统有用户类别实体,角色实体,用户登录信息实体,用户注册信息实体,
1.用户实体与角色实体的部分E-R图
2.用户登录信息的局部E-R图
3.用户注册信息的局部E-R图
4.简略总体E-R图(去除属性)
三、逻辑模型设计
将概念模型转换为关系模式
用户(用户id,姓名,性别,出生日期,所在城市,身份id,联系id,角色id)
身份信息(身份id,身份证,护照)
联系信息(联系id,手机,E-mail,微信,QQ)
角色(角色id,角色类别,用户id)
用户注册信息(用户名,密码,注册日期,注册地址,注册ip,注册MAC地址,注册操作系统,是否在线, 注册终端类型id,注册类型id)
注册终端类型(注册终端类型id,注册终端类型名)
用户登录信息(用户名,登录地址,登录日期,退出日期,登录ip,登录MAC地址,登录操作系统,登录终端类型id,登录类型id)
登录终端类型(登录终端类型id,登录终端类型名)
登录类型(登录类型id,账户,微信号,QQ号,微博号)
注册类型(注册类型id,账户,微信号,QQ号,微博号)
拥有(用户id,角色id,角色类别)
四、物理模型设计
将关系模式转换为具体的数据库结构
用户表
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
user_id |
用户id |
int |
PK |
|
不能为空 |
user_name |
姓名 |
Varchar |
|
|
不能为空 |
user_sex |
性别 |
Varchar(2) |
|
|
不能为空 |
date |
出生日期 |
Varchar |
|
|
不能为空 |
city |
所在城市 |
Varchar |
|
|
不能为空 |
identity |
身份id |
int |
|
FK |
不能为空 |
contact |
联系id |
int |
|
FK |
不能为空 |
role |
角色id |
int |
|
FK |
不能为空 |
身份信息表
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
identity |
身份id |
Int |
PK |
|
不能为空 |
identityCard |
身份证 |
Varchar |
|
|
不能为空 |
passport |
护照 |
Varchar |
|
|
不能为空 |
联系信息表
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
contact |
联系id |
int |
|
|
不能为空 |
moblieNum |
手机 |
int |
|
|
不能为空 |
|
|
varchar |
|
|
不能为空 |
|
微信 |
varchar |
|
|
不能为空 |
qqNum |
|
int |
|
|
不能为空 |
角色表
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
role |
角色id |
int |
PK |
|
不能为空 |
role_type |
角色类别 |
varchar |
|
|
不能为空 |
user_id |
用户id |
int |
|
Fk |
不能为空 |
用户注册信息表
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
username |
用户名 |
varchar |
PK |
|
不能为空 |
password |
密码 |
varchar |
|
|
不能为空 |
registerTime |
注册日期 |
datetime |
|
|
不能为空 |
registerInterdress |
注册地址 |
varchar |
|
|
不能为空 |
registerIp |
注册ip |
varchar |
|
|
不能为空 |
registerMac |
注册MAC地址 |
varchar |
|
|
不能为空 |
registerOS |
注册操作系统 |
varchar |
|
|
不能为空 |
online |
是否在线 |
varchar |
|
|
不能为空 |
systemTypeid |
注册终端类型id |
Int |
|
FK |
不能为空 |
registerTypeid |
注册类型id |
int |
|
FK |
不能为空 |
用户登录信息表
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
username |
用户名 |
varchar |
PK |
|
不能为空 |
LoginTime |
登录日期 |
datetime |
|
|
不能为空 |
LoginInterdress |
登录地址 |
varchar |
|
|
不能为空 |
loginIp |
登录ip |
varchar |
|
|
不能为空 |
loginMac |
注册MAC地址 |
varchar |
|
|
不能为空 |
loginOS |
注册操作系统 |
varchar |
|
|
不能为空 |
systemTypeId |
登录终端类型id |
varchar |
|
FK |
不能为空 |
logintypeid |
登录类型id |
Int |
|
FK |
不能为空 |
登录终端类型
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
systemTypeId |
终端类型id |
int |
PK |
|
不能为空 |
systemTypeName |
终端类型名 |
varchar |
|
|
不能为空 |
登录类型
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
logintypeid |
登录类型id |
int |
PK |
|
不能为空 |
account |
账户 |
varchar |
|
|
不能为空 |
QQnum |
QQ号 |
int |
|
|
不能为空 |
wechatnum |
微信号 |
varchar |
|
|
不能为空 |
weibonum |
微博号 |
varchar |
|
|
不能为空 |
注册类型
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
registerTypeid |
注册类型id |
int |
PK |
|
不能为空 |
account |
账户 |
varchar |
|
|
不能为空 |
QQnum |
QQ号 |
int |
|
|
不能为空 |
wechatnum |
微信号 |
varchar |
|
|
不能为空 |
weibonum |
微博号 |
varchar |
|
|
不能为空 |
拥有
字段名 |
中文名 |
数据类型 |
主键 |
外键 |
说明 |
user_id |
用户id |
int |
PK |
FK |
不能为空 |
role_id |
角色id |
int |
PK |
FK |
不能为空 |
roletype |
角色类型 |
varchar |
|
|
不能为空 |
心得体会
这次数据库设计使我熟悉了数据库系统设计的整体步骤。数据库系统设计大体可分为需求分析、概念设计、逻辑设计、物理设计、数据库的实施及调试测试六大步骤。其中,让我感触最深的是需求分析阶段,在这个阶段,必须对所要设计的系统有总体的构思和了解,知道自己要做什么,要实现什么,并且要实际的进行相关的调查,不能凭想象或自己的了解,这样会在后续的工作中遇到很多的问题。
好了,关于此次数据库设计就说到这里了,如有不足之处,欢迎指正!
感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。
- 点赞
- 收藏
- 关注作者
评论(0)