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

一、系统需求分析

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

  系统采用的是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. list(range())--------range创建一个list列表 遍历索引range(len()) 和 list(range())创建列表

    lst = list(range(15,26)) #注,list(range())用的是小括号哦print(lst)

  2. Mysql 安装服务无法启动解决方案与使用的一般使用指令

    问题描述: 在安装mysql 时,如果第一次没安装成功,第二次重装可能出现莫名奇妙的情况.通过一番尝试,发现,安装往上的教程还是无法成功安装的主要原因是第一次安装虽然未成功,但是mysql 默认的33 ...

  3. Programming Assignment 2: Deques and Randomized Queues

    编程作业二 作业链接:Deques and Randomized Queues & Checklist 我的代码:Deque.java & RandomizedQueue.java & ...

  4. 【错误记录】flask mysql 死锁

    最近使用flask-sqlalchemy时,进行测试的时候发现日志中打印出了MySql死锁错误,查看Mysql日志发现是因为有俩条sql出现了死锁: Deadlock found when tryin ...

  5. Guava包学习--Hash

    我们HashMap会有一个rehash的过程,为什么呢?因为java内建的散列码被限制为32位,而且没有分离散列算法和所作用的数据,所以替代算法比较难做.我们使用HashMap的时候它自身有一个reh ...

  6. 在linux中禁用一块硬盘

    笔记本采用固态加机械的硬盘组合使用中完全用不到机械部分 但它总是在启动后运行并发出响声 1 启动后的禁用 无需重启 (sdx是你的磁盘  udev的更新可能会导致磁盘重新出现 在向系统添加/删除磁盘也 ...

  7. [原创]关于在VS解决方案下使用文件夹管理多个项目层次关系的说明

    由于所创建的应用项目或类库项目较多,于是将这些类库放到一个文件夹下.在VS解决方案下确实能看到一个文件夹下多个类库项目这种层次关系.如下图所示: 但打开“我的电脑”,看到的只有类库,并未看到维护层次关 ...

  8. ubuntu下boot分区空间不足问题的解决方案

    https://blog.csdn.net/along_oneday/article/details/75148240 先查看当前内核版本号(防止误删) uname –r 查看已经安装过的内核 dpk ...

  9. C++反汇编代码分析–函数调用

    转载:http://shitouer.cn/2010/06/method-called/ 代码如下:#include “stdlib.h” int sum(int a,int b,int m,int ...

  10. 用javascript制作2048游戏的思路(原创若 转载请附上本链接)

    一.项目已上传至github,地址:https://github.com/forjuan/2048game 二.学习了javascript基础后,想要捣鼓点东西做,做了一个自己以前很爱玩的2048游戏 ...