最开始本来想写一个管理系统,因为考虑到期末来临,我女朋友就可以看着教程然后学一些东西,然后可以自己慢慢手敲代码。但无奈自己也太懒,两个月过后,我才开始继续写这个博客,而现在我都已经开学了。不过博客还是得继续写,有这么大的一个平台,为什么不分享自己的想法,或者说分享自己的一些知识呢。

一、系统需求分析

  下面是之前她发给我的一张图片,也不知道是哪一本书的项目,她说期末作业差不多就是这样了,我搜了一下是有一些写好的项目的,但也不管了,就挨着写好了。这是一个交友信息发布网,暂且就叫它信息发布系统吧,加上交友实在是有点不合适。

  系统采用的是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) 系统数据库设计的更多相关文章

  1. JavaWeb项目学习教程(1) 准备阶段

    写在最前面 为什么要写一个这样的教程?作为一个软件工程专业的学生,上课老师讲得飞快,几乎都是在课后自己消化,我知道学习记录的重要性.我自己本身还有很多很多基础的东西都没有学会,比较博客园的人有很大的差 ...

  2. Java高级项目实战03:CRM系统数据库设计

    接上一篇:Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍 欢迎点击回顾,接下来我们说说 CRM系统数据库设计. 我们根据产品的原型搞以及UI组的设计稿, 接下来就要设计数据库, 一 ...

  3. Oracle数据库设计实例-实时生产效率系统数据库设计

    Oracle数据库设计实例-实时生产效率系统数据库设计 引言 1.1 设计前提 某部门经理要求IT部门设计一个流水线实时生产效率系统,用来统计实时的生产量和效率.流水线有数百条,实时间隔为1min. ...

  4. ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计

    ylbtech-DatabaseDesgin:ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计 DatabaseName:KEFUYUNWEI Model:Admin 用户后台管理 ...

  5. 02-大鸭梨博客系统数据库设计及Dapper的使用

    毫无疑问,数据库的设计在一个系统中起了至关重要的作用.我们都知道,系统设计分为两部分,或者说是两个阶段,即数据库设计和功能设计.构建一个完善的系统需要这两个阶段的充分考量.周密设计.合理联接以及密切配 ...

  6. VB.NET版机房收费系统—数据库设计

    之前第一遍机房收费的时候,用的数据库是别人的.认知也仅仅能建立在别人的基础上,等自考中<数据库系统原理>这本书学完了之后,再去看曾经的数据库,发现数据库真的还须要进一步的优化.以下是我设计 ...

  7. [SQL] 外卖系统数据库设计

    注意: 1.项目需求:小程序外卖系统,以美团,饿了么为参考. 2.表设计没有外键约束,设计是在程序中进行外键约束. 3.希望通过分享该数据库设计,获取大家的建议和讨论. SQL: CREATE DAT ...

  8. MySQL学习07(规范化数据库设计)

    规范化数据库设计 当数据库比较复杂时我们需要设计数据库 糟糕的数据库设计 : 数据冗余,存储空间浪费 数据更新和插入的异常 程序性能差 良好的数据库设计 : 节省数据的存储空间 能够保证数据的完整性 ...

  9. Vue/Egg大型项目开发(二)数据库设计

    项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server) 项目线上预览:http ...

随机推荐

  1. VMware下 CentOS 连接外网问题(笔记)

    虚拟机连接外网有三种模式.桥接.Nat.Host-Only.三者的区别,详见 实例讲解虚拟机3种网络模式(桥接.nat.Host-only) 使用虚拟机连接外网时,一定要充分考虑本地的网络环境!!! ...

  2. Django 通过APNS推送消息

    最近手上一个项目需要通过APNS向app推送消息,由于后端采用drf框架,在github上找了好多模块,最终发现pzanitti大神的推送模块 django-push-notifications 比较 ...

  3. PHP设计模式系列 - 观察者模式

    观察者模式 观察者设计模式能够更便利创建和查看目标对象状态的对象,并且提供和核心对象非耦合的置顶功能性.观察者设计模式非常常用,在一般复杂的WEB系统中,观察者模式可以帮你减轻代码设计的压力,降低代码 ...

  4. PHP设计模式系列 - 外观模式

    外观模式 通过在必需的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了调用对象的复杂性. 外观设计模式和建造者模式非常相似,建造者模式一般是简化对象的调用的复杂性,外观模式一般是简化含有很多逻 ...

  5. Web 通信 之 长连接、长轮询(转)

    Web 通信 之 长连接.长轮询(long polling) 基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强 ...

  6. 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”

    import java.util.ArrayList; import java.util.Scanner; public class Text { @SuppressWarnings("re ...

  7. eclipse异常关闭,无法启动tomcat解决办法

    如果eclipse异常关闭,会出现以下 此时需要关闭javaw.exe即可,重新启动tomcat了. 关闭javaw.exe需要打开任务关闭器,选择详细信息,然后结束javaw.exe即可

  8. Spring实战 MethodInvokingJobDetailFactoryBean使用与分析

    定义一个Job类 public class OffsetsQuartz { public void jobQuartz() { String[] clusterAliass = SystemConfi ...

  9. flex使用学习

    1.指定容器为flex布局 display:flex 行内元素也可以使用Flex布局. display: inline-flex; 注意,设为Flex布局以后,子元素的float.clear和vert ...

  10. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...