目录

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

知乎后台管理系统:数据库系统原理实验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服务器 ,并能访问数据库服务器中的数据库。

语义网络

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

https://i-blog.csdnimg.cn/direct/8276249a59a44df7b9de0f8f60487030.png

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

https://i-blog.csdnimg.cn/direct/40632d98b4de438e832145212fd9e930.png


概念模型

知乎业务概念模型

Chen’s表示法

Version1.0:

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

其中,

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

联系 有:

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

https://i-blog.csdnimg.cn/direct/5daeab8bed7d47c0863233d3795cf343.png

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图如下:

https://i-blog.csdnimg.cn/direct/d1d85a8e622741aa8064a794fa2abbd1.png

UML表示法

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

https://i-blog.csdnimg.cn/direct/20b383c5862a400e898bb00b7d23f278.png

完整性约束例子

  1. 实体完整体:

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

  1. 参照完整性:

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

  1. 用户定义的完整性:

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

数据库安装与实践

远程访问云端虚拟机

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

https://i-blog.csdnimg.cn/direct/a9863f8090be463dae0234fcfff29561.png

绑定的IP地址如下:

https://i-blog.csdnimg.cn/direct/8720a087813246fb9d4c40a4805a8294.png

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

https://i-blog.csdnimg.cn/direct/57e7af925f95414db93ea2063be6750d.png

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

https://i-blog.csdnimg.cn/direct/49b386cd20264e71887bd16bae4706ab.png

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

https://i-blog.csdnimg.cn/direct/ae456c0412cb4b0997cf42aa10841c82.png

然后更新软件源:

https://i-blog.csdnimg.cn/direct/f9843da083d14e028ece6460b83d9cae.png

之后便可以安装Mysql:

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

https://i-blog.csdnimg.cn/direct/85cce1560d4842df9ce42b49e3ae0b69.png

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

https://i-blog.csdnimg.cn/direct/e415679c5a86491ca21598d8ffcda159.png

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

然后刷新权限:

FLUSH PRIVILEGES; 

https://i-blog.csdnimg.cn/direct/e3576113f86a4d989bf959fec8f0c192.png

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

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

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

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

https://i-blog.csdnimg.cn/direct/2f4406a690d64e04a6741786878165dc.png

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

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

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

https://i-blog.csdnimg.cn/direct/2eceaa140ced48c088499d24ff40b35d.png

成功连接:

https://i-blog.csdnimg.cn/direct/44c5ab166ffc491891bb245e0bfcef62.png

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

https://i-blog.csdnimg.cn/direct/306a72fef2fc4069b44cc618f0d87cbe.png

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

Windows下Mysql卸载

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

https://i-blog.csdnimg.cn/direct/6555df5fca5d4de4baa8eb68611b9b35.png

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

https://i-blog.csdnimg.cn/direct/9d25eba724864f93b319c03fd5fc700f.png

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

https://i-blog.csdnimg.cn/direct/2815dd1e8bff4bcb84da6adc7f9763e8.png

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

sc delete MySQL

https://i-blog.csdnimg.cn/direct/5a66d34cb07247f7a53ff071cd23ad97.png

https://i-blog.csdnimg.cn/direct/5d0269f979444aee8435a03784cc543b.png

https://i-blog.csdnimg.cn/direct/d1f5b2a47e6d414f980c83e273bfff62.png

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

Windows下安装MySQL

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

https://i-blog.csdnimg.cn/direct/96ab8bef032a4a6b9bbe6b763fbcd619.png

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

https://i-blog.csdnimg.cn/direct/a647b9cfbbed4c45997c2c5c9c5a6518.png

双击安装包开始安装

https://i-blog.csdnimg.cn/direct/57a43820f6ea4398aeb01abeb28cfcca.png

我们选择自定义安装, 因为有些应用我们可能用不到:

https://i-blog.csdnimg.cn/direct/fc7aea1f0ff94ac0a8785168074fe77a.png

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

https://i-blog.csdnimg.cn/direct/0b06096d196345168328ddff6d9d5528.png

通过以下选项修改安装路径

https://i-blog.csdnimg.cn/direct/2e82a9bc42af41bebbb834b12a4b55ca.png

改成想要保存的路径

https://i-blog.csdnimg.cn/direct/76f27e25cc1f40b6b273579d5a77c1ee.png

https://i-blog.csdnimg.cn/direct/670a8b7eec3941dba18c141ceb664ebb.png

点击 execute

https://i-blog.csdnimg.cn/direct/272c1c53652441e18757c0cd9e606149.png

接下来开始配置,第一步和第二步配置默认不改

https://i-blog.csdnimg.cn/direct/4f0a863ba4404373a1c0f30ed6c302c7.png

https://i-blog.csdnimg.cn/direct/3f89fdf355f8412882582828bf0bd675.png

设置密码

https://i-blog.csdnimg.cn/direct/9409679164734af395e37688ea93bc87.png

这里可以改成MySQL, 在启动服务的时候方便些:

https://i-blog.csdnimg.cn/direct/e27abec0366d44a69d6a3298c4980621.png

选最后一个,继续

https://i-blog.csdnimg.cn/direct/de741bdbd97a43bc93dc618eafb5ca38.png

接着继续安装

https://i-blog.csdnimg.cn/direct/8cb709ac364d412dbad7437940a42bd0.png

安装完成,点FINISH

https://i-blog.csdnimg.cn/direct/1b513f34676a4355a53fdd9c5692543b.png

然后进行环境变量配置(在环境变量中添加以下路径)

https://i-blog.csdnimg.cn/direct/1948a88baf1f45f7a229045b40ee3da9.png

验证安装

https://i-blog.csdnimg.cn/direct/3194af7e07ed4c2590e00442a5bb984c.png

再输入密码,成功进入

https://i-blog.csdnimg.cn/direct/24354e73eb2f4b29926ddb88752e95e4.png

创建数据库

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

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

https://i-blog.csdnimg.cn/direct/b9b331f64e304c459e2b0964353f99b3.png

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

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

https://i-blog.csdnimg.cn/direct/815b49cf9356479fa4c47bed78c71abd.png

删除数据库

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

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

DROP DATABASE [IF EXISTS] <database_name>;

https://i-blog.csdnimg.cn/direct/0f5a827d29c24872820e98557015dcb9.png

选择数据库

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

USE database_name;

https://i-blog.csdnimg.cn/direct/14df18f675834d2fb0137e6c1a7c1ccf.png

5.8创建数据表

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

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

语法如下:

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

https://i-blog.csdnimg.cn/direct/1b2b48f7cc1a4a4bb6c543c5dd788b71.png

实例解析:

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

删除数据表

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

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

DROP TABLE [IF EXISTS] table_name;

https://i-blog.csdnimg.cn/direct/cfd73251a8df4d17a5a2530083dba0c1.png

插入数据

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

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

https://i-blog.csdnimg.cn/direct/73305f9aef954f45844986cbfb49ab0b.png

查询数据

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

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

https://i-blog.csdnimg.cn/direct/24ecbe6ee7284226b65980451f72be94.png

更新数据

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

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

https://i-blog.csdnimg.cn/direct/c2731bb99b044a56a01eeac61b9389d8.png

删除数据

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

DELETE FROM table_name
WHERE condition;

https://i-blog.csdnimg.cn/direct/f9a128fbcd614877829dfaff509c8550.png


实验感悟

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

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

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

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