JavaWeb项目学习教程(2) 系统数据库设计
最开始本来想写一个管理系统,因为考虑到期末来临,我女朋友就可以看着教程然后学一些东西,然后可以自己慢慢手敲代码。但无奈自己也太懒,两个月过后,我才开始继续写这个博客,而现在我都已经开学了。不过博客还是得继续写,有这么大的一个平台,为什么不分享自己的想法,或者说分享自己的一些知识呢。
一、系统需求分析
下面是之前她发给我的一张图片,也不知道是哪一本书的项目,她说期末作业差不多就是这样了,我搜了一下是有一些写好的项目的,但也不管了,就挨着写好了。这是一个交友信息发布网,暂且就叫它信息发布系统吧,加上交友实在是有点不合适。

系统采用的是MVC模式,数据库这些东西都适合初学者。照片上传是有一些东西,但其他模块都很简单,我们一个一个分析。
1.会员注册
新会员填写表单,包括会员名、E-mail地址等信息,如果输入的会员名以及被其他用户注册使用,系统提示新用户更改自己的会员名。
2.会员登录
输入会员名,密码。如果用户输入的会员名或密码有错误,系统将显示错误信息。
3.上传照片
如果登录成功,用户可以使用该模块上传自己的照片。
4.浏览会员
成功登录的会员可以分页浏览其他会员的信息,比如其他会员的简历、照片等。如果用户直接进入该页面或没有成功登录就进入该页面,将被转到“会员登陆”页面。
5.修改密码
成功登录的会员可以在该页面修改自己的登录密码。如果用户直接进入该页面或没有成功登录就进入该页面,将被转到“会员登录”页面。
6.修改注册信息
成功登录的会员可以在该页面修改自己的注册信息,比如联系电话、通讯地址等。如果用户直接进入该页面或没有成功登录就进入该页面,将被转到“会员登录”页面。
7.退出登录
成功登录的用户可以使用该模块退出登录。
二、数据库设计
浏览整个系统,上面就是系统的每一个需求了。梳理整个流程,从最开始用户进入登录界面,用户可以选择注册,已经有账号的用户可以选择直接登录。登录后,自动跳转到浏览界面,可以点进会员进行查看,也可以对自己的个人资料进行修改。当想上传自己的照片时,可以点击上传对自己的照片进行上传,上传后其他会员可以浏览到你的资料。当然也可以修改自己的密码,浏览结束点击退出登录。(我觉得管理员应该审核审核系统的照片...)
当梳理完这些需求之后,我们就可以开始设计数据库了。在11.2中已经写出了一个表。但不必看嗷,我们只需要设计自己的就可以了。(没有那本书)
用户表(user)
- user_id(用户id,自增长主键)
- role_id(角色id,不同角色)
- user_name(用户名,登录用)
- password(密码,未加密)
- telephone(电话号码,可登陆)
- status(用户状态,0:锁定;1:正常等)
用户信息表(user_info) PS:对于设置性别和出生日期的处理可能比较麻烦,因此我举例列出
- user_id(用户编号,关联用户表)
- nickname(昵称,可设置)
- sex(性别,0:女 ;1:男)
- personal_sign(签名)
- face_url(头像url,上传图片后设置)
- birthday(出生日期)
- address(居住地址)
- regist_time(最后登录时间)
角色表(role)
- role_id(角色id,自增)
- role_name(角色名)
图片表(picture)
- pic_id(图片id,自增)
- user_id(上传人,关联用户表)
- pic_name(图片名,存入服务器的重命名)
- pic_path(图片路径,服务器中的路径)
- pic_describe(图片描述)
- pic_type(图片类型,头像或者展示图片)
- upload_time(上传时间)
以上这几个表,接下来要在mysql中创建,当然除了使用sql语句创建,也可以直接使用navicate进行建表。
三、创建数据库
1.打开navicat首先进入localhost本地连接,右键→新建数据库

2.将数据库命名为pss,选择字符集utf-8以及排序规则。pss的意思是图片分享系统

3.双击pss打开数据库,点击新建表,右侧出现建表的窗口

4.根据上述我们所分析的表的内容进行填写,user表如下。要注意的是,在设置id唯一标识的时候要点击下面的自动递增,最好将注释也写上。所有的填写完之后,点击保存或者ctrl+s,命名表为user即可

5.用户信息表user_info。这里的user_id从user表中获取,所以不需要自增。在用户注册登录后,可以点进个人信息完善资料。

6.角色表role

7.图片表picture

所有的表创建完毕后,下一次就开始创建项目与写代码了。数据库的设计其实都是依据个人的想法来设计的,可能我在读需求的时候已经想了自己希望的系统是什么样。当然一个完整且正式的项目一定不会这么快开始,其中还要进行其他的一些模型设计,概念模型、用例图等等,也要不断和客户进行讨论和需求分析,还要团队进行讨论和修改,画mockup和原型等等。所以,这个仅仅还是如何写,怎么写好更多的还是自己的学习。当然作为初学者的小作业,这已经足够了。
JavaWeb项目学习教程(2) 系统数据库设计的更多相关文章
- JavaWeb项目学习教程(1) 准备阶段
写在最前面 为什么要写一个这样的教程?作为一个软件工程专业的学生,上课老师讲得飞快,几乎都是在课后自己消化,我知道学习记录的重要性.我自己本身还有很多很多基础的东西都没有学会,比较博客园的人有很大的差 ...
- Java高级项目实战03:CRM系统数据库设计
接上一篇:Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍 欢迎点击回顾,接下来我们说说 CRM系统数据库设计. 我们根据产品的原型搞以及UI组的设计稿, 接下来就要设计数据库, 一 ...
- Oracle数据库设计实例-实时生产效率系统数据库设计
Oracle数据库设计实例-实时生产效率系统数据库设计 引言 1.1 设计前提 某部门经理要求IT部门设计一个流水线实时生产效率系统,用来统计实时的生产量和效率.流水线有数百条,实时间隔为1min. ...
- ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计
ylbtech-DatabaseDesgin:ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计 DatabaseName:KEFUYUNWEI Model:Admin 用户后台管理 ...
- 02-大鸭梨博客系统数据库设计及Dapper的使用
毫无疑问,数据库的设计在一个系统中起了至关重要的作用.我们都知道,系统设计分为两部分,或者说是两个阶段,即数据库设计和功能设计.构建一个完善的系统需要这两个阶段的充分考量.周密设计.合理联接以及密切配 ...
- VB.NET版机房收费系统—数据库设计
之前第一遍机房收费的时候,用的数据库是别人的.认知也仅仅能建立在别人的基础上,等自考中<数据库系统原理>这本书学完了之后,再去看曾经的数据库,发现数据库真的还须要进一步的优化.以下是我设计 ...
- [SQL] 外卖系统数据库设计
注意: 1.项目需求:小程序外卖系统,以美团,饿了么为参考. 2.表设计没有外键约束,设计是在程序中进行外键约束. 3.希望通过分享该数据库设计,获取大家的建议和讨论. SQL: CREATE DAT ...
- MySQL学习07(规范化数据库设计)
规范化数据库设计 当数据库比较复杂时我们需要设计数据库 糟糕的数据库设计 : 数据冗余,存储空间浪费 数据更新和插入的异常 程序性能差 良好的数据库设计 : 节省数据的存储空间 能够保证数据的完整性 ...
- Vue/Egg大型项目开发(二)数据库设计
项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server) 项目线上预览:http ...
随机推荐
- November 19th 2016 Week 47th Saturday
Nature didn't need an operation to be beautiful. It just was. 自然之美无需刻意而为,其本身即为美. Recently I saw seve ...
- python3 80行代码实现贪吃蛇
上面是实现的截图,废话不说,直接开始说一下代码 pos = { 'UP': (-1,0), 'DOWN':(+1,0), 'LEFT':(0,-1), 'RIGHT':(0,+1), } curren ...
- php 访问控制和重载
一 php 类中定义的private/protected属性,类外部是无法访问的,但是 我们可以通过public方法来访问设置这些属性 如下 <?php class test{ priv ...
- 【转】Json判断是否存在某个属性和遍历各个属性和值
var field='uid'; var jsonObj={uid:'001'}; 一. jsonObj[field] != undefined //注意:如果field值正好是undefined那就 ...
- eclipse导入maven工程missing artifact(实际是存在的)错误解决
找到出错的jar包文件位置,删掉_maven.repositories文件(或用文本编辑器打开,将“>main=”改为“>=”,即删除main,当然main也可能是其他值),然后updat ...
- 使用 CSS 根据兄弟元素的个数来调整样式
在某些场景下,我们需要根据兄弟元素的总数来为它们设置样式.最常见的场景就是,当一个列表不断延长时,通过隐藏控件或压缩控件等方式来节省屏幕空间,以此提升用户体验. 为保证一屏内容能展示更多的内容,需要将 ...
- python第十一课——转换结构
3.转换函数:int():float():str():list():tuple():set():dict():bool(): 案例: #演示各个转换函数的使用: 数值型-->字符型使用:str( ...
- 20165318 2017-2018-2 《Java程序设计》第二周学习总结
20165318 2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周学习了第二章和第三章的内容,掌握了Java中基本数据类型.数组.运算符.表达式和语句等方 ...
- BZOJ4522:[CQOI2016]密钥破解(Pollard-Rho,exgcd)
Description 一种非对称加密算法的密钥生成过程如下: 1. 任选两个不同的质数 p ,q 2. 计算 N=pq , r=(p-1)(q-1) 3. 选取小于r ,且与 r 互质的整数 e ...
- 1864. [ZJOI2006]三色二叉树【树形DP】
Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample ...