当前位置: 首页 > 面试题库 >

MYSQL中的规范化

法池暝
2023-03-14
问题内容

任何人都可以帮助我了解什么是mysql中的规范化,在这种情况下以及我们需要如何使用它。

提前致谢。


问题答案:

我试图在这里尝试用外行术语解释标准化。首先,它适用于关系数据库(Oracle,Access,MySQL),因此不仅适用于MySQL。

规范化是要确保每个表都只有最小的字段并摆脱依赖关系。假设您有一个员工记录,而每个员工都属于一个部门。如果将部门与员工的其他数据一起存储为字段,则会遇到问题-
如果删除部门,会发生什么?您必须更新所有部门字段,并且有机会出错。如果某些员工没有部门(也许是新分配的)怎么办?现在将有空值。

因此,简而言之,标准化是要避免字段为空,并确保表中的所有字段仅属于所描述数据的一个域。例如,在雇员表中,这些字段可以是ID,姓名,社会保险号,但是这三个字段与部门无关。仅员工ID描述该员工所属的部门。因此,这意味着员工所在的部门应该在另一个表中。

这是一个简单的规范化过程。

EMPLOYEE ( < employee_id >, name, social_security, department_name)

如所解释的,这没有被标准化。规范化的形式可能看起来像

EMPLOYEE ( < employee_id >, name, social_security)

在这里,Employee表仅负责一组数据。那么,我们在哪里存储员工所属的部门?在另一张桌子

EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )

这不是最佳的。如果部门名称更改怎么办?(美国政府一直在发生这种情况)。因此最好这样做

EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )

有第一范式,第二范式和第三范式。但是,除非您正在学习数据库课程,否则我通常只会采用我能理解的最规范的形式。

希望这可以帮助。



 类似资料:
  • 问题内容: 我正在尝试运行此查询: 它只是返回两个日期相等的对象,而忽略时间部分。 但我收到: {“功能[数据库] .TruncateTime不存在”} 堆栈跟踪: 我在用着: C#Visual Studio 2010 EntityFramework 4数据库优先 网络框架4 MYSQL服务器5.6 MySQL.Data和MySQL.Data.Entity的版本是6.6.5.0 MySQL支持Tr

  • 在TensorFlow中执行批量规格化的正确方法是什么?(即,我不想计算连续均值和方差)。我当前的实现基于tf。nn。batch\u normalization(批次规格化),其中x是具有形状的卷积层的输出。[批次大小、宽度、高度、通道数]。我想在通道方面执行批处理规范。 但这种实施的结果非常糟糕。与tensorflow比较。承包商。苗条的batch\u norm显示其票价较低(同样糟糕的培训表现

  • Number,String,Boolean和Object 不要使用如下类型Number,String,Boolean或Object。 这些类型指的是非原始的装盒对象,它们几乎没在JavaScript代码里正确地使用过。 /* 错误 */ function reverse(s: String): String; 应该使用类型number,string,and boolean。 /* OK */ fu

  • 参数规范 参数前带* 表示必填 参数命名采用小写加下划线形式 请求每个接口时,在 header里带上 XX-Token(用户 token),XX-Device-Type(类型:mobile,android,iphone,ipad,web,pc,mac,wxapp),XX-Api-Version(比如1.0.0),XX-Wxapp-AppId(小程序 AppId) 返回结果 参数命名采用小写加下划线

  • 上一小节介绍了如何设计数据表,并合理选择字段数据类型新建数据表,本小节来介绍数据表的设计规范,主要遵循数据表设计三范式和适当的反范式化。 1.第一设计范式 第一设计范式要求表中字段都是不可再分的,如果实体中的某个属性有多个值时,必须拆分为不同的属性 。通俗理解即一个字段只存储一项信息,如下图所示,其中联系方式可以拆分为手机、邮箱、固定电话,所以下图不符合数据表第一设计范式要求: 纠正之后符合第一设

  • HashMap将其数据保存在存储桶中,如下所示: 要在HashMap中放置一些东西,我们需要一个hash()函数,它返回从0到table.length()范围内的关键哈希,对吗? 假设我有: 这将返回以下内容: 字符串本机哈希代码:46882035,哈希映射哈希:46882360 我们应该有大约256个桶(所以关键的散列应该在0到256的范围内),但是HashMap中的内部散列给了我们468823