热门标签 | 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中不超过一个匹配的行,反之亦然。 如果相关列是主键或者具有唯一约束,则创建一对一关系。

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

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

    推荐阅读
    • 深入解析Java虚拟机(JVM)架构与原理
      本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
    • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
    • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
    • 由二叉树到贪心算法
      二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
    • 二维几何变换矩阵解析
      本文详细介绍了二维平面上的三种常见几何变换:平移、缩放和旋转。通过引入齐次坐标系,使得这些变换可以通过统一的矩阵乘法实现,从而简化了计算过程。文中不仅提供了理论推导,还附有Python代码示例,帮助读者更好地理解这些概念。 ... [详细]
    • ZooKeeper集群脑裂问题及其解决方案
      本文深入探讨了ZooKeeper集群中可能出现的脑裂问题,分析其成因,并提供了多种有效的解决方案,确保集群在高可用性环境下的稳定运行。 ... [详细]
    • Java 实现二维极点算法
      本文介绍了一种使用 Java 编程语言实现的二维极点算法。该算法用于从一组二维坐标中筛选出极点,适用于需要处理几何图形和空间数据的应用场景。文章不仅详细解释了算法的工作原理,还提供了完整的代码示例。 ... [详细]
    • 本文介绍如何利用栈数据结构在C++中判断字符串中的括号是否匹配。通过顺序栈和链栈两种方式实现,并详细解释了算法的核心思想和具体实现步骤。 ... [详细]
    • 如何使用Ping命令来测试网络连接?当网卡安装和有关参数配置完成后,可以使用ping命令来测试一下网络是否连接成功。以winXP为例1、打开XP下DOS窗口具体操作是点击“开始”菜 ... [详细]
    • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
    • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
    • Java EE开发技术课程学习平台设计与实现
      本文详细介绍了一款基于Java EE开发技术的在线学习平台,涵盖系统设计、流程分析、功能模块及源码分享等内容,提供从需求分析到部署的全面指导。 ... [详细]
    • 智能医疗,即通过先进的物联网技术和信息平台,实现患者、医护人员和医疗机构之间的高效互动。它不仅提升了医疗服务的便捷性和质量,还推动了整个医疗行业的现代化进程。 ... [详细]
    • 本文回顾了2017年的转型和2018年的收获,分享了几家知名互联网公司提供的工作机会及面试体验。 ... [详细]
    • 本文探讨了通过爬虫技术判断网站是否已登录的方法,重点分析了Cookies和Token在登录状态验证中的作用。 ... [详细]
    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社区 版权所有