相关疑难解决方法(0)

标准化 - 2NF对3NF

苦苦挣扎,看看他们之间的差异.我知道我们说2NF是"全键"而3NF"只不过是关键".

Smashery参考了这个伟大的答案:数据库设计中的1NF,2NF和3NF是什么?

用于3NF的示例与2NF完全相同 - 它是一个仅依赖于一个键属性的字段.3NF的例子与2NF的例子有何不同?

谢谢

database database-design database-normalization

28
推荐指数
4
解决办法
3万
查看次数

规范化:"重复群体"是什么意思?

我已经阅读了不同的教程并看到了标准化的不同例子,特别是第一范式中"重复组"的概念.从他们那里我已经认识到,重复的群体是"有点"的多值属性(例如这里这里).

但是,在将ERM(实体关系模型)映射到RDM(关系数据模型)的过程中,我们已经通过在父表中包含外键来为每个多值属性创建单独的表?参考:这个

其次,那些"重复组"基本上是在同一行中水平排列,还是可以在同一列中反复出现相同的值,即一次又一次地出现属性的相同值,也是一个重复的组,应该被消除?

在此输入图像描述 在此示例中,英语值一次又一次地重复.这是一个重复的群体吗?如果我删除它以使用Subject Name和Module_ID(外键)创建另一个表SUBJECT,这就是我得到的.当然它摆脱了重复的价值,但我不确定这是否是正确的.这样对吗? 在此输入图像描述

database database-design database-normalization

13
推荐指数
1
解决办法
4万
查看次数

如何根据其他列的值和选择在postgres中创建列?

我想在我的表中创建一个新字段(或两个),这是其他字段的串联,这似乎相对简单.但是我用什么case语法或if/when语法来帮助创建以下字段(GPA_TXT,和newfield)?

逻辑是:每个GPA应该是#.#,每个新字段应该是:

name & "-" & GPA_TXT & (
    case where GPA_TXT > 3.3
        set newfield = newfield & 'GradeA',
    case where GPA_TXT >2.7 and GPA_TXT < 3.3
        set newfield = newfield & "GradeB",
    etc...
)
Run Code Online (Sandbox Code Playgroud)

例如:

name         major     GPA(num) GPA_TXT   [newfield]
Bob          sci       2        02.0      Bob-sci-GradeC-02.0
Jane         chem      3.1      03.1      Jane-chem-GradeB-03.1
Charlie      phys      3.7      03.7      Charlie-phys-GradeA-03.7
Garfield     food      0        00.0      Garfield-food-GradeF-00.0
Run Code Online (Sandbox Code Playgroud)

所以我想我在这里有两个问题:

  1. 如何创建GPA TXT字段.
  2. 如何根据其他字段中的值编写case语句来计算字段.

如果有人可以通过示例或解释将我链接到资源,我会非常感激!我正在查看文档,但没有示例,没有任何地方.

postgresql

12
推荐指数
2
解决办法
2万
查看次数

任何人都可以用适当的例子向我解释1NF,2NF,3NF,BCNF规则吗?

这是一个常见的面试问题.我面对一次采访,面试官给了我一张桌子,并告诉他桌子的正常形式是什么?如果它在## NF中,那么将其标准化为下一个NF?

我总是对这些正常形式的数据库感到困惑.任何人都可以向我解释这些正常形式,以及如何将每个NF建模到表格中的适当示例,以便在我的下一次采访中有所帮助吗?

sql database database-design normalization

9
推荐指数
1
解决办法
2万
查看次数

什么是第二范式?

我对这些的非正式表述是:

1NF:表格被划分,以便任何项目都不会出现多次。

2NF:我需要一个明确的定义

3NF:值只能由主键确定。

我无法从网上或书中找到的摘录中理解它。如何区分 1NF 和 2NF?

database database-normalization

4
推荐指数
1
解决办法
2587
查看次数