标签: 3nf

简单来说3NF和BCNF之间的区别(必须能够解释为8岁)

我已经阅读了引用: 数据取决于键[1NF],整个键[2NF],只有键[3NF].

但是,我无法理解3.5NF或BCNF.这是我的理解:

  • BCNF比3NF更严格
  • 表中任何FD的左侧必须是超级键(或至少是候选键)

那么为什么有些3NF表不在BCNF中呢?我的意思是,3NF引用明确地说"除了密钥之外",意味着所有属性仅仅依赖于主键.毕竟,主键是候选键,直到它被选为我们的主键.

如果到目前为止我的理解有任何不妥之处,请纠正我并感谢您提供的任何帮助.

database relational-database 3nf database-normalization

148
推荐指数
6
解决办法
18万
查看次数

3NF和BCNF有什么区别?

有人可以向我解释3NF和BCNF之间的区别吗?如果您还可以提供一些示例,那就太棒了.谢谢.

database-design relational-database 3nf database-normalization bcnf

33
推荐指数
1
解决办法
8万
查看次数

具有多个表的内部联接

我有这四个表:

PRODUCTS
---------
PRODUCT_ID
PRODUCT_TITLE
(other fields)

COLORS
---------
COLOR_ID
COLOR_NAME

MATERIALS
---------
MATERIAL_ID
MATERIAL_NAME

IMAGES
---------
IMAGE_ID
BIG
MED
SMALL
THUMB

SIZE
---------
SIZE_ID
SIZE_NAME
Run Code Online (Sandbox Code Playgroud)

并且:

PRODUCT_COLOR
---------
PRODUCT_ID
COLOR_ID

PRODUCT_MATERIAL
---------
PRODUCT_ID
MATERIAL_ID

PRODUCT_SIZE
---------
PRODUCT_ID
SIZE_ID

PRODUCT_IMAGE
---------
PRODUCT_ID
IMAGE_ID
COLOR_ID (can be null)
MATERIAL_ID (can be null)
Run Code Online (Sandbox Code Playgroud)

所有产品可以具有不同的颜色和/或材料.例如,我可以有一个产品有一个或多个材料选项但没有颜色关联,反之亦然.输出应该是这样的:

-----------------------------------------------------------------------------
| PRODUCT_ID | PRODUCT_NAME  | COLOR_ID | MATERIAL_ID | IMAGE_ID | SIZE_ID |
-----------------------------------------------------------------------------
| 1          | T-SHIRT       | 1        | null        | 1        | 1        | …
Run Code Online (Sandbox Code Playgroud)

sql join foreign-keys relational-database 3nf

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

这违反了什么样的规范化规则?

假设我在数据库上有两个表,T 10和T 11,分别有10和11列,其中10列在两者上完全相同.

我违反了什么(如果有的话)规范化规则?

relational-database 3nf database-normalization functional-dependencies

10
推荐指数
2
解决办法
831
查看次数

LINQ options.loadwith问题

我正在编写一个基于标签的ASP.net系统.使用以下db方案:

Topic <many-many> TagTopicMap <many-many> Tag

基本上,我从以下方面找到了3NF方法(toxi):http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html

这是我的代码片段:

DataLoadOptions options = new DataLoadOptions();
        options.LoadWith<Topic>(t => t.TagTopicMaps);
        options.LoadWith<TagTopicMap>(tt => tt.Tag);
        var db = new lcDbDataContext();
        db.LoadOptions = options;
        db.Log = w;

        var x = from topic in db.Topics
                orderby topic.dateAdded descending
                select topic;

        ViewData["TopicList"] = x.Take(10);
Run Code Online (Sandbox Code Playgroud)

当我执行它时,结果很好,但它提供了11个单个SQL查询,一个用于获取前10个主题的列表:

    SELECT TOP (10) [t0].[Id], [t0].[title], [t0].[dateAdded]
FROM [dbo].[Topics] AS [t0] ORDER BY [t0].[dateAdded] DESC
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.30729.1 
Run Code Online (Sandbox Code Playgroud)

其他10个用于单独获取标签的详细信息.

我试图打开和关闭两个loadwith语句,发现以下情况发生:

loadwith<topic> : no difference for on or off.
loadwith<tagtopicmap>: …
Run Code Online (Sandbox Code Playgroud)

c# linq 3nf linq-to-sql

8
推荐指数
1
解决办法
3672
查看次数

在3NF中找到关系但在BCNF中找不到关系

我一直在阅读许多关于如何区分3NF/BCNF关系的不同来源.到目前为止,这是我的理解......

我将以此关系为例......

R = {A, B, C, D, E}

F = {A -> B, B C - > E, E D -> A}.

首先,我们必须找到关系的关键.我用这个视频来帮助我做到这一点.我得到了

Keys = {ACD, BCD, CDE}

现在要确保RBCNF中,我们必须确保每个功能依赖的左侧F是其中之一Keys.我们立即知道情况并非如此,因为第一个FD是A -> B并且A不是其中一个键.所以它不在BCNF.

现在要确保R3NF中,我们必须确保每个函数依赖的左侧FKeys OR中的每个函数依赖的右侧之一F是其中一个的子集Keys.如果你看看每个FD的右侧,它们就是B,EA.这些都是a的子集Key,因此这意味着它在3NF中.

因此,这是一种罕见的情况(根据维基),其中存在关系3NF存在 …

database 3nf database-normalization functional-dependencies bcnf

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

了解3NF:请说明文

我正在研究一个示例问题,其中我们试图确定以下哪个关系处于第三范式(3NF).以下是我们给出的关系:

R1(ABCD)
ACD - > B AC - > D D - > C AC - > B.

R2(ABCD)
AB - > C ABD - > C ABC - > D AC - > D.

R3(ABCD)
C - > B A - > B CD - > A BCD - > A.

R4(ABCD)
C - > B B - > A AC - > D AC - > B.

我知道答案是R1在3NF,但我很难理解确定违反3NF的步骤.对于每个关系,有人可以用简单的英语分解吗?如果您能够告诉我每个关系如何违反3NF规则之一,那将非常有帮助:

  1. X - > A,则A是X的子集
  2. X是超级钥匙
  3. A是R的一些关键的一部分

对于R1,我采取的第一步是将其分解为闭包:

ACD + = …

database 3nf database-normalization

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

你如何规范一对一或其他关系?

我正在存储有关棒球统计数据的数据,并希望使用三个表格来执行此操作:player,battingStats和pitchingStats.出于问题的目的,每个玩家将有击球统计数据或投球统计数据,但不是两者都有.

我如何在3NF中规范这种关系?

normalization 3nf third-normal-form database-normalization

5
推荐指数
1
解决办法
1229
查看次数

将功能依赖性转换为第三范式

我有这个问题将关系模式分解为3NF中的一组模式.

我有这种关系模式:R =(A,B,C,D,E,F)
使用以下函数依赖关系集F:

A→ABCDEF
B→C
D→E

谁能帮我吗?

database normalization relational-database 3nf

3
推荐指数
1
解决办法
2139
查看次数

BCNF、3NF 和候选键

我在理解如何确定关系是否在 BCNF、3NF 中以及通常识别关系的候选键时遇到问题。

考虑R = (A, B, C, D)与函数依赖关系:

AB -> C
C -> D
D -> A
Run Code Online (Sandbox Code Playgroud)

问题包括:

一种。列出 R
b的候选键。确定 R 是否在 BCNF 或 3NF 中。

解决方案解决

一种。R 的 3 个候选键是 AB、BC 和 BD。
湾 R 属于 3NF,但不属于 BCNF。

我已经阅读了 3NF 和 BCNF 有什么区别?并且在引用数据库模式中的非任意词时可以理解 3NF 和 BCNF 之间的区别。正如问题中给出的那样,在尝试确定具有减少关系的关系时,我最终迷失了方向。

有人能解释一下上面的候选键是如何确定的,为什么 R 在 3NF 而不是 BCNF?

database 3nf candidate-key bcnf

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

了解3NF

我目前在系统分析课程中,我想更好地理解规范化的使用.对于3NF,如果我正在处理包含学生ID,姓名,电话号码和专业的表格.我必须只使用学生证和学生证,因为学生姓名和电话号码都可以通过身份证找到.我明白了吗?

database analysis system normalization 3nf

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

什么是递归DTD?如果可能的话

我试图找到一个递归的DTD和一个有效的XML数据文件.现有验证器是否能够验证递归DTD?我希望能够在该XML文件之后执行XQueries.

xml dtd xquery 3nf

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