之前我们提到过 Dataverse 不仅仅是个数据库,他是一个提供了很多丰富功能的 SaaS 服务,接下来几期我会向大家慢慢介绍这些功能。而在今天我们先一起去看其中最基础的能力:数据存储
本期重点:
Dataverse 提供了一种关系型数据库
理解数据库需要掌握表结构和表关系两点
表结构由列和行组成
Dataverse 提供了标准表、自定义表、活动表和虚拟表四种类型
每种表可以配置不同的所有权
什么是 Dataverse 提供的数据库?
我们可以在 Power Platform 中给每个环境去创建数据库用来储存数据。在现在这个数字化的时代,我们日常生活中用到的各种手机应用,又或者是办公系统的背后都会有不同的数据库用来存放数据,比如屏幕前正在阅读文章的你,这篇文章实际就会被微信存放到它的数据库中,等你阅读的时候微信会从数据库中将这篇文章读取出来,再通过应用界面的美化呈现给你。
这时候你可能会问:为什么还需要数据库?我直接把数据存放到 Excel 中不行吗
答案是:数据库与 Excel 相比有很多优势,在数据库中你可以存放更多的数据,同时支持让很多人去读取和修改里面的数据。
Dataverse 数据库是如何存放数据的?
数据库有很多种类,我们本期重点学习的是 Microsoft Dataverse 提供的关系型数据库。
在 Dataverse 的数据库是由多个表组成的,还是以 Excel 为例,我们知道 Excel 里面存放的是一张一张的二维表,每个表都是由很多行和列组成的。
同样在 Dataverse 里面存放的也是一张张的表,只不过他的表和表之间是有关系的。所以我们如果想要学会 Dataverse 提供的数据库,最重要的就是掌握两点内容:
每一张表的结构
表和表之间的关系
表的结构
表的结构是指,我们需要认识到 Dataverse 中的表是干什么的,长什么样,由哪些内容组成。
我们先看一下每张表长什么样子。
每张表首先有一个表名,用来表示当前表存放的是什么内容,表中还会包含带有列名的列,和每一行数据记录。这里我们举一个例子,下面图片展示的就是存储在 Dataverse 中的一张学生表,记录了每个学生的信息。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424401-840502-848be85d959f3b5a66688256b0bbb228.png)
表中每一列都有一个名字来标识出该列,这个表里面有4列,分别是学号、姓名、出生日期和性别。从这几个列名上我们就能看出来每一列所对应的是什么数据。
另外表里的每一行都记录着数据,在学生表中每一行就表示该名学生的信息,比如现在第二行就是学号0002的学生信息,他的姓名是阿杰,出生日期是2021年6月23日,性别是男。现在相信大家已经很清楚表的含义了,那我们接下来去看一下
在 Dataverse 中提供了几种表的类型
标准表
标准表是在环境初始化 Dataverse 数据库时就会自带的一些开箱即用的表,我们可以在这些表的基础上去进行扩展,但是这些标准表是不能被删除的。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424426-697600-8c8bd5e88f6abfb2efbb906d63107166.png)
上图中展示的就是 Dataverse 中开箱即用提供的标准表,这些标准表里有很多实际上是系统表,我们拿其中几个表进行举例说明。
User 表
User 表中存储了可以访问 Dataverse 的系统内置用户和企业用户。很多人一次看到这个表都会头晕,因为这个表里有一大堆看不懂的用户名,这些其实是 Dataverse 内置的用户,这些账户每个都有特殊的作用,比如 Power Apps Checker Application 是用来执行Power Apps 解决方案静态分析的账户。作为用户而言我们是不需要管这些内置账户的,让他们安安静静的待在那里就好。所以一般情况下我们都不需要去关注这个 User 表。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424453-903301-45078df7141d60d93efef5bf0dd14466.png)
Account 表
Account 表是 Dataverse 开箱即用提供的标准表,是用来存储客户数据的,大家不要一看名字是 Account ,就拿他来存用户数据了,他这个 Account 是基于通用数据模型提供的客户账户,里面提供的预置列名都是跟 CRM 的客户信息相关的,所以他主要是用来存储客户或者潜在客户信息的,我们从下图的示例数据也能看出 Account Name 列存储的都是公司名字。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424472-886037-8db02792915d1eb16df95338337798f3.png)
Business Unit 表
BU表存储了公司的业务部门,比如公司下面有市场部,研发部等等,是用来构建组织层次结构的。这个是真正在 Dataverse 中有用的表,我们在 BU表里创建了一条记录后,这个业务部门就会在整个 Dataverse 生效,具体的效果我们会在以后讲层次结构和安全性的时候进行详细说明。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424488-240327-f19b98e25e6b4c8840532042af2cbee3.png)
总的来说标准表中的内容可以分为两部分:系统相关的表(通常不用去管),跟CRM相关的表(如果不是做 CRM 相关应用的话也不用去管)。
自定义表
除了标准表以外,如果我们想要自己从零开始创建一个表,这种表就叫做自定义表。
比如最前面提到的学生表,那就是我从零开始在 Dataverse 中创建的。但是需要注意一点并不是所有用户都有权限去创建自定义表,只有 System Administrator 或者 System Customizer 才可以创建。具体的安全角色说明我会在以后安全性的章节进行详解。
活动表
活动表实际也是 CRM 的一种概念,活动类型的表是用来记录所有跟客户交流的内容,比如在销售过程中,可能需要给客户发送电子邮件,电话沟通或者约一个会议,包括为自己分配一些任务。这些动作相当于是不同类型的活动。
而 Dataverse 本身就在标准表中提供了几种开箱即用的活动表。Task, Email , Appointment , Phone Call, Letter , Fax 这些都是开箱即用的标准表,同时他们也是活动表。除此以外,我们也可以通过自定义表的方式创建自定义的活动类型,比如下图中的“电话沟通”就是我从零开始创建的一个活动表。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424537-62715-70d38443865afe560b8bd207527b8f83.png)
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424519-740924-9d13ba8fc9716babde4fed0ac036c21f.png)
虚拟表
上述三种类型的表都会实际的存储数据,而虚拟表与它们明显的区别就是虚拟表本身不存储数据。它只是作为一种集成方法可以让 Dataverse 访问到外部系统的数据,而不需要将数据本身存储到 Dataverse 。这就会引发几个问题,虚拟表不支持流程和审计,计算和汇总,也不支持用户级别的安全性设置等等。这么一看虚拟表全是缺点,那为什么还专门提供这么一种表的类型呢?
他的主要优势就是直接与外部数据源连接,而不需要将数据复制一份到 Dataverse ,这对于需要在模型驱动应用中访问外部系统数据来说是一种很好的解决方案。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424566-614316-15402139c74b641876ccf8a5dc77d1c9.png)
表的所有权
并不是企业当中都所有人都需要访问到表里的所有数据,很多情况下用户只需要访问到跟其相关的数据就可以。所以在创建表的时候 Dataverse 提供了一个叫做所有权的配置项,总共有两种选择:
组织: 企业的所有人都可以看到或者都不能看到表中的数据,也就是一旦选择了组织所有权,那数据相当于在组织内公开了,这种类型适合可以让企业中都能看到的数据,比如产品表,配置表等等。
用户或团队:可以按照用户,业务部门等权限进行详细的配置,也就是选择了用户或团队所有权,数据就可以按照自己的需求进行详细的安全配置,比如自己创建的数据只能自己看到,或者表里的数据只能看到自己部门的,无法看到其他部门数据等等。
上面提到的几种 Dataverse 表类型分别支持不同的所有权配置:
标准表:组织
自定义表:用户或团队,组织
活动表:用户或团队
虚拟表:组织
综上所述,大家可以按照自己的实际需求选择对应表来存储数据。
总结:
Dataverse 提供了一种关系型数据库
理解数据库需要掌握表结构和表关系两点
表结构由列和行组成
Dataverse 提供了标准表、自定义表、活动表和虚拟表四种类型
每种表可以配置不同的所有权