请围绕自己的日常生活,设计一个日常关联图并实现.请大家递交图设计库的概念结构图和实现截图。
-
数据库
-
关系型数据库:
关系型数据库是指采用了关系模型来组织数据的数据库。关系型数据库以行和列的方式进行存储,方便用户理解,且易于查询。为避免重复、规范化数据以及充分利用好存储空间,关系型数据库把数据按照最小关系表的形式进行存储,这样数据管理的就可以变得很清晰、一目了然
-
- 层次数据库:以树状结构组织数据,父节点与子节点之间存在一对多的关系。
- 网状数据库:以网状结构组织数据,允许一个节点有多个父节点。
- 关系数据库:使用表格形式存储数据,通过行和列的交叉关系来表示数据之间的联系。
-
非关系型数据库:
非关系型数据库(NoSQL数据库)是用于存储和检索数据的非关系数据库系统,它们通常采用非传统的方式来存储和管理数据。非关系型数据库有很多优点,例如可伸缩性、灵活的数据模型、分布式等,在大数据和实时数据处理等领域得到广泛应用。
-
- 面向对象数据库:以对象的形式存储和操作数据,支持面向对象的编程概念和特性。
- 文档数据库:以文档的形式存储数据,常用于存储非结构化的数据,如JSON或XML格式的数据。
- 键值数据库:只能存储键值对,并且通过键查找值,非常简单,通常不能实现复杂的应用程序,在某些情况下非常有效,例如嵌入式系统或者高性能的内存数据库。
-
图数据库
图数据库是一种专门用于存储图形数据的 NoSQL 数据库。与传统的关系型数据库和其他 NoSQL 数据库不同,图数据库利用图形数据模型来存储和管理数据。图形数据模型由节点和边组成,节点代表实体,边代表实体之间的关系。例如,在社交网络中,用户可以表示为节点,朋友关系可以表示为边。
图数据库具有以下特点:
-
- 灵活的数据模型:图数据库采用图形数据模型,可以灵活地存储和表示各种类型的数据,例如社交网络、地图、知识图谱等。
- 快速的图形遍历:图数据库可以快速地遍历图形数据,通过节点和边之间的关系来发现数据之间的联系和模式,可以用于实现推荐系统、路径分析等功能。
- 高性能的查询和事务处理:图数据库支持高效的查询和事务处理,可以处理大规模的图形数据和高并发请求,具有较高的性能和可扩展性。
- 可视化和交互性:图数据库可以通过图形界面来可视化和交互数据,使用户可以更加直观地理解和操作数据。(如下图,来源于东华大学网上服务大厅数据中心,可以直观的展示学生的校内关系)
图1
-
图数据库的概念与建立
我选取的案例是简单的教务管理系统,接下来我们也将使用教务管理系统中用户访问菜单的流程来介绍这个图数据库的概念。
在用户访问菜单中,我们的信息主体有如下三个:用户、角色、菜单。
举个例子来说:
小红(用户)根据关联关系【用户-角色】找到自己所拥有的【角色】(学生),实体(学生)【角色】根据关联关系【角色-菜单】找到学生所拥有的【菜单】(查看成绩)。
在教务管理系统中构建ER图如下:
图2
图数据库的数据模型中,我们将信息分为三类,分别为节点、关系、属性。
-
节点
在教务管理系统案例中,用户、角色、菜单,都是节点。
图3构建用户节点
图4用户节点
图5构建角色节点
图6 角色节点
CREATE (n9:菜单 {menu_name: "查询课程", menu_description: '搜索和查看所有可用的课程'}) ;CREATE (n10:菜单 {menu_name: "查询成绩", menu_description: '查看个人的成绩单'}) ;CREATE (n11:菜单 {menu_name: " 修改个人信息", menu_description: '更新个人的姓名、电子邮件地址、密码等个人信息'}) ;CREATE (n12:菜单 {menu_name: " 创建课程", menu_description: '添加新的课程到系统中'}) ;CREATE (n13:菜单 {menu_name: " 登记成绩", menu_description: '记录学生的成绩'}) ;CREATE (n14:菜单 {menu_name: " 审核课程", menu_description: '检查并批准新的课程请求'}) ;CREATE (n15:菜单 {menu_name: " 审核成绩", menu_description: '检查并批准成绩的变更请求'}) ;CREATE (n16:菜单 {menu_name: " 查看登陆情况", menu_description: '监视系统的登录活动'})
图7 菜单节点
-
关系
创建关系,信息关联有如下两个:用户-角色(拥有权限)、角色-菜单(执行操作)。
图8 创建用户-角色关系
图9 用户-角色关系示例
图10 创建角色-菜单关系
图11 角色-菜单关系示例
-
属性
节点和边都可以拥有可搜索的属性。
图12 点击节点查看属性
这是我们用neo4j构建的一个图谱关系,我们可以非常清晰的看到每个用户所拥有的角色,以及每个角色所能访问的菜单。
图13 最终呈现效果
图数据库也会有专门的语言来对数据库进行操作,例如我们现在想查询小红这个用户可以访问那些菜单,代码如下:
图14 查询结果