做网站设计的网站,网站外链建设方案,如何向百度提交站点收录信息,软件定制开发费用图形数据库是什么呢#xff1f;如果从字面理解是进行图形处理的数据库#xff0c;那么你就错了哈哈。 我们先来解释什么是图形数据库。 图形数据库是NoSQL数据库的一种类型#xff0c;它应用图形理论存储实体之间的关系信息。最常见的例子#xff0c;就是社会网络中人与人之… 图形数据库是什么呢如果从字面理解是进行图形处理的数据库那么你就错了哈哈。 我们先来解释什么是图形数据库。 图形数据库是NoSQL数据库的一种类型它应用图形理论存储实体之间的关系信息。最常见的例子就是社会网络中人与人之间的关系。关系型数据库用于存储关系型数据的效果并不好其查询复杂、缓慢、超出预期而图形数据库的独特设计恰恰弥补了这个缺陷。 举个例子 如图表示人、城市、餐馆三个实体直接的关系有人和人谁和谁是朋友的关系人居住在某个城市的关系城市和餐馆的关系人和餐馆的关系。 按照传统做法可以创建personRestaurant City表创建各种关系表。人与人任何城市任何餐馆城市和餐馆的关系表。 假设我们要查询某人的朋友喜欢的餐馆。 假设我们要查询居住在同一城市的人喜欢的同一餐馆。 .................... 是不是开始有点晕了。 是不是要感觉关联n多张表还要自我关联。 为了解决这样的问题业界发明了图形数据库。而SQL 2017 和Azure SQL现在全面支持图形数据库。 怎么来实现呢 见下图 新的数据表节点node表和edge边缘表 节点表表示数据实体比如人城市餐馆。 边缘表表示实体之间的关系。 第一张图所表示的关系我们可以用下面代码创建节点表注意关键词 NODE CREATE TABLE Person ( ID INTEGER PRIMARY KEY, name VARCHAR(100)) AS NODE; CREATE TABLE Restaurant ( ID INTEGER NOT NULL, name VARCHAR(100), city VARCHAR(100)) AS NODE; CREATE TABLE City ( ID INTEGER PRIMARY KEY, name VARCHAR(100), stateName VARCHAR(100)) AS NODE; 创建边缘表 CREATE TABLE likes (rating INTEGER) AS EDGE; CREATE TABLE friendOf AS EDGE;CREATE TABLE livesIn AS EDGE; CREATE TABLE locatedIn AS EDGE; 创建好后可看到数据库表属性下会有一个图形表出现node表和edge表表示图标有所不同 查询数据如下 select * from city select * from person select *from livesIn 如图可以看到node表自动生成了node_id这列edge自动生成了edge_id,from_id,to_id后面都加上了唯一标识。这列的属性是nvarchar1000 事实上每张表系统会生成一个graph_id_和其他的系统列这些列都无法访问由系统进行管理。见下图 边缘表表示了实体之间的关系from to的关系如果双向关系就需要建立两条。下面进行查询是这样的 --查找john的朋友喜欢的餐馆 SELECT Restaurant.name FROM Person person1, Person person2, likes, friendOf, Restaurant WHERE MATCH(person1-(friendOf)-person2-(likes)-Restaurant) AND person1.nameJohn; -- 查找在同一城市里面喜欢同一餐馆的人 SELECT Person.name FROM Person, likes, Restaurant, livesIn, City, locatedIn WHERE MATCH (Person-(likes)-Restaurant-(locatedIn)-City AND Person-(livesIn)-City); ---注意使用关键字 Match进行查询。 通过上面的简单的语句可以实现在关系型模型下需要非常复杂的关联才能得到的结果。并且SQL 2017的图形数据库与数据库引擎完全融合也就是可以使用比如备份SSIS ,POWERBI等各种功能。 在应用上可以分析如社交关系、犯罪追踪、医疗领域等等。 更多信息请参考https://docs.microsoft.com/zh-cn/sql/relational-databases/graphs/sql-graph-overview .NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com