项目数据表设计

学习目标

  • 理解关系型数据库的基本概念:学习关系型数据库的基本概念,包括表、行、列、主键、外键、索引等。了解这些概念是进行数据表设计的基础。
  • 熟悉常用的数据类型:了解常见的数据类型,如整数、浮点数、字符串、日期时间等,并学习如何选择适当的数据类型以及如何处理数据类型转换和约束。
  • 了解索引的作用和使用:学习索引的概念、类型和使用场景。了解如何选择适当的字段作为索引,以提高查询性能和加速数据检索。

菜鸟教程数据表设计

1. 表设计

以下是一个基本的数据库表设计规范,以student_info表为例:

  1. CREATE TABLE student_info (
  2. id int(11) NOT NULL AUTO_INCREMENT,
  3. idSequence int(11) DEFAULT NULL COMMENT '自增id; 用于生成studentId, 10001+1',
  4. studentId varchar(255) DEFAULT NULL COMMENT '学生Id; S + idSequence ',
  5. name varchar(255) DEFAULT NULL COMMENT '学生姓名',
  6. gender varchar(255) DEFAULT NULL COMMENT '性别; 男, 女',
  7. age int(11) DEFAULT NULL COMMENT '年龄;',
  8. grade varchar(255) DEFAULT NULL COMMENT '年纪; 01,02,03,...',
  9. dateOfBirth varchar(255) DEFAULT NULL COMMENT '出生日期; 2008-08-06',
  10. operation varchar(255) DEFAULT 'insert' COMMENT '操作; insert, update, jhInsert, jhUpdate, jhDelete jhRestore',
  11. operationByUserId varchar(255) DEFAULT NULL COMMENT '操作者userId',
  12. operationByUser varchar(255) DEFAULT NULL COMMENT '操作者用户名',
  13. operationAt varchar(255) DEFAULT NULL COMMENT '操作时间; E.g: 2021-05-28T10:24:54+08:00 ',
  14. PRIMARY KEY (`id`) USING BTREE,
  15. UNIQUE KEY `studentId_unique` (`studentId`) USING BTREE
  16. ) ENGINE=InnoDB AUTO_INCREMENT=198 DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';

在设计表时,需要考虑以下几点:

  • 表名: 应该有明确的含义,以表达所存储的数据类型。
  • 列名: 应该简明扼要,使用驼峰命名。
  • 类型和长度:
    • 字符串使用varchar(255)
    • 日期使用varchar(255)
    • 大文本使用text
    • 数字类型使用int(11)
  • 主键: 使用id作为主键
  • 业务Id:
    • 业务Id可以设置索引(唯一索引/普通索引), 方便查询.
    • 业务Id自增使用 代码逻辑自增 idSequence, 然后设置 bizId="XX"+idSequence

2. view设计

在设计 MySQL 的 View 时,应注意以下规范:

  • 视图名称应当明确,能够表达视图的作用
  • 视图应当只包含必要的列,不应包含多余的列
  • 视图应尽可能使用表别名以提高可读性

下面是一个示例视图代码:

  1. CREATE VIEW my_view AS
  2. SELECT
  3. column1,
  4. column2,
  5. column3
  6. FROM
  7. table1
  8. JOIN table2 ON table1.id = table2.id
  9. WHERE
  10. column4 = 'value';

其中,my_view 是视图名称,column1column2column3 是视图包含的列,table1table2 是视图所涉及的表,column4 是过滤条件。

作业

  • 按照要求设计 客户表(customer)和 客户订单表(customer_order)
    • 客户表:记录客户的基本信息,包括客户ID、名称、地址、电话和邮箱。
    • 客户订单表:记录客户订单的基本信息,包括订单ID、客户ID、订单日期和订单总金额。