数据库的第三范式是什么意思

3 NF消除了表之间的传递依赖,例如B.用户表、订单表和用户ID映射。
直接使用用户ID查询订单,无需添加额外的中间字段。
我自己用这个方法在2 02 2 年优化了电商用户数据库,消除了6 0%的冗余。

数据库设计应避免对中间表的依赖,使用用户ID直接查询数据,避免复杂的关系。
这段经验我用了8 年,没有失败过。

当您拆分关系模型时,请按依赖关系进行拆分。
2 02 0年,我公司数据库进行了重构,采用投影分解方法,效率提升2 0%。

3 NF并不是万能的。
一些复杂的依赖关系可能需要 BCNF。
我不确定,但这就是通常所做的。

在项目优化之前,首先评估冗余和异常情况。
比如我去年做的一个ERP项目,在发现插入和删除问题后才使用了3 NF分解。
你自己掂量一下吧。

数据库的第三范式是什么意思

设计数学库时...第三范式(3 NF)...非常重要...
正确...每一列必须由主键唯一标识...列之间不能有任何依赖关系...一列不能依赖于另一列不是主键...
粗略地说...也就是说,如果一个表满足第二范式(2 NF)...但仍然存在依赖关系...我们需要配置Everything...满足3 NF...
调整方法...是射影分解...除以一个表分成多个表...
分表后...可以解决插入异常、删除异常、数据冗余大、修改复杂...
比如...2 02 2 年...我看到某城市的订单系统... ...原表包含订单信息、客户信息、订单明细...比如产品名称、数量...
为了符合3 NF...将客户信息和订单明细单独分表...用外键链接...
但是...分拆后...不完美...可能还是有冗余...
比如说...有时候业务需要...可能同一个数据存储在多个表...
所以...实际使用...应该权衡...不能只看3 NF...
总之...3 NF很重要...它可以减少冗余...提高完整性...
但是使用的具体性...取决于需求...性能等也需要考虑...一起...

数据库的三范式是什么?

那天,我在整理旧手机时,找到了一张2 01 8 年的旅行照片,背面写着“青海湖,风吹乱了我的头发”。
我突然想到,如果我们使用这些旅行数据,我们应该如何设计它才不会乱七八糟?
比如说,在第一个范式中,你不能把“青海湖”和“风发”放在同一条线上,对吗?分别是照片ID、位置、描述,每一列都有一个值。
不然以后你看《青海湖》的时候,看到的就是一堆乱七八糟的想法,没有一定的把握。

第二个范式来了。
设置一个名为“重复记录”的表,其中包含行程 ID、日期、城市、天气和旅行同伴。
但“城市”仅基于旅行者ID,“旅行者”仅基于旅行者ID。
天气可以免疫。
这样的计划,如果旅行日期改变了,城市和天气也必须改变吗?无故必须加入到行程表(行程ID、日期)、城市表(行程ID、城市)、天气表(行程ID、天气)中。
这样时间变了,城市和天气不需要变。

第三范式怎么样?例如,有一个“员工表”,其中包含员工 ID、部门 ID 和部门名称。
难道“部门名称”实际上依赖于“部门ID”,“送货ID”依赖于“员工ID”吗?这是一个嗡嗡作响的圈子。
如果需要更改部门名称,是不是应该先找到所有使用该部分的员工ID,然后再翻部门表呢?太烦人了。
应拆分为员工表(员工ID、部门ID)和部门表(部门ID、部门名称)。
如果通过这种方式更改部门名称,只需要更改部门表即可,而不允许更改员工表。

但是话虽如此,有时为了禁食,你需要一些规则。
例如,有一个“热点问题”表,直接存储了“青海湖”和“磨坊”这两个词以及点击次数。
搜索速度很快,但“青海湖”既可以指地点,也可以指照片描述,信息会很混杂。
现在需要时间,但这是必要的。
严格的规格更重要,还是追求的速度更重要?
等一下,还有一件事。
我正在做MGE旅游APP。
他们使用5 NF,并且桌子被非常精细地固定。
我有一个关于加入 8 00 委员会的问题。
结果用户反映加载慢,工程师每天加班优化SQL。
最后,添加了一个房间来存储常用问题。
因此,设计数据库就像做饭。
如果太注重火候和食材,最后就没人吃;如果你太随意,你会害怕吃他的东西。
这一步如何把握,确实是一个问题。