Mysql数据库/表名/字段命名规则及数据类型选择

Nan (/)
2021-11-03T16:42:00+08:00

好的數據庫結構會加快數據庫響應時間/節省磁盤空間/便于管理，以下是優化後的mysql數據庫範例一. 命名规则表名/字段全部小写 ,多个单词下划线分割user / user_name禁止使用数据...

好的數據庫結構會加快數據庫響應時間/節省磁盤空間/便于管理，以下是優化後的mysql數據庫範例

一. 命名规则

表名/字段全部小写 ,多个单词下划线分割

user / user_name

禁止使用數據庫保留關鍵字

表名不應超過3個單詞

用單數形式

user

表名/字段名必須體現內容信息,提高可讀性

字段盡量不可爲空，可爲空必須指定默認值

二. 字段类型选择及长度

--
-- 表的结构 `user`
--

CREATE TABLE `user` (
  `user_id` int(20) NOT NULL,
  `user_name` varchar(60) NOT NULL,
  `user_phone` char(11) NOT NULL,
  `user_auth_key` char(32) NOT NULL,
  `user_password_hash` char(60) NOT NULL,
  `user_password_rese_token` char(60) DEFAULT NULL,
  `user_verification_token` varchar(60) NOT NULL,
  `user_email` varchar(100) NOT NULL,
  `user_avatar_path` varchar(140) DEFAULT NULL,
  `user_status` tinyint(1) DEFAULT 1,
  `created_at` int(10) DEFAULT NULL,
  `updated_at` int(10) DEFAULT NULL,
  `user_info_login_ip` varchar(100) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

三. 为每个表指定主键 PRIMARY KEY / INDEX 唯一/ UNIQUE 索引

每個表只能定義一個主鍵

每個表必須指定一個: PRIMARY KEY 自增主鍵(主鍵即不可重複/不可爲空/索引)

-- 说明
ALTER TABLE `表名` ADD PRIMARY KEY(`字段名`);

搜索時需要用到的字段指定爲: INDEX 索引

-- 说明
ALTER TABLE `表名` ADD INDEX(`字段名`);

不可重複空的字段指定爲: UNIQUE 唯一

-- 说明
ALTER TABLE `表名` ADD UNIQUE(`字段名`);

四. 外键约束

外键约束（FOREIGN KEY）是表的一个特殊字段，经常与主键约束一起使用。对于两个具有关联关系的表而言，相关联字段中主键所在的表就是主表（父表），外键所在的表就是从表（子表）

-- 说明
ALTER TABLE `内键表名`
ADD CONSTRAINT `外键名` FOREIGN KEY (`内键字段名`) REFERENCES `外键表名` (`外建字段名`);
-- 范例
ALTER TABLE `user_info`
ADD CONSTRAINT `UserInfo` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`),