
# 数据对象建模
#### 什么是数据对象
在应用中引用的任何数据结构元素，如文件、数据、变量等都称为数据对象，简称为对象。数据对象直观的可理解为一张数据表，对象名对应表名，对象属性对应表头。
#### 对象模型支持哪些类型
当前低代码平台支持创建的模型功能类型及类型介绍，请参见[表1]。
 表1模型功能的介绍 
| 功能   | 介绍                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 子类                                                                           | 子类介绍                                                                               |
|:---|:---|:---|:---|
| 对象   | 对象（Object） 用于存储业务数据，可理解为数据库中的数据表（逻辑表，系统实际存储时通过字段映射，统一把数据保存在MySQL大宽表中）。对象支持： - 字段管理 - 标准字段：系统预置的字段，只能修改，不能添加和删除。  - 自定义字段：可根据需要，自行增/删/改。    - 对象校验器 在向对象中录入记录数据时，为了保证对象数据的有效性，可以定义一些校验规则，对字段值以及各字段之间的逻辑关系进行校验。例如，name字段不能为空，MinPrice字段不能大于maxPrice字段等。   - 对象触发器 与数据库中的触发器类似，可以为对象定义触发器，在增/删/改对象的记录数据时，自动触发自定义的Java Script脚本执行，脚本的执行结果将会影响主操作（即增删改记录）的结果，系统保证主操作与触发器在一个事务中执行，要么都成功，要么都失败。   - 对象布局Layout Layout是对象的页面布局，决定了对象详情页面中，各字段展示位置的排版布局。系统为StandardObject预置了标准的PageLayout，租户也可以根据需要定制自己的Layout。   - 选项列表 选项列表用于定义对象的字段可选用的值，类似于定义下拉列表的一组枚举值。   - 对象可见性 对象可见性并非用于安全隔离，是给租户提供的解耦辅助功能。    | 标准对象                                                                         | 平台预置的对象，对象名称和对象字段均已定义好，可以满足最基本的业务需要。 只允许用户扩展新字段，禁止修改、删除基线字段。                       |
| 对象   | 对象（Object） 用于存储业务数据，可理解为数据库中的数据表（逻辑表，系统实际存储时通过字段映射，统一把数据保存在MySQL大宽表中）。对象支持： - 字段管理 - 标准字段：系统预置的字段，只能修改，不能添加和删除。  - 自定义字段：可根据需要，自行增/删/改。    - 对象校验器 在向对象中录入记录数据时，为了保证对象数据的有效性，可以定义一些校验规则，对字段值以及各字段之间的逻辑关系进行校验。例如，name字段不能为空，MinPrice字段不能大于maxPrice字段等。   - 对象触发器 与数据库中的触发器类似，可以为对象定义触发器，在增/删/改对象的记录数据时，自动触发自定义的Java Script脚本执行，脚本的执行结果将会影响主操作（即增删改记录）的结果，系统保证主操作与触发器在一个事务中执行，要么都成功，要么都失败。   - 对象布局Layout Layout是对象的页面布局，决定了对象详情页面中，各字段展示位置的排版布局。系统为StandardObject预置了标准的PageLayout，租户也可以根据需要定制自己的Layout。   - 选项列表 选项列表用于定义对象的字段可选用的值，类似于定义下拉列表的一组枚举值。   - 对象可见性 对象可见性并非用于安全隔离，是给租户提供的解耦辅助功能。    | 自定义对象                                                                        | 自定义的定制对象，允许用户增/删/改对象和字段。                                                           |
| 对象   | 对象（Object） 用于存储业务数据，可理解为数据库中的数据表（逻辑表，系统实际存储时通过字段映射，统一把数据保存在MySQL大宽表中）。对象支持： - 字段管理 - 标准字段：系统预置的字段，只能修改，不能添加和删除。  - 自定义字段：可根据需要，自行增/删/改。    - 对象校验器 在向对象中录入记录数据时，为了保证对象数据的有效性，可以定义一些校验规则，对字段值以及各字段之间的逻辑关系进行校验。例如，name字段不能为空，MinPrice字段不能大于maxPrice字段等。   - 对象触发器 与数据库中的触发器类似，可以为对象定义触发器，在增/删/改对象的记录数据时，自动触发自定义的Java Script脚本执行，脚本的执行结果将会影响主操作（即增删改记录）的结果，系统保证主操作与触发器在一个事务中执行，要么都成功，要么都失败。   - 对象布局Layout Layout是对象的页面布局，决定了对象详情页面中，各字段展示位置的排版布局。系统为StandardObject预置了标准的PageLayout，租户也可以根据需要定制自己的Layout。   - 选项列表 选项列表用于定义对象的字段可选用的值，类似于定义下拉列表的一组枚举值。   - 对象可见性 对象可见性并非用于安全隔离，是给租户提供的解耦辅助功能。    | 视图对象                                                                         | 与数据库中的View视图类似，是对2个以上的对象进行关联查询，并把结果集以对象的形式展现，这样的对象称之为视图对象。视图对象中的数据，只支持查询，不支持增/删/改。 |
| 聚合对象 | 由一个主对象和多个子对象构成的复合对象，实现不同对象之间建立关联关系。聚合对象对外展现为一个对象，从而简化对象管理。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 通过定义对象中某一字段的字段类型为"Lookup"或"Master Detail"（主从关系类型），实现不同对象之间建立关联关系，只能向子对象进行关联。 | 针对这种类型，系统支持基于聚合对象进行数据的增删改查操作，避免对多个对象分别进行多次数据操作。                                    |
| 聚合对象 | 由一个主对象和多个子对象构成的复合对象，实现不同对象之间建立关联关系。聚合对象对外展现为一个对象，从而简化对象管理。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 通过属性配置，实现不同对象之间建立关联关系。                                                       | 针对这种类型，界面上暂不支持基于聚合对象进行数据的增删改查操作，仅可通过Restful接口进行数据的增删改查操作。                          |
   
除了上述几种，还有一种系统对象，即平台各项系统功能模块所使用到的对象，如服务编排、脚本。一般无需关注，若需要定位问题，可在[使用控制台分析查询SQL](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0350.html)中，使用SQL语句进行查询，也可以在管理中心的"系统管理 \> 数据处理 \> 数据导出"中，执行导出操作，详情请参见[如何导出数据](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0043.html#astrozero_05_0043__section6343228131214)。
图1数据调试控制台   
![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933047184.png "点击放大")
图2导出系统对象数据   
![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000002108670697.png "点击放大")
#### 场景描述
本章节从如何新建对象，到定义对象的字段来添加属性，让您快速熟悉数据对象建模的过程。
示例：以新建一个班级Class对象为例，介绍如何进行数据对象建模。在班级Class对象中，将会添加一个自定义字段班级编号number，并给name（标准字段）和number赋值。
表2对象的字段 
| 对象    | 字段来源       | 字段名称   | 字段数据类型 |
|:---|:---|:---|:---|
| Class | 标准字段，不需要创建 | name   | 文本     |
| Class | 自定义字段，手动创建 | number | 班级编号   |
   
 #### 创建自定义数据对象
1. 参考[从空白开始创建一个全新的应用](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0002.html#astrozero_05_0002__section8561116389)中操作，创建班级管理系统应用。
2. 将鼠标放在应用视图下的Model文件夹上，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887804.png)，选择"对象"。
   
   图3新建对象   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887784.png)
   
   

3. 选择"创建新对象"，输入基本信息后，单击"添加"。 
   图4新建对象   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960286301.png "点击放大")
   表3新建对象参数说明 
   | 参数 | 参数说明                                                              |
   |:---|:---|
   | 标签 | 新建对象的标签，用于在界面展示。                                                  |
   | 名称 | 输入标签值后，单击该参数的输入框，系统会自动生成对象的名称，同时自动增加租户命名空间前缀及"__CST"后缀，作为对象的唯一标识。 |
   | 描述 | 对象的描述信息。                                                          |
      
   **拓展知识点**：
   除了在应用开发设计器创建对象，还可以通过全局视图新建对象，如[图5]所示。两种方式创建的对象都是全局对象，在全局视图对象列表中都可查看到。不同点是在全局视图中创建的对象，可参考[图6]和[图7]在应用开发工作台目录中手动导入。一个**自定义** 对象（即定制对象）**只能** 被一个应用导入（标准对象可被多个应用导入），例如，应用A中导入全局视图中创建的自定义对象B后，其他应用不可再导入自定义对象B。
   图5全局视图新建对象   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960126493.png "点击放大")
   图6应用中导入对象步骤1   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960126525.png)
   图7应用中导入对象步骤2   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960126505.png "点击放大")
   
   
 
 #### 定义自定义对象的字段（Fields）
自定义对象创建完成后，系统默认预置了一些标准字段，为了满足业务需求，往往还需修改标准字段或新建自定义字段，字段就是对象的属性描述。
![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
本节主要介绍手动创建自定义字段，AstroZero还支持批量创建自定义字段，详细操作请参见[如何使用对象的字段模板批量创建自定义字段](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0683.html)。
在对象配置页面，单击"标准字段"页签，可以看到系统预置的标准字段。系统会为对象的每一条记录自动创建一个name字段，作为该条记录的标识。
预置字段仅name支持修改，其他字段不支持修改。例如，本任务中将其用于标识出班级的名字，如20届一班。单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960126509.png)，可以修改字段的标签。
图8系统预置字段   
![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960286333.png "点击放大")
下面将以创建班级Class对象中的"班级编号number"字段为例，为您介绍如何在低代码平台对象界面中，跟随页面提示创建一个自定义字段。
1. 新建自定义字段班级编号（number）。 
   1. 在"自定义字段"页签，单击"新建"。
      图9新建自定义字段   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887788.png "点击放大") 
   
   2. 字段类型选择"数字"，单击"下一步"。
      图10字段类型   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933047200.png "点击放大") 
   
   3. 设置"班级编号"字段的详情信息，单击"下一步"。
      图11字段详情   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960126489.png "点击放大")
      表4参数说明 
      | 参数     | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      |:---|:---|
      | 标签     | 字段在界面的展示名，此处配置为"number"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      | 名称     | 单击输入框系统自动生成，表示字段在系统中的记录值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      | 字段帮助   | 字段提示的帮助信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      | 描述     | 字段的描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      | 数据长度   | 字段的字符长度，数字类型长度默认为18。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      | 小数点后位数 | 根据实际需求设置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      | 默认值    | 该字段默认取值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      | 是否必填   | 勾选表示是必填字段。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      | 是否唯一   | 勾选表示字段唯一。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      | 是否可搜   | 是否能在前端开发者控制台或脚本中，使用search语句搜索该字段。 只有加密文本、选项列表、选项列表（多项选择）和公式类型以外的字段，才会有该参数配置。 search语句可以理解为sql语句的子集，系统支持大部分常用的sql查询语句，只需把sql查询语句开头的select关键词修改为search即可。 search语句特点和限制如下： - search语句当前对分组、通配符、去重distinct等功能暂未支持。  - search语句不支持通配符，in查询可进行模糊查询。  - search语句除了聚合函数（AVG、COUNT、MAX、MIN、SUM），其他必须带有where从句，否则报错。  - 字符串类型默认都转为es中text类型，因此可以实现分词的倒排索引。由于默认未设置Fielddata=on（会很耗性能），所以字符串类型无法排序。  - 不支持search语句where从句中有非可搜索字段，如不支持search from myobject where t1 = 'abc' （此处t1为非可搜字段）。  - search语句目前只可进行单表搜索。  - search语句不支持HAVING子句、OFFSET。  - search语句不支持同时普通查询和聚合。例如：不支持"search count(*列名* )，列名 from *列表名*;"。  - search语句不支持列表名别名后".\*"全部查询。例如：不支持"search T.from *列表名* as T where *condition条件*;"。  - text类型采用了英语分词器，因此大小写单复数不敏感，"movie"可匹配"Movies"。  - 同sql语句一样，search语句也大小写不敏感。   |
         
      
   
   4. 设置"班级编号"字段的访问权限，即设置哪些权限集可以查看或修改该字段，然后单击"下一步"。
      图12字段权限   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001960286313.png "点击放大")
      ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
      AstroZero预置了一些权限集，并提供了自定义对象中字段级的安全控制，这些权限配置是由管理员预置的，权限集介绍及设置方法的详细介绍，请参见[了解权限配置](https://support.huaweicloud.com/usermanual-astrozero/astrozero_06_0010.html)。
      
   
   5. 设置"班级编号"字段是否加入布局。
      该配置用于将"班级编号"字段，加入到对象默认的布局页面。
      图13加入布局   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001932887820.png "点击放大")
      ![](https://support.huaweicloud.com/usermanual-astrozero/public_sys-resources/note_3.0-zh-cn.png)
      创建的自定义对象，系统会自动创建对象的页面布局Detail和Records。自定义对象的页面布局是AstroZero提供的一种管理对象的方式，详细介绍请参见[如何使用布局增删改查对象数据](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_0037.html#astrozero_05_0037__section132771847111717)。
      
   
   6. 单击"保存"，完成字段的创建。 自定义字段创建后，系统会自动为自定义字段添加"__CST"后缀和命名空间前缀。
      
   
   
   
   
2. （可选，当需要给对象创建索引字段时，请执行该步骤）在"自定义字段"页签，单击"自定义索引"，在弹出的页面单击"添加自定义索引"。 
   图14添加自定义索引   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001933047176.png "点击放大")
   表5自定义索引参数说明 
   | 参数 | 参数说明                                                                                                                                                                                                                                                                    |
   |:---|:---|
   | 名称 | 自定义索引的名称。                                                                                                                                                                                                                                                               |
   | 类型 | 添加索引的类型。 - 普通索引  - 唯一索引   唯一索引字段的，字段取值必须唯一。 |
   | 字段 | 选择已创建的自定义字段，作为索引字段。 默认最多只能创建一个索引，每个索引中最多创建两个索引字段。                                                                                                                                                                                    |
      
   
   
 
#### 后续操作
对象创建完成后，还可以增删改查对象数据，编辑处理多个对象的关系等。下面章节将深入讲解如何使用对象模型的校验器和触发器，方便您进一步熟悉对象的使用。
