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.数据库设计的范式和数据库的查询性能很多时候是相悖的,我们需要根据实际的业务情况做选择。

  • 查询频次不高的情况下,更倾向于提高数据库的设计范式,从而提高存储效率。
  • 查询频次较高的情况下,更倾向于牺牲数据库的规范度,降低数据库设计的范式,允许特定的冗余,从而提高查询的性能。

4.数据库设计的sql语句


SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for t_friend
-- ----------------------------
DROP TABLE IF EXISTS `t_friend`;
CREATE TABLE `t_friend` (`id` int(11) NOT NULL AUTO_INCREMENT,`uid` int(11) DEFAULT NULL,`fid` int(11) DEFAULT NULL,PRIMARY KEY (`id`),KEY `FK_friend_basic_uid` (`uid`),KEY `FK_friend_basic_fid` (`fid`),CONSTRAINT `FK_friend_basic_fid` FOREIGN KEY (`fid`) REFERENCES `t_user_basic` (`id`),CONSTRAINT `FK_friend_basic_uid` FOREIGN KEY (`uid`) REFERENCES `t_user_basic` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for t_host_reply
-- ----------------------------
DROP TABLE IF EXISTS `t_host_reply`;
CREATE TABLE `t_host_reply` (`id` int(11) NOT NULL AUTO_INCREMENT,`content` varchar(500) NOT NULL,`hostReplyDate` datetime NOT NULL,`author` int(11) NOT NULL,`reply` int(11) NOT NULL,PRIMARY KEY (`id`),KEY `FK_host_basic` (`author`),KEY `FK_host_reply` (`reply`),CONSTRAINT `FK_host_basic` FOREIGN KEY (`author`) REFERENCES `t_user_basic` (`id`),CONSTRAINT `FK_host_reply` FOREIGN KEY (`reply`) REFERENCES `t_reply` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for t_reply
-- ----------------------------
DROP TABLE IF EXISTS `t_reply`;
CREATE TABLE `t_reply` (`id` int(11) NOT NULL AUTO_INCREMENT,`content` varchar(500) NOT NULL,`replyDate` datetime NOT NULL,`author` int(11) NOT NULL,`topic` int(11) NOT NULL,PRIMARY KEY (`id`),KEY `FK_reply_basic` (`author`),KEY `FK_reply_topic` (`topic`),CONSTRAINT `FK_reply_basic` FOREIGN KEY (`author`) REFERENCES `t_user_basic` (`id`),CONSTRAINT `FK_reply_topic` FOREIGN KEY (`topic`) REFERENCES `t_topic` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for t_topic
-- ----------------------------
DROP TABLE IF EXISTS `t_topic`;
CREATE TABLE `t_topic` (`id` int(11) NOT NULL AUTO_INCREMENT,`title` varchar(100) NOT NULL,`content` varchar(500) NOT NULL,`topicDate` datetime NOT NULL,`author` int(11) NOT NULL,PRIMARY KEY (`id`),KEY `FK_topic_basic` (`author`),CONSTRAINT `FK_topic_basic` FOREIGN KEY (`author`) REFERENCES `t_user_basic` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for t_user_basic
-- ----------------------------
DROP TABLE IF EXISTS `t_user_basic`;
CREATE TABLE `t_user_basic` (`id` int(11) NOT NULL AUTO_INCREMENT,`loginId` varchar(20) NOT NULL,`nickName` varchar(50) NOT NULL,`pwd` varchar(20) NOT NULL,`headImg` varchar(20) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `loginId` (`loginId`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for t_user_detail
-- ----------------------------
DROP TABLE IF EXISTS `t_user_detail`;
CREATE TABLE `t_user_detail` (`id` int(11) NOT NULL,`realName` varchar(20) DEFAULT NULL,`tel` varchar(11) DEFAULT NULL,`email` varchar(30) DEFAULT NULL,`birth` datetime DEFAULT NULL,`star` varchar(10) DEFAULT NULL,PRIMARY KEY (`id`),CONSTRAINT `FK_detail_basic` FOREIGN KEY (`id`) REFERENCES `t_user_basic` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

基于Javaweb的小项目(类似于qqzone)1——设计数据库相关推荐

  1. 基于Javaweb的小项目(类似于qqzone) 2 ——服务端连接数据库并实现CRUD的通用操作

    1.数据库连接与关闭 服务端使用Druid连接池进行数据库连接,主要分为两步: 1.配置jdbc.properties文件 driverClassName=com.mysql.jdbc.Driver ...

  2. 基于Javaweb的小项目(类似于qqzone) 4 ——通用代码模块 - 过滤器、异常处理、servlet通用代码块

    1.过滤器Filter 对页面传回的内容进过滤,并设置编码,防止出现中文乱码问题 [CharacterEncodingFilter.java] package com.javaweb.qqzone.m ...

  3. 基于Javaweb的小项目(类似于qqzone) 5 ——登录功能实现

    功能描述 用户输入用户名.密码,经过登录验证后,登录成功后能够访问主页面 实体POJO类:UserBasic DAO接口及其实现类:UserBasicDAO UserBasicDAOImpl serv ...

  4. 基于Javaweb的小项目(类似于qqzone) 7 —— 日志相关操作

    功能描述 展示日志详情:点击日志列表中的某个日志标题,可展示该日志的详情信息 -在展示日志详情信息的下面,还要展示其他人对此日志的回复 -若该回复存在主人回复,则也需要显示主人回复 添加日志:点击发表 ...

  5. 基于Javaweb的小项目(类似于qqzone) 8 —— 回复相关操作

    功能描述 展示回复:点击日志列表中的某个日志标题,在展示该日志的详情信息下面,需要展示该日志的相关回复 添加回复:只需要输入回复内容 删除回复:在对应的回复中,鼠标经过该回复,则会出现删除图标,点击可 ...

  6. 今天给大家介绍一篇基于javaWeb的汽车订票系统的设计与实现

    项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...

  7. 基于javaweb+mysql的网上水果超市商城设计和实现(java+ssm+springboot+redis)

    基于javaweb+mysql的网上水果超市商城设计和实现(java+ssm+springboot+redis) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/mye ...

  8. 基于JAVAWeb商铺租赁管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVAWeb商铺租赁管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVAWeb商铺租赁管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S ...

  9. 基于javaweb+mysql的婚纱影楼摄影预约网站设计和实现(javaweb+ssm+springboot)

    基于javaweb+mysql的婚纱影楼摄影预约网站设计和实现(javaweb+ssm+springboot) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myec ...

最新文章

  1. Tomaso A.Poggio教授丨人工智能的下一个突破点在何处?
  2. 虚拟机下Linux安装图解之二:虚拟机的创建
  3. 牛津大学的研究人员首次在人体植入“闭环”生物电子研究系统
  4. 哥伦比亚大学计算机工程面试题
  5. 制作程序化装饰花纹图案_用装饰器设计图案装饰
  6. findler mac 隐藏文件_fiddler使用实例之----------查找隐藏的真实地址!!!!
  7. (27)Verilog HDL循环语句:while
  8. pyTorch api
  9. 哪个相机可以拍gif动图_入门级微单相机哪家强?索尼微单A6400评测来了!
  10. 活动目录OU删除与保护
  11. vs code快捷键修改为idea快捷键
  12. 按键扫描——74HC164驱动(二)
  13. HDU3032 Nim or not Nim?
  14. 一年增加1.2w星,它能否引领中间件的未来?
  15. mysql字符集校对_MySQL字符集与校对
  16. 京东app后台多端融合架构代码重构实战
  17. linux禁止root用户su,Linux 禁止普通用户su到root
  18. 也许是得益于快播案,电子证物的程序正义问题终于有了保障
  19. 五个“时髦”技术被判死刑
  20. HBase查询一张表的数据条数的方法

热门文章

  1. 这个设计思想能启蒙你很多年,嵌入式裸机按键扫描
  2. java中(person类)
  3. 黑苹果OC引导AX201网卡教程,小新Pro13不换网卡也能上网
  4. 软件开发中,站立会议的必要性
  5. (01)ORB-SLAM2源码无死角解析-(62) BA优化(g2o)→追踪线程:Optimizer::PoseOptimization→仅位姿优化
  6. 自己动手编译QGIS 3.18源代码,含出错大全和解决办法
  7. [学习笔记]《零基础做出高逼格PPT》
  8. LTE学习笔记之无线资源管理
  9. 最新小程序转化app的方法神操作
  10. RuntimeError: PytorchStreamReader failed locating file data.pkl: file not found