Surrealdb 可以作为图形数据库使用,允许我们在数据之间建立复杂的图形关系。使用 RELATE 声明可以建立这种关系,它可以在两个数据记录之间建立 graph edge,也就是图形关系。
RELATE
复制一份这个请求,名字改成 “图形关系”。用一下 RELATE ,然后是 user:libai->like->post:2,这里我们用箭头的形式表达了两个数据之间的关系,意思就是 user:libai 点赞了 post:2 这个内容。
建立这个关系的时候可以添加一些额外的数据,比如我们可以记录一下用户点赞内容时的日期时间,或者记录一下点赞发生在哪个平台的应用里。用 SET 添加一个 platform,它的值是 'web' 。
执行一下,返回的结果就是建立的 like 这个关系,里面有 like 的 id,in 属性的值是 user:libai,out 属性的值是 post:2,另外这里还有一个 platform,值是 web。
这个 like 也是一个数据表,它有点像是一般我们在关联型数据库里创建的用来记录数据关系用的中间表。
再执行一下这个 RELATE,修改一下用户的 id, user:baijuyi ,like 的内容是 post:2 ,platform 设置成 mobile ,这个关系表示是在白居易在移动平台点赞了 post:2 这个内容。
执行一下 SELECT * FROM like,可以得到这个 like 表里的数据记录。
名词
这个 like 就是在用户与内容之间生成的 edge,也就是关系,edge 也可以称为 link 或者 line。它的左右两边的东西是 vertex,也叫 node 或者 point。