数据库应用-NF^2 Modell(Non First Normal Form)

2024-03-26 12:48

本文主要是介绍数据库应用-NF^2 Modell(Non First Normal Form),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关系数据模型一方面很简单,直观,但另一方面它的表现力也因此受到限制。
它的属性与值之间不具备结构化关系。//是指不能属性嵌套吗??

1NF(erst Normalform)

1NF的要求是:关系的所有属性都是原子属性(Alle Attributwerte atomar)

NF2Modell

NF2modell 就是嵌套关系模型(geschachtelte Relationen)
嵌套关系刚好与1NF规则相反,他包含以下两层意思:
1.一个属性可以是另外一个属性的一员
2.属性值本身可以是另外一个关系
//只会输入一般图表,含嵌套属性的图表不知道怎么输入,就先跳了
NF2Modell 有更强的表现力,但相对的它的定义的难度也同时增加了

Schema

Schema就是一连串的属性(Schema ist Liste von Attributen)
每一个属性都有各自的值域
元组(Tupel)就是用来表示值的向量
R=(A1,...,An)AiU,1in:dom(R)=dom(A1)...dom(An)
R=(A1,...,An,R1,...,Rn):
dom(R)=dom(A1)...dom(An)2dom(R1)...2dom(Rn) //???
//U是何物至今未明??
问题:顺序决定值的意义
比如有两个R
R1=(Vorname,Nachname)
R2=(Nachname,Vorname)
当我们拿到一个Tupel(Stephan,Heinrich)时并不能很好的区分出姓和名
换句话说,我们能够把Tupel写得很模糊

Algebra of NF2

包括两部分:
1.与relation algebra相似的operation
//虽然作用相同,但在具体实施上差别还是很大的,比如projection一个内部属性
2.一些特有的operation,如:Nest,Unnest
nest就是生成子属性,比如 nB=(C,D)(r) 就表示把C和D作为B的子属性

A11122C11122D34433E33434

但应注意当其他属性值相同的项会发生合并,例如上表nest操作后B的一个值是(1,3,1,4)而不是(1,3)。换句话当使用操作 :σB=(1,4)(r1) 时,不能获得第一个项
另外nest的顺序不同,得到的结果也可能不同
unnest与nest的作用刚好相反,但是并非所有nest都是可逆的,比如
A11BC111D344

当他使用unnest时因为重复最终结果只剩下两项
我们把上面情况归为非PNF(Partitioned Normal Form)
从上面我们也可以知道光看Schema得话是没法分辨一个Relation是不是PNF

PNF(Partitioned Normal Form)

定义PNF:

这篇关于数据库应用-NF^2 Modell(Non First Normal Form)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848557

相关文章

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

CSS3 布局样式及其应用举例

《CSS3布局样式及其应用举例》CSS3的布局特性为前端开发者提供了无限可能,无论是Flexbox的一维布局还是Grid的二维布局,它们都能够帮助开发者以更清晰、简洁的方式实现复杂的网页布局,本文给... 目录深入探讨 css3 布局样式及其应用引言一、CSS布局的历史与发展1.1 早期布局的局限性1.2

在React聊天应用中实现图片上传功能

《在React聊天应用中实现图片上传功能》在现代聊天应用中,除了文字和表情,图片分享也是一个重要的功能,本文将详细介绍如何在基于React的聊天应用中实现图片上传和预览功能,感兴趣的小伙伴跟着小编一起... 目录技术栈实现步骤1. 消息组件改造2. 图片预览组件3. 聊天输入组件改造功能特点使用说明注意事项

Redis中RedisSearch使用及应用场景

《Redis中RedisSearch使用及应用场景》RedisSearch是一个强大的全文搜索和索引模块,可以为Redis添加高效的搜索功能,下面就来介绍一下RedisSearch使用及应用场景,感兴... 目录1. RedisSearch的基本概念2. RedisSearch的核心功能(1) 创建索引(2

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表