实验背景
- 通过练习绘制语义网络,加深对于基本概念之间关系的理解和掌握。
- 掌握在VISIO中绘制能准确表达基本概念之间关系的语义网络的技能。
- 了解并比较数据模型的Chen’s表示法和UML表示法。
- 理解关系模型设计中的完整性约束的重要性。
- 掌握在Linux操作系统下远程访问虚拟机的方法,以及常见的Linux平台控制台命令。
- 熟练掌握在数据库服务器上安装、连接、卸载数据库管理系统的过程。
- 熟悉在数据库管理系统中建立数据库、创建数据表、插入数据的方法。
实验要求
概念要求
语义网络是用于描述概念间关系的一种工具,请准确掌握如下两组基本概念,并用VISIO画出能准确表达这些概念之间关系的语义网络。
(1)数据、数据库、数据模型、数据库管理系统、软件、模型、数据库系统
(2)实体、实体集、属性、实体标识符、实体型、域、联系
概念模型设计要求
- 请在VISIO中观察数据模型的Chen’s表示法和UML表示法。请从如下现实业务背景任选一个,分别用这两种表示法在VISIO中画出简化的概念模型(10个实体集以内,不必穷尽)。
- 12306网站余票查询业务模型
- 航空公司航班查询业务模型
- 支付宝或微信支付业务模型
- 银行账户与转账业务模型
- 微信朋友圈业务模型
- 微信用户及聊天群聊天业务模型
- 短视频平台业务模型
- 知乎等论坛业务模型
- 互联网点餐业务模型
- 快餐店点餐业务模型(门店或网络点餐)
注:因本学期所有实验题将围绕上述业务背景之一开展,建议尽早选定一个业务模型,尽早理解与分析业务,圈定你将实现的系统的功能范围(不建议范围过大)。
- 关系模型设计时经常会涉及完整性约束,数据模型中的完整性约束来源于业务背景中完整性约束要求。请观察并分析第2题中你选定的业务场景中,举出至少3个以上的完整性约束例子。
虚拟机安装要求
为每位同学提供教学云平台的两台虚拟机已预装Linux操作系统。请自己寻找或根据虚拟机提供的部分安装包,寻找安装和卸载向导,自学建库、卸载及建表方法,完成如下任务:
- 将云平台的两台虚拟机分别当作数据库服务器和Web服务器,掌握通过个人电脑(后续简称终端)远程访问云端虚拟机的方法,掌握Linux平台常见控制台命令。
- 在数据库服务器上安装好MySQL数据库管理系统(也可以安装Oracle或SQLServer),安装完毕,连接测试试通,之后卸载数据库,反复若干次,确保熟练掌握这个过程。
- 在安装好的数据库管理系统中建立一个数据库,随意建立一些数据表,比如通讯录,往表中手动增加一些信息。
- 在终端安装数据库访问可视化工具或控制台工具,以访问数据库中数据。本次实验后续操作建议主要通过控制台命令行完成。
- 在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对象图如下:
完整性约束例子
- 实体完整体:
举例:用户作为实体,他的主码用户ID不能为空值,否则我们将无法识别这一用户。
- 参照完整性:
举例:用户和文章都是实体,其中文章的属性“发布者ID”是用户的主码,用户ID是发布关系的外码。因此发布者ID只能取用户ID里面的数值,即我们不能注册一个不是用户的ID成为发布者。
- 用户定义的完整性:
举例:用户的粉丝量不能为负数。
数据库安装与实践
远程访问云端虚拟机
首先进入实验云平台,将虚拟机开机,然后绑定外部IP:
绑定的IP地址如下:
选择⽹页链接功能,进⼊图形化界⾯操作系统:
配置DNS使其能够访问外部网络:
配置完毕后重启服务,在网页输入校园网地址进行验证,能够成功访问:
然后更新软件源:
之后便可以安装Mysql:
- 在Terminal中输⼊,等待下载安装MySQL-server,过程中需要选择的地⽅都yes:
sudo apt install mysql-server
- 安装后可以登录测试,在Terminal中输⼊(输入后便进入数据库管理系统了):
sudo mysql -u root -p
- 接下来为远程连接MySQL做准备,⾸先需要赋予root⽤户权限。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
然后刷新权限:
FLUSH PRIVILEGES;
- 修改配置⽂件,将localhost绑定去掉,在Terminal中输⼊(此时已退出DBMS):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
修改内容如下(⽂件其他部分不修改):
#注释掉bind-address这一行
#bind-address=127.0.0.1
修改后, ctrl+x退出, y保存,回车确认⽂件名。
- 重启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了