NestJS实战03-表结构设计

by 雪隐 from juejin.cn/user/143341...

本文欢迎分享与聚合,全文转载就不必了,尊重版权,圈子就这么大,若急用可联系授权

概要

简单的聊一聊我自己的需求,我的需求,我需要一个当日要完成任务的列表,有任务名任务内容和是否完成的状态,长期目标的话,除了这些字段以外还有截止日期和是否警告之类的内容。另外,我不想让我的接口直接暴露在网上,所以做了一个简单的用户表,做一点安全措施。

表设计的原则

表设计的原则是在数据库中创建适当的表结构,以满足应用程序的需求,同时确保数据的一致性、完整性和性能。以下是一些表设计的重要原则:

  1. 明确定义表的目的

    • 在设计表之前,要明确表的目的和用途,了解它们将存储哪些数据以及如何使用这些数据。
  2. 遵循范式

    • 数据库设计中常用的范式包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。范式有助于减少数据冗余,提高数据一致性。
  3. 选择适当的数据类型

    • 选择合适的数据类型来存储每个字段的数据,以最小化存储空间的使用并确保数据的准确性。常见的数据类型包括整数、浮点数、字符串、日期时间等。
  4. 使用主键

    • 每个表应该有一个主键,用于唯一标识每一行数据。主键可以是单个字段或多个字段的组合。
  5. 使用外键

    • 使用外键来建立表之间的关系,确保数据的引用完整性。外键通常与其他表的主键关联。
  6. 建立索引

    • 在常用于搜索和筛选的字段上创建索引,以提高查询性能。但要谨慎使用索引,因为它们可能会增加插入、更新和删除操作的成本。
  7. 避免使用保留字

    • 避免在表和字段命名中使用数据库系统的保留字,以免引发错误。
  8. 考虑性能

    • 根据应用程序的需求和数据量,设计表结构以优化查询性能。这可能包括分区表、缓存和其他性能优化策略。
  9. 考虑扩展性

    • 设计表结构时要考虑未来的扩展需求。尽量避免频繁地修改表结构,以减少维护成本。
  10. 文档化表结构

    • 记录表的设计和字段的含义,以便未来的开发人员能够理解和维护数据库。
  11. 安全性

    • 考虑数据的安全性,确保只有授权用户可以访问敏感数据。使用角色、权限和加密来加强安全性。
  12. 备份和恢复策略

    • 设计表结构时要考虑定期备份和恢复数据库的策略,以应对数据丢失或损坏的情况。
  13. 性能测试

    • 在实际使用前对表结构进行性能测试,以确保它们能够满足应用程序的需求。

综上所述,好的表设计需要综合考虑数据的结构、关系、性能、安全性和扩展性等多个方面,以确保数据库能够有效地支持应用程序的功能和需求。这个网站的需求比较简单,所以关于上面的内容考虑不是很多,但是大型项目或者表结构比较复杂的情况下,请仔细考虑表的结构。

表结构

用户表

用户表用于存储系统的用户信息,包括他们的用户名和密码。用户状态字段用于标识用户是否正常可用。

表结构:

字段名 类型 说明 备注
username 字符串 用户名
password 字符串 密码
status 数字 用户状态 1:正常 2:不可使用

当日任务表

当日任务表用于存储用户当日需要完成的任务。每个任务包括任务名字、任务内容以及是否已完成的状态。

表结构:

字段名 类型 说明 备注
title 字符串 任务名字
content 字符串 任务内容
isCompleted 布尔型 是否完成 默认值:false

长期目标以及任务

长期目标以及任务表用于存储用户的长期目标以及与这些目标相关的任务。每个长期目标包括目标标题、目标内容、截止日期、是否完成以及是否已警告等字段。

表结构:

字段名 类型 说明 备注
title 字符串 目标标题
content 字符串 目标内容
deadline 日期 目标截止日期
isCompleted 布尔型 是否完成 默认值:false
isWarned 布尔型 是否已警告(例如,如果超过了截止日期) 默认值:false

总结

我的表设计的想法已经全部给到大家了,接下的下一节会参照官网Mongo来接入Mongo表。谢谢大家的支持。

相关推荐
To_OC8 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
To_OC8 小时前
LC 17 电话号码的字母组合:我的回溯算法,就是从这道题开窍的
javascript·算法·leetcode
vipbic8 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy8 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志9 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble10 小时前
c端系统,其实更像一个信息展示平台
前端
你怎么知道我是队长10 小时前
JavaScript的变量和数据类型介绍
开发语言·javascript·ecmascript
李姆斯11 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
名字还没想好☜11 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司12 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能