4、数据模型设计:实体与字段设计、关系建模、数据源配置与数据绑定
数据模型设计,说白了就是低代码平台的「地基」。
我见过太多项目,前期图快,随便拖几个字段就开始搭页面。结果业务一复杂,数据乱成一锅粥,改都改不动。嗯,今天我们就来聊聊,怎么把这个地基打扎实。
4.1 实体与字段设计:别把字段当Excel列来用
很多新手容易犯一个错:把低代码的「实体」当成Excel表格来设计。字段名随便起,类型随便选。我个人习惯是,在设计实体之前,先问自己三个问题:
- 这个实体代表什么业务对象?(比如「订单」、「客户」、「商品」)
- 这个对象有哪些核心属性?(比如订单有「金额」、「状态」、「下单时间」)
- 这些属性之间有没有依赖关系?(比如「总金额」是不是由「单价×数量」算出来的?)
字段类型的选择,我建议遵循一个原则:用最严格的类型,存最准确的数据。
| 字段类型 | 适用场景 | 避坑提醒 |
|---|---|---|
| 文本 | 名称、描述、备注 | 记得限制长度,别让用户输入几万字 |
| 数字 | 金额、数量、年龄 | 金额用「小数」类型,别用「整数」 |
| 日期/时间 | 创建时间、到期日 | 统一用时间戳,别存字符串 |
| 布尔 | 是否启用、是否删除 | 别用「0」和「1」代替,语义不清晰 |
| 枚举 | 状态、类型、级别 | 枚举值要稳定,别频繁改 |
⚠️ 我曾经踩过一个坑:有个项目把「订单状态」设计成文本字段,结果前端展示时,有的写「已支付」,有的写「支付成功」,有的写「paid」。数据一查,乱得没法看。后来全部改成枚举,才消停。
4.2 关系建模:一对一、一对多、多对多
实体之间的关系,是数据模型的灵魂。你想想看,如果「订单」和「客户」之间没有关联,那订单是谁下的都不知道。
4.2.1 一对一关系
一对一,说白了就是一个萝卜一个坑。比如「用户」和「身份证信息」,一个用户只能有一个身份证,一个身份证只能属于一个用户。
实现方式很简单:在任意一张表里,加一个外键字段,指向另一张表的主键,并加上唯一约束。
-- 用户表
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(50)
);
-- 身份证表
CREATE TABLE id_card (
id INT PRIMARY KEY,
card_number VARCHAR(18),
user_id INT UNIQUE, -- 唯一约束保证一对一
FOREIGN KEY (user_id) REFERENCES user(id)
);
💡 我的习惯:一对一关系,我通常把外键放在「次要」的那张表里。比如身份证是用户的附属信息,就把外键放在身份证表。
4.2.2 一对多关系
这是最常用的关系。一个客户可以有多个订单,一个订单只能属于一个客户。实现方式就是在「多」的那张表里加外键。
-- 客户表
CREATE TABLE customer (
id INT PRIMARY KEY,
name VARCHAR(50)
);
-- 订单表
CREATE TABLE order (
id INT PRIMARY KEY,
amount DECIMAL(10,2),
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customer(id)
);
在低代码平台里,一对多关系通常表现为「主子表」或「关联列表」。比如在客户详情页,直接展示他的所有订单列表。
4.2.3 多对多关系
多对多关系,需要一张中间表来「搭桥」。比如「学生」和「课程」,一个学生可以选多门课,一门课也可以被多个学生选。
-- 学生表
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50)
);
-- 课程表
CREATE TABLE course (
id INT PRIMARY KEY,
title VARCHAR(100)
);
-- 中间表:选课记录
CREATE TABLE enrollment (
student_id INT,
course_id INT,
enroll_date DATE,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES student(id),
FOREIGN KEY (course_id) REFERENCES course(id)
);
🔑 关键点:中间表除了存两个外键,还可以存一些「关系本身的属性」。比如选课时间、成绩、是否退课等。这些属性既不属于学生,也不属于课程,而是属于「选课」这个关系。
4.3 数据源配置与数据绑定
模型建好了,怎么让页面用起来?这就涉及到数据源配置和数据绑定了。
4.3.1 数据源配置
数据源,就是告诉页面「你的数据从哪里来」。在低代码平台里,常见的数据源有:
- 实体数据源:直接绑定到某个实体,自动生成增删改查接口
- 视图数据源:基于多个实体关联查询,返回一个虚拟表
- API数据源:调用外部接口获取数据
- 静态数据源:写死的JSON数据,适合测试
我个人建议,能用实体数据源就别用API数据源。实体数据源自带权限控制、字段校验、关联查询,省心很多。
4.3.2 数据绑定
数据绑定,就是把数据源里的字段,映射到页面组件上。比如:
- 一个「输入框」绑定到「客户名称」字段
- 一个「下拉框」绑定到「订单状态」枚举
- 一个「表格」绑定到「订单列表」数据源
绑定的时候,有几点要注意:
- 双向绑定 vs 单向绑定:表单输入用双向绑定,展示列表用单向绑定
- 数据格式转换:后端返回的时间戳,前端要转成「2024-01-01」格式
- 空值处理:字段可能为空,页面要显示「--」或「暂无数据」
💡 一个小技巧:在低代码平台里,我习惯先建一个「测试页面」,把所有字段都拖出来展示一遍。看看数据对不对,格式对不对,关联对不对。确认无误后,再开始做正式页面。这一步能省下后面80%的调试时间。
4.4 总结一下
数据模型设计,其实就三件事:
- 实体与字段:用最严格的类型,存最准确的数据
- 关系建模:一对一、一对多、多对多,选对关系,用好外键和中间表
- 数据源与绑定:配置好数据来源,把字段映射到页面组件上
嗯,这一章的内容就到这里。下一章我们聊聊「页面布局与组件编排」,看看怎么把数据漂亮地展示出来。