首页 > 数据库 >JavaWeb-QQZone项目的业务需求、数据库设计等内容

JavaWeb-QQZone项目的业务需求、数据库设计等内容

时间:2023-03-14 21:22:56浏览次数:50  
标签:范式 JavaWeb 数据库 用户 回复 日志 page QQZone

资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战) ,本人才疏学浅,记录笔记以供日后回顾
由于是多个视频内容混合在一起,因此只放了第一个链接
本文参考价值不高,自我记录罢了
视频链接

业务需求、数据库设计、三大范式、遇到的4个错误

1.熟悉QQZone业务需求
  1) 用户登录
  2) 登录成功,显示主界面。左侧显示好友列表;上端显示欢迎词。如果不是自己的空间,显示超链接:返回自己的空间;下端显示日志列表
  3) 查看日志详情:
        - 日志本身的信息(作者头像、昵称、日志标题、日志内容、日志的日期)
        - 回复列表(回复者的头像、昵称、回复内容、回复日期)
        - 主人回复信息
  4) 删除日志
  5) 删除特定回复
  6) 删除特定主人回复
  7) 添加日志、添加回复、添加主人回复
  8) 点击左侧好友链接,进入好友的空间
2.数据库设计
  1) 抽取实体 : 用户登录信息、用户详情信息 、 日志 、 回贴  、 主人回复
  2) 分析其中的属性:
    - 用户登录信息:账号、密码、头像、昵称
    - 用户详情信息:真实姓名、星座、血型、邮箱、手机号.....
    - 日志:标题、内容、日期、作者
    - 回复:内容、日期、作者、日志
    - 主人回复:内容、日期、作者、回复
  3) 分析实体之间的关系
    - 用户登录信息 : 用户详情信息      1:1 PK
    - 用户 : 日志                   1:N
    - 日志 : 回复                   1:N
    - 回复 : 主人回复                1:1 UK
    - 用户 : 好友                   M : N
3.数据库的范式:
  1) 第一范式:列不可再分
  2) 第二范式:一张表只表达一层含义(只描述一件事情)
  3) 第三范式:表中的每一列和主键都是直接依赖关系,而不是间接依赖
4.数据库设计的范式和数据库的查询性能很多时候是相悖的,我们需要根据实际的业务情况做一个选择:
  - 查询频次不高的情况下,我们更倾向于提高数据库的设计范式,从而提高存储效率
  - 查询频次较高的情形,我们更倾向于牺牲数据库的规范度,降低数据库设计的范式,允许特定的冗余,从而提高查询的性能

5.QQZone登录功能实现出现的四个错误:
 1) URL没修改,用的还是fruitdb
 2)
 3)rsmd.getColumnName() 和 rsmd.getColumnLabel()
 4)Can not set com.atguigu.qqzone.pojo.UserBasic field com.atguigu.qqzone.pojo.Topic.author to java.lang.Integer
 5) left.html页面没有样式,同时数据也不展示,原因是:我们是直接去请求的静态页面资源,那么并没有执行super.processTemplate(),也就是thymeleaf没有起作用
    (之前的表单也是这个原因)
    解决方法:
    - 新增PageController,添加page方法:
    public String page(String page){
        return page ;       // frames/left
    }
    目的是执行super.processTemplate()方法,让thymeleaf生效







QQZone的E-R图

部分代码

PageController

package com.ypf.myssm.myspringmvc;

public class PageController {
    public String page(String page){
        return page ;       // frames/left
    }
}

applicationContext.xml

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE beans [
        <!ELEMENT beans (bean*)>
        <!ELEMENT bean (property*)>
        <!ELEMENT property (#PCDATA)>

        <!ATTLIST bean id ID #REQUIRED>
        <!ATTLIST bean class CDATA #IMPLIED>
        <!ATTLIST property name CDATA #IMPLIED>
        <!ATTLIST property ref IDREF #IMPLIED>
        ]>

<beans>
    <bean id="userBasicDAO" class="com.ypf.qqzone.dao.impl.UserBasicDAOImpl"/>
    <bean id="topicDAO" class="com.ypf.qqzone.dao.impl.TopicDAOImpl"/>

    <bean id="userBasicService" class="com.ypf.qqzone.service.impl.UserBasicServiceImpl">
        <property name="userBasicDAO" ref="userBasicDAO"/>
    </bean>

    <bean id="topicService" class="com.ypf.qqzone.service.impl.TopicServiceImpl">
        <property name="topicDAO" ref="topicDAO"/>
    </bean>

    <bean id="user" class="com.ypf.qqzone.controller.UserController">
        <property name="userBasicService" ref="userBasicService"/>
        <property name="topicService" ref="topicService"/>
    </bean>
    <bean id="page" class="com.ypf.myssm.myspringmvc.PageController"/>

</beans>

标签:范式,JavaWeb,数据库,用户,回复,日志,page,QQZone
From: https://www.cnblogs.com/fgcs111/p/17216447.html

相关文章

  • 创建数据库表
          数据表的类型       ......
  • Mysql数据库未添加索引引发的生产事故
    最近开发的新功能主要是首页的红点提示功能,某个用户登录系统app,然后进入某一个功能模块,在该功能下面有很多地方可以操作,新功能就是根据用户信息查询当月是否存在新的......
  • 12、MySQL数据库配置
    MySQL系统数据库MySQL系统数据库主要包括以下几个:mysql数据库:用于存储MySQL的权限信息和系统变量等,包括user表、db表、host表等,这些表是管理MySQL权限的重要基础......
  • 如何将自定义的日志直接写入到 mysql 数据库中?
    要将自定义的日志直接写入MySQL数据库中,您可以使用以下步骤:安装MySQL数据库,并创建一个新的数据库和表来存储日志数据。在您的代码中,使用MySQL连接器来连接到MySQL数据库。创......
  • DBeaver Ultimate Edtion 23 Multilingual (macOS, Linux, Windows) - 通用数据库工具
    请访问原文链接:https://sysin.org/blog/dbeaver-23/,查看最新版。原创作品,转载请保留出处。作者主页:www.sysin.org通用数据库工具DBeaver是一个通用的数据库管理工具,适......
  • 麒麟V10安装dm8数据库
    1.操作系统银河麒麟V10[root@Kylin-V10-x86-64dm8]#mountdm8_20230104_x86_rh6_64.iso/mnt/mount:/mnt:WARNING:sourcewrite-protected,mountedread-only.[......
  • 交易系统之数据库弱依赖解决方案
    作者:京东科技杜晓玉前言数据库,交易系统中最核心依赖,数据持久化属于最核心服务。随着互联网的普及,大流量高并发的场景越来越多,7*24的交易系统对高可用要求越来越高,同时在“......
  • JDBC 数据库连接
      一套java代码操作多个数据库 ......
  • 6.kettle对整个数据库迁移
    需求: 将mysql数据库中的所有表与数据迁移到Oracle。   技术引导: 实现之初,在kettle提供的例子中找到了一个类似的(samples\jobs\processalltables)。 通过相关改......
  • SQL SERVER PROFILER监听指定数据库
    SQLSERVERPROFILER监听指定数据库SQLServerProfiler监听指定数据库查询数据库IDSQLServerProfiler工具启动监听指定id的数据库 SQLSERVERPROFILER......