热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

T-SQL基础教程:集合理论

集合理论是由数学家GeorgCantor创建的,这是一个基于关系模型的数学分支。Cantor的集定义如下:集合,我们的意思是:任意集合体M是我们感知或想到的,能够确定的、互异对象m(称之为M的元素)的整体。──JosephW.Dauben和GeorgCantor(普林斯顿大学出版

集合理论是由数学家Georg Cantor创建的,这是一个基于关系模型的数学分支。Cantor的集定义如下: 集合,我们的意思是:任意集合体M是我们感知或想到的,能够确定的、互异对象m(称之为M的元素)的整体。 ──Joseph W. Dauben和Georg Cantor(普林斯顿大学出版

  集合理论是由数学家Georg Cantor创建的,这是一个基于关系模型的数学分支。Cantor的集定义如下:

  集合,我们的意思是:任意集合体M是我们感知或想到的,能够确定的、互异对象m(称之为M的元素)的整体。

  ──Joseph W. Dauben和Georg Cantor(普林斯顿大学出版社,1990年)

  定义中的每个字都有着深刻和重要意义。集合定义和集合从属关系是无需证明的公理,宇宙中的每个元素要么是集合成员,要么不是集合成员。

  让我们从Cantor定义中的每个词开始。一个“集合”应将其视为单个实体,你的焦点应该放在对象的集合上,而不是组成集合的单个对象上。然后,当你对数据库中的表(如雇员表)编写T-SQL查询时,你应该将雇员的集合看作是一个整体,而不是单个的雇员。这听起来可能并不重要并且很简单,但显然很多程序员很难采用这种思维方式。

  “互异”这个词的含义是指集合中的每个元素必须是唯一的。跳跃到数据库中的表,你可以通过定义键约束来强制表中行的唯一性。没有键的话,你就不能唯一地标识行,因此表也就不能取得“集合”资格。相反,该表将是一个多重集合或是一个无序的单位组。

  “我们感知或想到的”这句话意味着集合的定义是主观的。思考一下教室:一个人可以被认为是“人”的集合,也有可能被认为是“学生”或“教师”的集合。因此,在定义集合方面你具有很大的自由度。当你为数据库设计数据模型时,设计过程应仔细考虑应用程序的主观需求,从而为相关实体确定恰当的定义。

  至于“对象”,,集合的定义不是限制为像汽车或雇员这样的物理对象,而是相关的抽象对象,如质数或线条。

  Cantor的集合定义省略掉的内容很可能像所包含的内容一样重要。请注意,定义中没有提到集合元素间的任何顺序,集合元素的列出顺序并不重要。列出集合元素的正式标记符号是使用大括号:{a、b、c}。因为与顺序无关,你可以使用{b, a, c}或{b, c, a}表示同一集合。跳跃到属性(SQL中称之为列)集合,它们组成了关系(SQL中称之为表)的表头,元素应该是按名称标识──而不是按顺序位置标识。

  同样,思考一下元组(SQL中称之为行)的设置,它们构成了关系的主体,元素由其键值进行标识,而不是按位置标识。许多程序员很难适应这种观念,对于查询表而言,行之间没有顺序。换句话说,对表的查询可以按任意顺序返回表中的行,除非你基于特定展现目的,明确要求数据以特定方式的进行排序。

推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文详细介绍了如何使用libpq库与PostgreSQL后端建立连接。通过探讨PQconnectdb()函数的工作原理及其在实际应用中的使用方法,帮助读者理解并掌握建立高效、稳定的数据库连接的关键步骤。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 作为一名程序员,从大学步入职场后,常常感受到一种难以言喻的空虚感。这种感觉或许源于对生活的不满、职业发展的瓶颈,或是日常琐事带来的压力。本文将深入探讨这种复杂的情感,并尝试寻找解决之道。 ... [详细]
  • 深入解析:阿里实战 SpringCloud 微服务架构与应用
    本文将详细介绍 SpringCloud 在微服务架构中的应用,涵盖入门、实战和案例分析。通过丰富的代码示例和实际项目经验,帮助读者全面掌握 SpringCloud 的核心技术和最佳实践。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文深入探讨了C++对象模型中的一些细节问题,特别是虚拟继承和析构函数的处理。通过具体代码示例和详细分析,揭示了书中某些观点的不足之处,并提供了更合理的解释。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 深入理解Spring:Aware接口、异步编程与计划任务
    本文将带你深入了解Spring框架中的 Aware 接口、异步编程以及计划任务。通过具体示例和详细解释,帮助你掌握这些核心功能的实现原理和应用场景。 ... [详细]
author-avatar
昔日重来r_510
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有