当前位置: 首页 > news >正文

知乎后台管理系统:数据库系统原理实验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数据库,并导入建库脚本(脚本在实验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.mrgr.cn/news/93993.html

相关文章:

  • 每日一题----------String 和StringBuffer和StringBuiler重点
  • linux 系统 之centos安装 docker
  • 1.1 双指针专题:移动零(easy)
  • Dify平台部署全记录
  • WinForm模态与非模态窗体
  • 虚幻基础:动画系统
  • 无人机避障——XTDrone中运行VINS-Fusion+Ego-planner进行路径规划
  • 【愚公系列】《AI Agent技术、应用与商业》003-Al Agent 的分类方式
  • 【NexLM 开源系列】如何封装多个大模型 API 调用
  • 在线json转ArkTs-Harmonyos
  • π0源码剖析——从π0模型架构的实现(如何基于PaLI-Gemma和扩散策略去噪生成动作),到基于C/S架构下的模型训练与部署
  • Smart contract -- 自毁合约
  • 忘记dedecms后台超级管理员账号和密码的解决方案
  • ROS实践(二)构建Gazebo机器人模型文件urdf
  • 大语言模型 (LLM) 基础知识
  • Java 大视界 -- Java 大数据在智慧农业农产品质量追溯与品牌建设中的应用(124)
  • 自监督预训练算法核心原理
  • 【论文阅读】VAD: Vectorized Scene Representation for Efficient Autonomous Driving
  • 蓝桥杯备赛日记【1】(c++赛道)
  • MySQL的安装及配置