问题标签 [third-normal-form]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database-design - 范式 - 第四范式
我有这些数据需要放入第 3 和第 4 范式。
我了解范式的基础知识,但我对第 3 和第 4 范式感到困惑,我在网上查过但仍然不明白。
我正在创建一个系统正在使用的数据库。
database - 我的数据库表是否标准化为 3NF?
我需要确保我的架构在 3NF 中,但不太确定我的“学生家庭作业表”有人可以帮忙吗?
normalization - 归一化 - 2NF 和 3NF
https://dba.stackexchange.com/questions/98427/normilsation-2nf-and-3nf
我经历了几个问题和 youtube 教程;我知道 2NF 正在删除部分依赖项,而 3NF 是传递的,但我无法理解以下示例在 2NF 中应该是什么样子。
学生证 | 学生姓名 | 课程代码 | 课程名称 | 模组代码 | 模组标题 | 学分 | 结果代码
对于 2NF,我的尝试如下:
学生
学生证 | 学生姓名 | 课程代码 | 模组代码 | 结果代码
课程
课程代码 | 课程名称
模块
模组代码 | 模组标题 | 学分
它是否正确?如果没有,我哪里错了,为什么。
以下是3NF:
学生
学生证 | 学生姓名 | 科目编号
课程
课程代码 | 课程名称
模块
模组代码 | 模组标题 | 学分 | 科目编号
结果
学生证 | 模组代码 | 结果代码
这也是一样;这是正确的 - 如果不是,为什么?
database - 难以分解为第三范式 (DB)
我最近开始研究数据库,但我正在努力解决这个特定的部分。
我已经阅读了每个的定义,Normal Form
但我似乎仍然无法理解。这是我无法正确解决的示例:
解决方案:R1(*A*,B,E); R2(*B*,C,D); R3(*A*,*F*)
我不明白为什么R3
会这样
database - 3NF什么时候出?
我很难理解 3 Normal 形式。
3 NF:2 NF + 无转换
所以,例如:如果我有,
那么上面是一种过渡关系,因此不会在 3 NF 中?我理解正确吗?
但是在这个答案中,数据库规范化到底是做什么的?, by paxdiablo
, 它说,
Third normal form (3NF) - 2NF and every non-key column in a table depends on nothing but the key.
据此,它将在3 NF中。我哪里错了?
database-design - 第四范式有什么好处?
我用谷歌搜索了很多,但我没有找到这个问题的答案。
前三个范式是常识。它们用于保存一致性并避免异常。但是为什么我们需要 BCNF 和第四范式呢?
(第五个我都不敢问了,因为我连它的作用都不懂)
mysql - 3NF和多对多表mysql
作为评估的一部分,我需要用 PHP 构建一个依赖于数据库的站点,该站点可以在我们想要的任何东西上。该站点的唯一限制是数据库必须至少有七个表,必须是第三范式并且至少有一个多对多表。
以下是我到目前为止的模式,我希望人们愿意告诉我它不是第三范式的地方,或者我的多对多表(游戏)是否不起作用。
我对第三范式的理解是,每个项目都必须依赖于主键,没有候选键。
想法?
sql - 关系的第三个 (?) 范式
假设我有一个网站,任何人都可以在其中买卖商品,并且 2 个注册用户可以互相发送有关产品的消息。我的数据库中的关系之一是:
当然,发件人或收件人之一应该是产品的卖方或买方。我的问题是这种关系是否处于第三范式。当然它是第二范式,因为每个非键列在功能上都完全依赖于主键。
示例:假设userB
是产品的卖家(所有者)#1234
并且userA
是产品的卖家(所有者)#1000
。我们有下表:
显然,idObject
在上表中确定了产品的卖家。在每种情况下,卖方都必须在“发件人”列或“收件人”列中。关键是 [Sender] 或/和 [Recipient] 无法确定 idObject,如我们在上面的示例中所见。因此,我们有 3NF,因为所有非键列在功能上仅依赖于主键。
sql - sql 数据库:具有 2 列(id 名称)和 2 个主键的表 第三范式 Boyce-Codd 范式
想象一下下表。就我而言,我完全确定name
需要unique
和not null
[unique+not null = 主键]。因此name
是主键。由于某些原因(可能是习惯),我很自然地创建了一个id
int 类型的主键列。
其他假设:我绝对需要保留name
在我的表中,并且我绝对确定name
(类型varchar
)永远不会超过 20 个字符。
现在我的第一个问题是[可能是肯定或否的接近问题]:如果我创建这样一个表,我是否尊重 BCNF Boyce-Codd 范式?
id
第二个可选问题[可能是开放式问题]:在这种情况下创建列是一种好习惯吗?