Skip to content

Latest commit

 

History

History
23 lines (21 loc) · 1.03 KB

database-mysql.md

File metadata and controls

23 lines (21 loc) · 1.03 KB

数据库设计

  • 每张表的建表语句中必须包含创建时间(created_at)和更新时间(updated_at)两个字段
  • 时间字段的精度CURRENT_TIMESTAMP(3)
  • 默认添加外键索引(命名i_xxx),默认没有外键约束
  • 若业务规则中明确指定字段不能重复,则需要加对应的UNIQUE INDEX(命名uni_xxx_xxx)
  • 表中字段若为VARCHAR类型,用空字符串NOT NULL DEFAULT ''代替NULL。这样可以统一查询语句,无需针对null或non-null额外处理

示例

CREATE TABLE `group_member`
(
    `id`         VARCHAR(36)  NOT NULL PRIMARY KEY,
    `group_id`   VARCHAR(36)  NOT NULL,
    `user_id`    VARCHAR(36)  NOT NULL,
    `role`       VARCHAR(10)  NOT NULL,
    `created_by` VARCHAR(36)  NOT NULL,
    `created_at` TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
    `updated_at` TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
    INDEX `i_group_id` (`group_id`),
    UNIQUE INDEX `uni_group_user` (`group_id`, `user_id`)
);