知乎后台管理系统:数据库系统原理实验1——数据库基础概念

实验背景

  1. 通过练习绘制语义网络,加深对于基本概念之间关系的理解和掌握。
  2. 掌握在VISIO中绘制能准确表达基本概念之间关系的语义网络的技能。
  3. 了解并比较数据模型的Chen’s表示法和UML表示法。
  4. 理解关系模型设计中的完整性约束的重要性。
  5. 掌握在Linux操作系统下远程访问虚拟机的方法,以及常见的Linux平台控制台命令。
  6. 熟练掌握在数据库服务器上安装、连接、卸载数据库管理系统的过程。
  7. 熟悉在数据库管理系统中建立数据库、创建数据表、插入数据的方法。

实验要求

概念要求

语义网络是用于描述概念间关系的一种工具,请准确掌握如下两组基本概念,并用VISIO画出能准确表达这些概念之间关系的语义网络

(1)数据、数据库、数据模型、数据库管理系统、软件、模型、数据库系统
(2)实体、实体集、属性、实体标识符、实体型、域、联系

概念模型设计要求

  • 请在VISIO中观察数据模型的Chen’s表示法和UML表示法。请从如下现实业务背景任选一个,分别用这两种表示法在VISIO中画出简化的概念模型(10个实体集以内,不必穷尽)。
    • 12306网站余票查询业务模型
    • 航空公司航班查询业务模型
    • 支付宝或微信支付业务模型
    • 银行账户与转账业务模型
    • 微信朋友圈业务模型
    • 微信用户及聊天群聊天业务模型
    • 短视频平台业务模型
    • 知乎等论坛业务模型
    • 互联网点餐业务模型
    • 快餐店点餐业务模型(门店或网络点餐)

注:因本学期所有实验题将围绕上述业务背景之一开展,建议尽早选定一个业务模型,尽早理解与分析业务,圈定你将实现的系统的功能范围(不建议范围过大)。

  • 关系模型设计时经常会涉及完整性约束,数据模型中的完整性约束来源于业务背景中完整性约束要求。请观察并分析第2题中你选定的业务场景中,举出至少3个以上的完整性约束例子

虚拟机安装要求

为每位同学提供教学云平台的两台虚拟机已预装Linux操作系统。请自己寻找或根据虚拟机提供的部分安装包,寻找安装和卸载向导,自学建库、卸载及建表方法,完成如下任务:

  1. 将云平台的两台虚拟机分别当作数据库服务器和Web服务器,掌握通过个人电脑(后续简称终端)远程访问云端虚拟机的方法,掌握Linux平台常见控制台命令。
  2. 在数据库服务器上安装好MySQL数据库管理系统(也可以安装Oracle或SQLServer),安装完毕,连接测试试通,之后卸载数据库,反复若干次,确保熟练掌握这个过程。
  3. 在安装好的数据库管理系统中建立一个数据库,随意建立一些数据表,比如通讯录,往表中手动增加一些信息。
  4. 在终端安装数据库访问可视化工具或控制台工具,以访问数据库中数据。本次实验后续操作建议主要通过控制台命令行完成。
  5. 在Web服务器上安装必要软件使其支持Web访问,尝试通过终端远程登录Web服务器,并能访问数据库服务器中的数据库。

语义网络

数据、数据库、数据模型、数据库管理系统、软件、模型、数据库系统

在这里插入图片描述

实体、实体集、属性、实体标识符、实体型、域、联系

在这里插入图片描述


概念模型

知乎业务概念模型

Chen’s表示法

Version1.0:

实体有:用户、文章、点赞、评论、标签和分区

其中,

  • 用户属性有用户ID、用户名、注册时间
  • 文章属性有文章ID、标题、阅读量、上传时间
  • 点赞属性有点赞ID、点赞时间、用户ID、文章ID
  • 评论属性有评论ID、评论内容、评论时间
  • 标签属性有标签ID、标签名称
  • 分区属性有分区ID、分区描述、分区名称

联系有:

  • 每个用户可以发布多个文章,点1个赞,评论多次,每个文章属于一个用户,每个点赞属于一个用户,每个评论属于一个用户;
  • 一个文章有多个点赞,多个评论,多个标签,属于一个分区;
  • 一个点赞属于一个文章,一个评论属于一个文章,一个标签对应一个文章;
  • 一个分区有多个文章

在这里插入图片描述

Version2.0

优化如下:

  • 点赞数可以简化为文章的一个属性,文章和用户的属性应该更加完善,点赞量、收藏量、粉丝量属于派生属性
  • 对用户进行ISA建模完全特化,用户要么是内容创作者,要么是内容消费者(也可以都是),内容创作者发布文章,内容消费者点赞/收藏/投币文章,投币数表示某个内容消费者给某个文章投币的数量
  • 用户实体之间还有关注联系,用关注ID表示某个用户被某个粉丝关注
  • 评论实体之间还有回复联系,回复ID表示某条评论被某条评论回复
  • 对每个联系进行基数约束:
  • 每个用户可以被0到n个用户关注,也可以关注0到n个用户
  • 用户可以发表0到n条评论,一个文章下有0到n条评论,一个评论唯一对应一个用户,唯一对应一个文章
  • 每条评论可以有0到n条回复,每个回复对应1条评论
  • 内容创作者可以发布0到n个文章,内容消费者可以打赏0到n个文章频
  • 每个文章由1个内容创作者发布,受到0到n个内容消费者点赞/收藏/投币,每个内容创作者可以发布0到n条文章,每个内容消费者可以点赞/收藏0到n个文章,可以投0到n个币
  • 一个文章有0到n个标签,每个标签对应1到n个文章
  • 每个文章属于1到n个分区,每个分区有0到n个文章
  • 标签实体属于弱实体,依赖于文章实体,其联系为弱联系

优化后的ER图如下:

在这里插入图片描述

UML表示法

将ER图转化为UML对象图如下:

在这里插入图片描述

完整性约束例子

  1. 实体完整体:

举例:用户作为实体,他的主码用户ID不能为空值,否则我们将无法识别这一用户。

  1. 参照完整性:

举例:用户和文章都是实体,其中文章的属性“发布者ID”是用户的主码,用户ID是发布关系的外码。因此发布者ID只能取用户ID里面的数值,即我们不能注册一个不是用户的ID成为发布者。

  1. 用户定义的完整性:

举例:用户的粉丝量不能为负数。

数据库安装与实践

远程访问云端虚拟机

首先进入实验云平台,将虚拟机开机,然后绑定外部IP:

在这里插入图片描述

绑定的IP地址如下:

在这里插入图片描述

选择⽹页链接功能,进⼊图形化界⾯操作系统:

在这里插入图片描述

配置DNS使其能够访问外部网络:

在这里插入图片描述

配置完毕后重启服务,在网页输入校园网地址进行验证,能够成功访问:

在这里插入图片描述

然后更新软件源:
在这里插入图片描述

之后便可以安装Mysql:

  1. 在Terminal中输⼊,等待下载安装MySQL-server,过程中需要选择的地⽅都yes:
sudo apt install mysql-server

在这里插入图片描述

  1. 安装后可以登录测试,在Terminal中输⼊(输入后便进入数据库管理系统了):
sudo mysql -u root -p 

在这里插入图片描述

  1. 接下来为远程连接MySQL做准备,⾸先需要赋予root⽤户权限。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 

然后刷新权限:

FLUSH PRIVILEGES; 

在这里插入图片描述

  1. 修改配置⽂件,将localhost绑定去掉,在Terminal中输⼊(此时已退出DBMS):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 

修改内容如下(⽂件其他部分不修改):

#注释掉bind-address这一行 
#bind-address=127.0.0.1 

修改后, ctrl+x退出, y保存,回车确认⽂件名。

在这里插入图片描述

  1. 重启MySQL,在Terminal中输⼊:
service mysql restart

Web服务器(IDEA数据库插件)访问数据库(需先安装IDEA)

通过IDEA的数据库插件进行远程连接访问:

在这里插入图片描述

成功连接:

在这里插入图片描述

创建zhihu数据库,并导入建库脚本(脚本在实验2中):

在这里插入图片描述

此时便完成建库、连接数据库的过程!

Windows下Mysql卸载

第一步,进入…控制面板\程序\程序和功能,卸载下图中的MySQL三个软件。

在这里插入图片描述

第二步,删除上次安装目录的MySQL残留文件,删除数据库data文件夹(由安装路径决定),如下图所示

在这里插入图片描述

第三步,Win+R 输入 regedit 运行,进入注册表编辑器,按下图路径,找到MySQL,进而删除MySQL注册表信息。

在这里插入图片描述

第四步,做完前三步,打开服务,会发现MySQL服务依然存在,如下图所示。这就是导致安装失败的重要原因,所以需要删除MySQL服务。方法:以管理员的权限运行dos命令,然后输入 sc delete MySQL。打开命令框,记得管理员身份运行,输入这行代码然后回车:sc delete MySQL

删除成功,可以重新安装MySQL了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/31282.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超过 37000 台 VMwareESXi 服务器可能受到持续攻击威胁

近日,威胁监测平台影子服务器基金会(The Shadowserver Foundation)发布报告,指出超 3.7 万个互联网暴露的威睿(VMware)ESXi 实例存在严重安全隐患,极易受到 CVE-2025-22224 漏洞的攻击。该漏洞属…

Linux《基础开发工具(中)》

在之前的Linux《基础开发工具(上)》当中已经了解了Linux当中到的两大基础的开发工具yum与vim;了解了在Linux当中如何进行软件的下载以及实现的基本原理、知道了编辑器vim的基本使用方式,那么接下来在本篇当中将接下去继续来了解另…

Vue3 Pinia 符合直觉的Vue.js状态管理库

Pinia 符合直觉的Vue.js状态管理库 什么时候使用Pinia 当两个关系非常远的组件,要传递参数时使用Pinia组件的公共参数使用Pinia

知识库Dify和cherry无法解析影印pdf word解决方案

近期收到大量读者反馈:上传pdf/图文PDF到Dify、Cherry Studio等知识库时,普遍存在格式错乱、图片丢失、表格失效三大痛点。 在试用的几款知识库中除了ragflow具备图片解析的能力外,其他的都只能解析文本。 如果想要解析扫描件&#xff0c…

Webservice创建

Webservice创建 服务端创建 3层架构 service注解(commom模块) serviceimpl(server) 服务端拦截器的编写 客户端拦截器 客户端调用服务端(CXF代理) 客户端调用服务端(动态模式调用&a…

腾讯云低代码开发应用

创建客户端应用 如上所示,登录腾讯云微搭低代码业务控制台,开始搭建企业官网应用 如上所示,在腾讯云微搭低代码业务控制台中,开始创建企业官网应用 如上所示,在腾讯云微搭低代码业务控制台中,开始编辑企业官…

【Java开发指南 | 第三十四篇】IDEA没有Java Enterprise——解决方法

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 1、新建Java项目2、单击项目名,并连续按两次shift键3、在搜索栏搜索"添加框架支持"4、勾选Web应用程序5、最终界面6、添加Tomcat 1、新建Java项目 2、单击项目名,并连续按两次…

深度学习原理与Pytorch实战

深度学习原理与Pytorch实战 第2版 强化学习人工智能神经网络书籍 python动手学深度学习框架书 TransformerBERT图神经网络: 技术讲解 编辑推荐 1.基于PyTorch新版本,涵盖深度学习基础知识和前沿技术,由浅入深,通俗易懂&#xf…

uniapp项目运行失败Error: getaddrinfo *.bspapp.com 文件查找失败uview-ui及推荐MarkDown软件 Typora

一、uniapp项目运行失败Error: getaddrinfo *.bspapp.com 文件查找失败uview-ui 在运行一个uniapp项目时,出现报错 文件查找失败:uview-ui,Error: getaddrinfo ENOTFOUND 960c0a.bspapp.com。hostname异常,报错的详细信息如下&…

什么是vue的keep-alive?它是如何实现的?具体缓存了什么内容?

文章目录 一、keep-alive 的核心作用二、实现原理1. 缓存管理策略2. 核心源码解析(Vue 2.x 简化版)3. 缓存生命周期 三、缓存的具体内容1. 缓存对象结构2. 具体缓存内容 四、使用示例1. 基础用法2. 配置缓存策略 五、注意事项六、实现流程图解 Vue 的 k…

pytest基础知识

pytest知识了解 pytest的基础知识了解:Python测试框架之pytest详解_lovedingd的博客-CSDN博客_pytest框架 (包含设置断点,pdb,获取最慢的10个用例的执行耗时) pytest-pytest.main()运行测试用例,pytest参数: pytest-…

Liunx(CentOS-6-x86_64)使用Nginx部署Vue项目

一:编译vue项目和上传到linux系统 通过本地编译器编译后的文件 上传服务器后的 二:安装 node(版本 v16.20.2)和npm( 8.19.4或 9.6.5) 备注一:安装nodejs就是安装node和npm, su…

分布式锁—Redisson的同步器组件

1.Redisson的分布式锁简单总结 Redisson分布式锁包括:可重入锁、公平锁、联锁、红锁、读写锁。 (1)可重入锁RedissonLock 非公平锁,最基础的分布式锁,最常用的锁。 (2)公平锁RedissonFairLock 各个客户端尝试获取锁时会排队,按照队…

2025年渗透测试面试题总结-字某某动-安全研究实习生(一面)(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 字某某动-安全研究实习生(一面) 一、岗位认知与方向选择 1. 对公司业务的理解 …

Dify平台部署记录

安装dify项目 官网地址:http://difyai.com/ github地址:https://github.com/langgenius/dify 下载项目: git clone https://github.com/langgenius/dify.git下载过慢,直接访问网页下载zip压缩包: 解压,…

串口数据记录仪DIY,体积小,全开源

作用 产品到客户现场出现异常情况,这个时候就需要一个日志记录仪、黑匣子,可以记录产品的工作情况,当出现异常时,可以搜集到上下文的数据,从而判断问题原因。 之前从网上买过,但是出现过丢数据的情况耽误…

如何用HTML5 Canvas实现电子签名功能✍️

🤖 作者简介:水煮白菜王,一位资深前端劝退师 👻 👀 文章专栏: 前端专栏 ,记录一下平时在博客写作中,总结出的一些开发技巧和知识归纳总结✍。 感谢支持💕💕&a…

Uniapp项目运行到微信小程序、H5、APP等多个平台教程

摘要:Uniapp作为一款基于Vue.js的跨平台开发框架,支持“一次开发,多端部署”。本文将手把手教你如何将Uniapp项目运行到微信小程序、H5、APP等多个平台,并解析常见问题。 一、环境准备 在开始前,请确保已安装以下工具…

Python设计模式 - 建造者模式

定义 建造者模式是一种创建型设计模式,主要用于构建包含多个组成部分的复杂对象。它将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的对象表示。 结构 抽象建造者(Builder):声明创建产品的各个部件的方…

音乐API

https://neteasecloudmusicapi.vercel.app/docs/#/https://neteasecloudmusicapi.vercel.app/docs/#/ 使用实例 所有榜单内容摘要 说明 : 调用此接口,可获取所有榜单内容摘要 接口地址 : /toplist/detail 调用例子 : /toplist/detail 获取歌单所有歌曲 说明 : 由于网易云…