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

news2025/4/22 0:01:58

实验背景

  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数据库,并导入建库脚本(脚本在实验3中):

在这里插入图片描述

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

Windows下Mysql卸载

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

sc delete MySQL

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

Windows下安装MySQL

首先在官网下载最新版本的MySQL Installer的msi文件(容易配置):

在这里插入图片描述

这里让我们登账号,忽略,直接下载

在这里插入图片描述

双击安装包开始安装

在这里插入图片描述
我们选择自定义安装, 因为有些应用我们可能用不到:

在这里插入图片描述

选择要安装的服务, 并点击箭头 将其添加到右边

在这里插入图片描述
通过以下选项修改安装路径

在这里插入图片描述

改成想要保存的路径
在这里插入图片描述
在这里插入图片描述
点击 execute
在这里插入图片描述
接下来开始配置,第一步和第二步配置默认不改
在这里插入图片描述
在这里插入图片描述

设置密码
在这里插入图片描述
这里可以改成MySQL, 在启动服务的时候方便些:
在这里插入图片描述
选最后一个,继续
在这里插入图片描述

接着继续安装
在这里插入图片描述

安装完成,点FINISH
在这里插入图片描述
然后进行环境变量配置(在环境变量中添加以下路径)
在这里插入图片描述
验证安装
在这里插入图片描述

再输入密码,成功进入
在这里插入图片描述

创建数据库

我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:

CREATE DATABASE [IF NOT EXISTS] database_name
  [CHARACTER SET charset_name]
  [COLLATE collation_name];

在这里插入图片描述

创建数据库,该命令的作用:

  1. 如果数据库不存在则创建,存在则不创建。
  2. 创建mydatabase数据库,并设定编码集为utf8及其排序规则

在这里插入图片描述

删除数据库

在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失,格式如下:

DROP DATABASE <database_name>;        -- 直接删除数据库,不检查是否存在

DROP DATABASE [IF EXISTS] <database_name>;

在这里插入图片描述

选择数据库

在连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以需要选择要操作的数据库,语法如下:

USE database_name;

在这里插入图片描述

5.8创建数据表
创建 MySQL 数据表需要以下信息:

  • 表名
  • 表字段名
  • 定义每个表字段的数据类型

语法如下:

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
);

在这里插入图片描述

实例解析:

  • id: 用户 id,整数类型,自增长,作为主键
  • username: 用户名,变长字符串,不允许为空
  • email: 用户邮箱,变长字符串,不允许为空
  • birthdate: 用户的生日,日期类型
  • is_active: 用户是否已经激活,布尔类型,默认值为 true

删除数据表

以下为删除 MySQL 数据表的通用语法:

DROP TABLE table_name ;    -- 直接删除表,不检查是否存在

DROP TABLE [IF EXISTS] table_name;

在这里插入图片描述

插入数据

以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

在这里插入图片描述

查询数据

以下为在 MySQL 数据库中查询数据通用的 SELECT 语法:

SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];

在这里插入图片描述

更新数据

以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

在这里插入图片描述

删除数据

以下是 DELETE 语句从 MySQL 数据表中删除数据的通用语法:

DELETE FROM table_name
WHERE condition;

在这里插入图片描述


实验感悟

在本次实验中,通过学习语义网络和概念模型,我深刻理解了数据库设计的重要性。概念模型的建立不仅仅是对现实世界的抽象,更是对数据之间关系的逻辑化表示,是数据库设计的基石。特别是在Chen’s表示法和UML表示法中,对实体、属性、联系等的具体表达方式让我有了更清晰的认识,对数据库设计有了更加系统的思考。

在数据库安装与实践环节,我通过实际操作了解了MySQL数据库的安装、配置以及基本的操作命令。特别是在卸载MySQL的过程中,我注意到了删除残留文件、注册表信息以及服务的重要性,这些步骤在安装过程中常常容易被忽视,但却是保证软件安装顺利进行的关键。

此外,通过实际操作数据库的过程,我深刻体会到了数据库的强大功能和灵活性。从创建数据库、数据表,到插入、查询、更新和删除数据,每一个步骤都是数据库管理的重要组成部分。尤其是在制定完整性约束的过程中,我意识到了数据的安全性和一致性对数据库管理的重要性,只有确保数据的完整性,才能保证数据库系统的稳定运行。

总的来说,本次实验让我对数据库管理系统有了更深入的了解,不仅学到了理论知识,更通过实际操作提升了自己的实践能力。我相信这些知识和技能在今后的学习和工作中都会起到重要的作用,我会继续深入学习数据库相关知识,不断提升自己的能力。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker compose 以redis为例

常见docker compose 命令 》》注意这个是旧版本的&#xff0c;新版本 docker 与compose 之间没有 - 新版本的 docker compose 把 version 取消了 &#xff0c;redis 默认是没有配置文件的 &#xff0c;nginx&#xff0c;mysql 默认是有的 services:redis:image: redis:lat…

ES C++客户端安装及使用

1. ES 介绍 Elasticsearch &#xff0c; 简称 ES &#xff0c;它是个开源分布式搜索引擎&#xff0c;它的特点有&#xff1a;分布式&#xff0c;零配 置&#xff0c;自动发现&#xff0c;索引自动分片&#xff0c;索引副本机制&#xff0c; restful 风格接口&#xff0c;多…

【软件工程】一篇入门UML建模图(状态图、活动图、构件图、部署图)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必练内功_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

应急响应--流量分析

&#xff08;一&#xff09;Cobalt Strike流量特征分析 1.HTTP特征 源码特征&#xff1a; 在流量中&#xff0c;通过http协议的url路径&#xff0c;在checksum8解密算法计算后&#xff0c;32位的后门得到的结果是92&#xff0c;64位的后门得到的结果是93&#xff0c;该特征符…

自然语言处理:高斯混合模型

介绍 大家好&#xff0c;博主又来给大家分享知识了&#xff0c;今天给大家分享的内容是自然语言处理中的高斯混合模型。 在自然语言处理这个充满挑战与机遇的领域&#xff0c;我们常常面临海量且复杂的文本数据。如何从这些数据中挖掘出有价值的信息&#xff0c;对文本进行有…

【C++指南】一文总结C++类和对象【中】

&#x1f31f; 各位看官好&#xff0c;我是egoist2023&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C类和对象的语法知识。注意&#xff1a;在本章节中&#xff0c;小编会以Date类举例 &#x1f44d; 如果觉得…

再聊 Flutter Riverpod ,注解模式下的 Riverpod 有什么特别之处,还有发展方向

三年前我们通过 《Flutter Riverpod 全面深入解析》 深入理解了 riverpod 的内部实现&#xff0c;而时隔三年之后&#xff0c;如今Riverpod 的主流模式已经是注解&#xff0c;那今天就让我们来聊聊 riverpod 的注解有什么特殊之处。 前言 在此之前&#xff0c;我们需要先回忆…

Go语言集成DeepSeek API和GoFly框架文本编辑器实现流式输出和对话(GoFly快速开发框架)

说明 本文是GoFly快速开发框架集成Go语言调用 DeepSeek API 插件&#xff0c;实现流式输出和对话功能。为了方便实现更多业务功能我们在Go服务端调用AI即DeepSeek接口&#xff0c;处理好业务后再用Gin框架实现流失流式输出到前端&#xff0c;前端使用fetch请求接收到流式的mar…

docker不停机部署

背景 最近做大疆项目时&#xff0c;后台更新部署时&#xff0c;机场和无人机就会掉线。设备自动重连注册时间比较长&#xff0c;应用长时间不可用。所以需要灰色发布服务。docker-compose的swarm模式可解决此问题。 服务构建脚本Dockerfile # 使用官方Java基础镜像&#xff…

ZLG嵌入式笔记 | ZLG核心板散热设计指引

在嵌入式系统设计中&#xff0c;散热是影响处理器性能与稳定性的关键问题。本文聚焦于高端嵌入式处理器的散热设计&#xff0c;探讨核心板的热设计与系统级热设计方法&#xff0c;以及导热材料和布局的建议&#xff0c;为解决高温问题提供参考。 用高端嵌入式处理器设计系统&am…

[Java]使用java进行JDBC编程

首先要从中央仓库下载api(类似驱动程序)&#xff0c;为了链接java和mysql 下载jar包&#xff0c;需要注意的是jar包的版本要和mysql保持一致 下面是新建文件夹lib&#xff0c;把jar包放进去&#xff0c;并添加为库 sql固定的情况下运行 import com.mysql.cj.jdbc.MysqlDataSo…

MySQL进阶-关联查询优化

采用左外连接 下面开始 EXPLAIN 分析 EXPLAIN SELECT SQL_NO_CACHE * FROM type LEFT JOIN book ON type.card book.card; 结论&#xff1a;type 有All ,代表着全表扫描&#xff0c;效率较差 添加索引优化 ALTER TABLE book ADD INDEX Y ( card); #【被驱动表】&#xff0…

fiddler+雷电模拟器(安卓9)+https配置

一、fiddler配置 1、开启https代理 2、根证书安装&#xff1a;导出证书系统安装 二、模拟器设置 1、设置网络桥接模式 【点击安装】提示安装成功后保存即可 2、开启root&#xff08;开启adb远程调试&#xff09; 3、开启磁盘写入 4、设置WLAN代理 5、证书安装&#xff1a;物…

STM32-SPI通信协议

目录 一&#xff1a;什么是通信协议&#xff1f; 二&#xff1a;电路结构 1.硬件电路 2&#xff1a;移位 3&#xff1a;时序图 4.交换字节 三&#xff1a;W25Q64简介 硬件电路&#xff1a;​编辑 存储器地址划分 Dlash操作注意事项 状态寄存器 SPI指令集 四&am…

【CentOS】搭建Radius服务器

目录 背景简介&#xff1a;Radius是什么&#xff1f;Radius服务器验证原理搭建Radius服务器环境信息yum在线安装配置FreeRADIUS相关文件clients.conf文件users文件重启服务 验证 参考链接 背景 在项目中需要用到Radius服务器作为数据库代理用户的外部验证服务器&#xff0c;做…

Vue中自定义指令:ClickOutside(点击当前模块外的位置)

应用场景 假设我们有一个下拉框组件&#xff0c;当下拉框展开的时候&#xff0c;点击下拉框之外的元素可以自动关闭下拉框。 一 ClickOutside代码示例 在vue3中使用ClickOutside // 导入自定义指令 import { ClickOutside as vClickOutside } from element-plus;// 绑定指令…

2019年蓝桥杯第十届CC++大学B组真题及代码

目录 1A&#xff1a;组队&#xff08;填空5分_手算&#xff09; 2B&#xff1a;年号字符&#xff08;填空5分_进制&#xff09; 3C&#xff1a;数列求值&#xff08;填空10分_枚举&#xff09; 4D&#xff1a;数的分解&#xff08;填空10分&#xff09; 5E&#xff1a;迷宫…

jdk-21_linux-x64_bin.tar.gz Linux jdk21压缩包安装保姆级(详细安装教程)

jdk-21_linux-x64_bin.tar.gz 解压版详细安装教程 一、简洁版&#xff08;需要对 Linux 操作有一定基础&#xff09;二、图文详细教程1、前置准备2、解压安装3、配置环境变量4、验证成功 官网下载地址&#xff1a; https://www.oracle.com/java/technologies/downloads/#java2…

第6章 定时器计数器

目录 6.1 定时计数器的结构框图 6.2 定时器的控制字 6.2.1 TMOD&#xff1a;工作方式控制寄存器 6.2.2 定时/计数器控制寄存器TCON 6.3 定时/计数器的4种工作方式 6.3.1 方式0、方式1&#xff08;13位、16位定时计数方式&#xff09; 6.3.2 方式2(常数自动重装入) 6.3.3 方…

回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测

回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测 目录 回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测回归效果基本介绍GWO-BP-Adaboost:基于灰狼算法优化BP神经网络结合Adaboost思想…