热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Access关联数据

在这一章中,我们将了解学习相关数据的基础知识。在讨论和创建不同数据之间的关系之前,让我们来看看为什么需要关联数据。这一切都回归规范化。规范化数据库规范化或简单规范化是组织关系数据库

在这一章中,我们将了解学习相关数据的基础知识。 在讨论和创建不同数据之间的关系之前,让我们来看看为什么需要关联数据。 这一切都回归规范化。

规范化

数据库规范化或简单规范化是组织关系数据库的列(属性)和表(关系)以最小化数据冗余的过程。 这是将数据分解到多个表格以提高整体性能,完整性和持久性的过程。

  • 规范化是在数据库中组织数据的过程。
  • 这包括创建表并根据设计的规则在这些表之间建立关系,以保护数据并通过消除冗余和不一致的依赖性来使数据库更加灵活。

下面来看看下面的包含数据的表格,但问题是这个数据是相当多余的,这增加了输入数据时输入错误和不一致的机会。

客户编号名字地址饼干数量价格总计
1Ethel Minsu12 Main St, Arlington, VA 22201 S巧克力片5¥2.00¥10.00
2Tom Wilber1234 Oak Dr., Pekin, IL 61555巧克力片3¥2.00¥6.00
3Ethil Minsuy12 Main St., Arlington, VA 22201巧克力片5¥2.00¥10.00

为了解决这个问题,需要重构数据并将其分解成多个表格,以消除一些冗余,如下三个表格所示。
《Access关联数据》

在这里,有三个表:第一个是:tblCustomers表,第二个是:tblOrders表,第三个是:COOKIEs表。

这里的问题是,仅仅通过拆分多个表中的数据将无助于告诉某个表中的数据如何与另一个表中的数据相关联。要连接多个表中的数据,我们必须将外键添加到tblOrders表中。

定义关系

关系通过匹配主键列中的数据来工作,通常是两个表中具有相同名称的列。 在大多数情况下,该关系与一个表中的主键相匹配,该表为每行提供一个唯一的标识符,在另一个表中的外键中包含一个条目。 表格之间有三种类型的关系。 所创建关系的类型取决于相关列的定义方式。

下面来看看这三种关系 –

1. 一对多的关系

一对多的关系是最常见的关系类型。 在这种类型的关系中,表A中的行可以在表B中具有许多匹配的行,但是表B中的行在表A中只能有一个匹配的行。

例如,客户和订单表具有一对多的关系:每个客户可以有很多订单,但每个订单仅来自(或属于)一个客户。

2. 多对多的关系

在多对多关系中,表A中的一行可以在表B中具有多个匹配的行,反之亦然。

可以通过定义第三个表(称为连接表)来创建这样的关系,该连接表的主键由来自表A和表B的外键组成。

例如,Customers表和COOKIEs表具有多对多的关系,这些关系由从这些表中的每个表到Orders表的一对多关系定义。

3. 一对一的关系

在一对一的关系中,表A中的一行可以在表B中不超过一个匹配的行,反之亦然。 如果相关列是主键或者具有唯一约束,则创建一对一关系。

这种类型的关系并不常见,因为大多数以这种方式相关的信息将全部在一个表中。可以使用一对一的关系来做以下工作 –

  • 将表分成许多列。
  • 出于安全原因隔离表的一部分。
  • 存储短暂的数据,只需删除该表即可轻松删除。
  • 存储仅适用于主表的子集的信息。

    推荐阅读
    • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
    • 深入理解OAuth认证机制
      本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
    • 优化ListView性能
      本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
    • 数据库内核开发入门 | 搭建研发环境的初步指南
      本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
    • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
    • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
    • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
    • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
    • C++实现经典排序算法
      本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
    • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
    • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
    • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
    • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
    • DNN Community 和 Professional 版本的主要差异
      本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
    • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
    author-avatar
    营营420_769
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有