怎么创建数据库,如何建立一个简单的数据库

打开关系数据库的黑匣子关系数据库很棒。它们不仅在存储数据方面非常有效,而且还具有优美的基础数学理论。但是,尤其是当人们通过ORM使用数据库时,它看起来像一个黑匣子。打开黑匣子是掌握主题的绝佳方法,因此

打开关系数据库的黑匣子

关系数据库很棒。 它们不仅在存储数据方面非常有效,而且还具有优美的基础数学理论。 但是,尤其是当人们通过ORM使用数据库时,它看起来像一个黑匣子。 打开黑匣子是掌握主题的绝佳方法,因此,我决定深入研究并自己构建一个最小但功能齐全的关系数据库系统。 在这篇文章中,我将与您分享我的旅程。

我的目的不是展示SQL的幕后工作方式,而是展示关系数据库背后的基本原理。 即使希望更具体,也有几种SQL方言,例如PostgreSQL,MySQL等,它们之间可能会有很大的差异。

在深入研究实现之前,我们应该对基础数学对象有深入的了解。 那么,让我们谈谈真正的关系是什么!

关系

&34; —约翰·沃尔夫冈·冯·歌德

为了理解关系数据库,首先,我们将定义什么是关系。 从数学上讲,关系R超过集合

是其笛卡尔积的子集:

举个例子,<运算符是一个关系。 您可以将其视为所有自然数元组的集合,其中元组中的第一个元素小于第二个。 这实际上是在数学中定义<的方式。

一个更具体的示例将有助于掌握此抽象定义。 假设我们正在谈论公司中的员工。 每个员工都有一个唯一的ID,姓名,职位和薪水:

在此模型中,雇员是四个维度的向量:

员工关系就是其中的一组。 使用关系数据库术语,关系对应于一个表,并且关系的元素是该表中的记录。 在下文中,我将这些术语互换使用。

在Python中,我们将使用特殊字典和带有一组记录的表来对记录进行建模。 我们可以使用更复杂的东西(例如,熊猫数据框),但是这些将是完美的。 请注意,使用集时,不允许重复记录。

由于默认情况下字典是不可散列的,因此无法将它们插入集合中。 为了避免这种情况,我为Record类添加了一个哈希方法,该方法返回由dict获得的元组的哈希。

这样做很危险,因此我们应该小心。 因为字典是可变的,所以它们的&34;(如上所述)可以更改。 因此,如果将其放入集合中并更改其值之一,则哈希值将发生变化,并且由于Python中的集合在幕后使用哈希值,这可能会使事情变得混乱。 因此,为避免这种情况,我已通过覆盖__setitem__特殊方法来明确禁止修改记录。

为了处理更多数据,我们还将为任务表添加以下几列:id,employee_id,completed。 employee_id将描述ID为id的任务属于哪个员工,完成的只是一个布尔值,指示其状态。

CREATE DATABASE 数据库名称;在上述语法格式中,“CREATE DATABASE”是固定的SQL语句,专门用来创建数据库。“数据库名称”是唯一的,不可重复出现。例如下面我们创建一个名称为itcast的数据库,SQL语句如下所示:CREATE DATABASE 。

我们的表将是记录集,我们现在手动创建它们。

既然我们已经奠定了适当的基础,是时候来看一下使关系数据库起作用的原因了:操作。

关系代数:关系运算

如果我们没有办法检索和构造数据库中的信息,那么关系数据库将几乎无用。 通过在关系上应用运算符可以实现此任务。 关系代数是这些运算定义的数学结构。 确切地说,关系代数的元素是函数,其输入和输出是关系。

如果这听起来对您来说太抽象了,我们来看一些具体的例子!

选择

选择运算是最基本的运算符之一,它根据某些条件过滤关系。 表示为

其中C表示条件。 在我们的示例数据库中,条件可以是&34;。 可以将其视为一个获取记录并返回一个布尔值的函数,该布尔值指示是否已满足条件。

如果我们为雇员表应用条件&34;,这就是我们得到的。

投影

select运算符用于选择我们表中的记录。 但是,我们可能希望对列也应用过滤器,以删除不必要的信息。 这可以通过投影运算符完成。 用表示

其中S表示应保留的列列表。 这在我们的设置中也很容易实现。

当我们将employees表投影到id和name列时,就会发生这种情况。

改名

重命名列通常非常有用。 例如,我们两个表都有一个id列,这可能会引起一些歧义,因此需要重命名。

叉积

这是事情开始变得有趣的地方。 关系数据库的真正优势在于,您可以在多个表中组合信息,并可以通过查询这些组合表来回答复杂的问题。 最简单的方法是使用叉积,叉积以所有可能的方式将记录合并在一起。 我将在实现之前展示一个示例,以确保它清晰无误。

在这里,我们看到冲突的列名可能成为问题。 在取叉积之前,每个列的每个表都以表名作为前缀。

输入密码 创建数据库 代码:create database test;使用刚才创建的数据库 代码: use test;创建一张表 代码:create table user(id int not null,username varchar(100) not null,password varchar(100) not null,primary k。

叉积运算符用表示

您可能已经观察到跨产品组合信息而不考虑逻辑一致性。 跨产品表中的某些记录显示了一个雇员和属于另一个雇员的任务。 我们将在稍后使用联接时解决此问题。

1、选择服务视图,然后展开DataBase(数据库节点),右键点击JavaDB 2、启动服务器 3、然后在右键单击JavaDB,选择创建数据库 4、然后在弹出的对话框中填写相应的名称,写完后点击确定完成的数据的创建。

联合

因此,我们已经看到,使用叉积,我们可以&34;组合表。 很自然地期望相同的&34;,就像过滤行(选择)和列(项目)的情况一样。 这可以用联合运算符完成。

严格来讲,如何建立一个简单的数据库,当表具有不同的列时,此运算符实际上没有任何意义。 但是,有一个解决方案:可以用空值(例如None)填充缺少的列。

区别

我们的最后一个算子是差,它再次类似于集合理论的差。 它只是从另一个表中消除了一个表的行。

因为实现中的表是集合,所以我们可以简单地使用内置方法。

您可能会注意到交叉点被遗漏了。 这是因为交集可以用

要么

difference(left,difference(left,right))

在代码中。

相交运算符的情况不是唯一的。 实际上,所有相关运算符都可以作为前六个运算符的组合获得,我们将在后面看到。

在打开的Microsoft Access 2010软件中选中“空数据库”双击即可创建。或者打击“创建”命令按钮创建,其中文件名处可以选择指定具体的文件名和路径。创建空白数据库后可以看到一个新建了一个名为“表1”的数据表,界面右侧显示。

关系代数方面的SQL查询

SELECT name FROM employees WHERE salary > 60000

在我们的实现中,这等效于

因此,我们可以看到我们的工具功能强大,足以表达这些类型的查询。 但是,最整洁的事情仍然摆在我们面前。 为了能够回答有关我们数据的更复杂的问题(例如,那些没有完成任务的员工的平均工资是多少),我们需要能够智能地合并表格之间的信息。 这些都是通过联接完成的。

Join

Theta加盟

Theta join运算符只是叉积和选择运算的组合。 用表示

其中θ表示选择的条件。 例如,在employee [&39;]和task [&39;]匹配的条件下,雇员和任务的theta联接如下所示。

如您所见,这解决了跨产品问题,即给定记录中的任务不一定属于同一记录中的员工。

外连接

在某些情况下,即使在另一个表中没有逻辑上对应的元素,在连接过程中保留一些信息也是有用的。 这就是左/右/全外部联接运算符的作用。 我们将不做详细介绍,但是这些运算符会将theta联接中缺少的左/右/两个表中的行合并在一起。

查询是关系代数的元素

我们已经看到,大多数查询,甚至联接,都只能用六个运算符来表示:

· 选择

· 项目

怎么创建数据库

· 改名

· 叉积

· 联盟

创建数据库的方法有两种,使用向导创建数据库,使用菜单创建数据库和创建空数据库;使用向导创建数据库是一种简单便捷的方法。在物理上,数据库的建设要遵循实际情况。即在逻辑上建立一个整体的空间数据车、框架统一设计的同时。

· 区别

要查看更复杂的查询,让我们介绍第三个表,其中包含Dunder Mifflin Scranton的客户。 每个客户都有一个ID,一个姓名和一个contact_id,即联系员工的ID。

现在考虑以下查询:&34;

为了回答这个问题,我们必须合并来自所有三个表的信息。 思考我们需要采取的步骤是很有用的。 在这里,我们要

企业回目前互联网上常见的数据库管理软件有SYBASE、DB2、ORACLE、MySQL、ACES、Visual ;Foxpro、MS ;SQL ;Server、Informix、PostgreSQL这几种。数据库管理系统软件的种类有很多,常见的也很多,但是针对不同人群的不同需求,常用的数据库管理系统软件。

· 通过将employee和tasks表连接在一起,找到任务不完整的雇员。

· 将结果表连接到客户表以匹配客户名称以联系员工。

· 通过投影到&34;列来选择客户名称。

在代码中,这类似于以下内容。

无论多么复杂,每个查询都可以表示为一个称为表达式树的图形。

> Expression tree for the query "what are the names of the clients whose contacts have at least one

实际上,这不是执行此查询的唯一可能方法,还有其他解决方案。 例如,我们可以立即为所有三个表创建叉积,并使用一次选择过滤掉所需的记录。 使用SQL时,引擎会通过估算给定执行计划的所需成本并选择最适合您的方案来尝试优化查询。

从关系代数到SQL

关系代数只是冰山一角。 它为我们提供了代表查询的构造块,但是,它没有为我们提供寻找如何最佳表示查询的工具。 在幕后,SQL实际上使用关系演算,它本质上是一种基于关系代数的

资源资源

在搜寻过程中,我有两个出色的资源可以帮助我建立关系数据库:

· 珍妮弗·维多姆(Jennifer Widom)的数据库MOOC

· 关系数据库理论David Maier

上一篇 2023年01月17 04:28
下一篇 2023年01月21 16:33

相关推荐

  • 怎么设置彩色打印,打印机属性里找不到彩色打印

    去年夏天,当每一位西湖大学的首届本科生打开录取通知书礼盒时,都会惊喜地留意到入学留念牌上镶嵌的这幅别致的“科学见面礼”晶圆片小画。看起来平平无奇,实际上这幅画暗藏高科技玄机。因为这上面的彩色图案,没有

    2023年02月13 202
  • 乘法符号怎么打出来,手机微信×乘号怎么打出来

    在Excel中*的用处很大,在不同的场景所代表的意义又不大相同,手机微信×乘号怎么打出来,本期技巧妹与大家详细分享下相关的用法。,1、四则运算中的相乘这个比较好理解,就是在计算时用到的乘法符号,具体如

    2023年02月05 298
  • 微信公众号怎么排版,微信公众号布局和排版

    微信公众号要做到美观,要从字体、段落、标题、配图这几个方面入手,有很多已经被大众接受的排版规则,利用好排版编辑器,就可以做出美观大气的文章。排版美观的重要性:1、减轻读者的阅读压力很多人都是在挤地铁、

    2023年01月20 244
  • 怎么打开压缩文件,电脑上怎样打开压缩文件

    rar格式的文件是一种压缩包文件,它能压缩文件占用空间的大小及提高文件的安全性(加密)。有一些刚接触电脑的小伙伴不知道电脑rar文件怎么打开,电脑上怎样打开压缩文件,下面小编就来告诉你rar格式的文件

    2023年02月13 208
  • 苹果id怎么退出

    我们在使用Mac电脑的过程中,会注册自己的ID号并登录电脑,这样可以更加方便我们对电脑的操作。但是有时候会需要登录其他的ID号,这时候就要将之前登录的ID号给退出来。那么如何退出ID账号呢?接下来小编

    2023年02月12 247
  • 搜狗浏览器兼容模式怎么设置,搜狗网站兼容性设置怎么弄

    9月2日9:00——9月5日16:00是2022年下半年教师资格证的报名时间相信很多小伙伴都在抓紧时间进行报名其中大多数还是第一次报名的小伙伴难免会遇到各种各样的问题1,打开搜狗浏览器,进入搜狗浏览器

    2023年02月06 273
  • 微信怎么收钱,微信待你收款

    近日,有多名读者留言询问一直正常使用微信转账但有一天突然跳出提示页面要求上传身份证照片能输入吗?8就出现一个带收钱金额的二维码。如果是面对面,让对方用微信“扫一扫”功能,直接付款。如果不是面对面当场,

    2023年02月10 208
  • 白条怎么还款,京东白条开了可以关闭吗

    [闽南网]京东白条是京东商城的一款消费体验功能,相信很多经常使用京东商城的小伙伴们会很熟悉,如果您是京东会员的话延迟30天的免息还款,分期手续费是0.5%。不过对于初次接触的机友们而言不太清楚京东白条

    2023年02月10 211
  • linux怎么下载

    上一节介绍了linux的历史,本节一起来看看它的源代码树,然后我们尝试配置和编译内核。下载linux内核下载linux内核有两种方式,一是利用git下载,一是通过http下载。我都试了下,发现我的网络

    2023年02月04 206
  • 怎么连不上wifi,枫叶wifi配置连不上

    你有没有遇到过这种情况:去小伙伴家里做客,同一个WiFi,别人也能正常连接,自己却始终连不上?这背后到底有哪些不为人知的秘密?今天我就带你走近科学,揭秘连不上WiFi背后的“谜团”~找回失去的WiFi

    2023年02月13 222
  • mac怎么安装,mac怎么安装系统

    苹果电脑,其实搭载的都是自家的MACOS系统,虽然操作还是相当不错的,mac怎么安装系统,但是相比Windows,它在软件方面还是比较弱的,找不到需要的应用和游戏的情况时有发生,这也是为什么很多人想在

    2023年02月03 265
  • c4d怎么镜像,c4d模型镜像翻转

    c4d模型镜像翻转,有些时候,我们可能需要做镜像翻转之类的效果,在这一篇文章中,分享了几种如何在C4D软件中实现镜像效果的方法。使用对称造型器直接使用对称,是最普遍的实现方式了,而且这种方式算是非破坏

    2023年02月06 297
  • 怎么设置共享文件夹,如何共享文件夹给另一台电脑

    在学习或者工作中,经常会碰到文件传输的问题,如果设置好了共享文件夹,在局域网内的所有用户都可以随时去用里面的文件或资料,如何共享文件夹给另一台电脑,从而大大提高工作效率。下面将按照步骤教大家怎么设置共

    2023年01月17 266
关注微信