设计一个数据库首先要对其进行需求,然后在设计数据表。
数据库设计的三大范式:
第一范式:列的原子性,即每一列是不可再拆分的;
第二范式:表里面的每一列都应该与主键有关系;
第三范式:表里面的每一列都应该与主键有直接关系;
如果在设计数据表时使用到自增长列则会不满足第二范式和第三范式,所以可以不按照三大范式设计,一般用于解决一些较麻烦的问题。
例:制作好友聊天功能:
需求分析:注册、登录、查找功能、加好友功能、聊天功能。
表格设计:
可用到三张表:
表一:用户表(注册、登录),使用用户名(varchar)、密码(varchar)、昵称(varchar)三列,用户名为主键;
表二:好友关系表(查找、加好友),使用用户1(本用户)(varchar,关联表一用户名)、用户2(其他用户)(varchar,关联表一用户名)、关系(设置好友、黑名单等)(int,好友为0,黑名单为1等),需要设计一个自增长列为主键;
表三:聊天记录表(聊天),使用用户1(发送者)(varchar,关联表一用户名)、用户二(接受者)(varchar,关联表一用户名)、发送的信息(text),还可加入发送时间(varchar)、消息状态(int,已读为0,未读为1)等功能,设置自增长列为主键。