数据库应用

1.数据库与ORM的关系

  • 数据库:是存储数据的地方,如MySQL、PostgreSQL等。它们使用SQL(结构化查询语言)来操作数据
  • ORM(对象关系映射):是一种技术,它允许你通过面向对象的方式来操作数据库,而不是直接编写SQL语句。ORM工具(如Sequelize、TypeORM)将数据库表映射为编程语言中的类(或模型),使得你可以用更自然的方式处理数据。
  • 学习基本的SQL:了解如何创建表、插入数据、查询数据等,这有助于更好地理解ORM的工作原理
  • 选择合适的ORM工具:根据你的项目需求和技术栈选择一个合适的ORM工具,并深入学习其文档

2.外键与关联

  • 外键含义:在设计数据库时,经常会遇到需要表示实体之间关系的情况,这时就需要使用外键
  • 创建外键:外键是数据表自带的功能,可以通过图形化界面创建,也可以通过SQL语句创建,也可以通过ORM进行定义(内部还是SQL)
  • 定义模型之间的关系:在Sequelize中,可以使用hasOne, belongsTo, hasMany, belongsToMany等方法来描述这些关系,MySql本身没有这种关联关系,它通过SQL语句例如LEFT JOIN进行关联

3.外键约束

  • 含义:当你定义一个外键时,可以指定四种不同的行为来控制 DELETE 和 UPDATE 操作
  • CASCADE:级联操作。如果父表中的记录被更新或删除,则相应的子表中的记录也会自动更新或删除。
  • SET NULL:将子表中的外键字段设置为 NULL。仅当外键字段允许 NULL 值时有效。
  • NO ACTION 或 RESTRICT:拒绝执行导致违反外键约束的操作。在 MySQL 中,这两个选项的行为是相同的。
  • SET DEFAULT:将子表中的外键字段设置为其默认值。注意,并不是所有的存储引擎都支持这个选项

4.ORM 框架

  • 含义:ORM 是 "Object-Relational Mapping" 的缩写,即对象关系映射,通俗的说,就是通过 ORM 让开发中可以使用熟悉的编程语言语法来执行常见的数据库操作,代替原生的SQL
  • sequelize 是一个基于 promise 的 Node.js ORM,他通过定义模型的形式(一个数据表对应一个模型),来操作数据表
  • 安装
  • 创建实例
  • 通过实例定义模型(数据表结构)
  • 同步模型
  • 调用模型,进行常用查询的操作

5.一些注意点

  • 树形结构的数据,存在子节点时,不得删除,防止数据不一致,也不允许修改节点位置
  • 父级角色取消勾选某些权限节点时,子级角色相关的节点权限需要一并删除

6.升级路线

阶段 可以做的事 目标
初级版 最简 CRUD + 基础权限 能跑起来
中级版 封装 service、拦截器、日志 更规范
高级版 多租户支持、软删除恢复、数据归档 更健壮
企业级 权限系统、审计日志、接口文档自动生成 可交付

7.ID 的选择

  • 如果系统是单体架构、无分布式数据库需求、对 ID 可读性要求高,自增 ID 是更优解,性能更优,可读性强,实现简单
  • 如果系统涉及分布式部署(多数据库节点)、数据迁移 / 合并、需隐藏数据量,可考虑 UUID,全局唯一,隐藏数据规模,便于数据迁移(无需担心 ID 重复,避免繁琐的 ID 重映射)
  • 关于id命名:主键推荐直接用 id,因为 users 表里的 id 当然就是 “user 的 id”,外键用 xx_id关联即可

8.字段命名

  • 推荐:数据库列名用下划线,代码用驼峰法,通过ORM自动完成转换(包括读取与写入)
  • Sequelize的配置方法:初始化实例时,通过define.underscored进行配置
const sequelize = new Sequelize('数据库名', '用户名', '密码', {
  host: 'localhost',
  dialect: 'mysql',

  // 🔥 在这里统一配置,所有模型都生效
  define: {
    underscored: true,        // 自动把 camelCase 转成 snake_case
  }
});
posted @ 2025-03-17 11:33  ---空白---  阅读(20)  评论(0)    收藏  举报