ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
简述:目前我们的表设计,最高级别是6NF,对于PHP程序而已,表设计满足3NF即可 如何满足3NF,首先得满足1NF,再满足2NF,再满足3NF即可。更高级别依次类推。 一、1NF定义 (1)、表的列不能再次被拆分(表的列具有原子性) (2)、表中不能有重复的列 特殊: (1)、只要是关系型数据,就天然满足1NF (2)、常见数据库 关系型数据库(Mysql,Oracle,Sql Server,Informix,DB2,Postgres) 非关系型数据库(NoSql,Redis,MongoDB) 二、2NF定义 (1)、表中的行数据,不可以有两条一模一样的行数据,一般表通过设计主键自增字段来进行解决这个问题 三、3NF定义 (1)、表的列信息可以被隐形或者显示的推导出来 假设:一个学生表,一个学生班级表,通过读取学生表中存储的班级表ID,进行左查询学生表中的学生班级表的详细信息,既满足学生班级表的详细信息 (2)、反3NF思维 假设:一个相册详情页,每张图片切换显示都需要记录每张图片的点击数,以及所有图片点击综合 表设计: album 表 id title viewclick album_pics id title viewclick album_id 表这样设计即可,按照正常3NF设计标准,album是不需要viewclick,而是直接读取album_pics中的数据然后count,但是album_pics是一个海量数据表,如果进行select操作是非常消耗资源的,所以我们使用反3NF设计标准,增加一个viewclick字段,每次图片增加一次记录数的时候album表的viewclick对应+1,可以通过PHP程序控制执行SQL语句,当然也可以创建触发器进行触发操作