精华内容
下载资源
问答
  • SQL之表定义

    千次阅读 2018-01-30 20:25:20
    SQL:结构化查询语言 1、用create table命令定义SQL关系:  CREATE TABLE r  (A1 D1,A2 D2,……,An Dn,  ,  ……  

    SQL:结构化查询语言

    1、create table命令定义SQL关系:

                CREATE  TABLE r

                         A1 D1,A2 D2,……,An Dn,

                          <完整性约束1>,

                           ……

                          <完整性约束k>);

    其中,r是关系名,每个Ai是关系r模式中的一个属性名,Di是属性Ai的域

    2、完整性约束:

                 not null,一个属性上的not null约束表明在该属性上不允许空值

                 primary key (A1,……,An),声明表示属性A1,……,An构成关系的主码;主码属性必须非空且唯一。

                 foreign key(A1,……,Am)references,声明表示关系中任意元组在属性上(A1,……,Am)上的取值必须对应于关系s中某元组的主码属性上的取值

                 check(P),P是谓词条件

    3、基本模式定义

                 drop  table命令,从数据库中删除关于被去掉关系的所有信息

                      DROP TABLE  r;

                 alter  table命令,为已有关系增加属性

                      ALTER  TABLE  r  ADD  A  D;

                      其中,A是待添加属性的名字,D是待添加属性的域。关系中所有元组在新属性上的取值将被设为null

                 alter  table命令,从关系中去掉属性

                       ALTER  TABLE  r  DROP  A

                       但是很多数据库系统不支持次操作

                 还可用alter  table命令,修改关系中的属性,

                              如:ALTER  TABLE  instructor MODIFY  (ID char(10))

                                                           改变ID中的字符串长度

    4、SQL的数据定义语言用于创建具有特定模式的关系。除了声明关系属性的名称和类型之外,SQL还允许声明完整性约束,例如主码约束和外卖约束。


    Ctrl+S  保存

    Ctrl+X 剪切

    Ctrl+z  撤销

    Win+E 打开资源管理器

    Win+D 显示桌面

    Win+R运行

    Win+L 锁屏

    展开全文
  • 如何定义数据库之间的关系

    千次阅读 2006-04-21 15:56:00
    一旦完成了对这些数据元素的分类,对于数据的操作将依赖于这些数据之间的关系,通过这些数据之间的关系,就可以将这些数据通过某种有意义的方式联系在一起。例如,如果你不知道哪个用户下了订单
    
    

    特别说明
    数据库的正规化是关系型数据库理论的基础。随着数据库的正规化工作的完成,数据库中的各个数据表中的数据关系也就建立起来了。

    在设计关系型数据库时,最主要的一部分工作是将数据元素如何分配到各个关系数据表中。一旦完成了对这些数据元素的分类,对于数据的操作将依赖于这些数据表之间的关系,通过这些数据表之间的关系,就可以将这些数据通过某种有意义的方式联系在一起。例如,如果你不知道哪个用户下了订单,那么单独的订单信息是没有任何用处的。但是,你没有必要在同一个数据表中同时存储顾客和订单信息。你可以在两个关系数据表中分别存储顾客信息和订单信息,然后使用两个数据表之间的关系,可以同时查看数据表中每个订单以及其相关的客户信息。如果正规化的数据表是关系型数据库的基础的话,那么这些数据表之间的关系则是建立这些基础的基石。

    出发点
    下面的数据将要用在本文的例子中,用他们来说明如何定义数据库表之间的关系。通过Boyce-Codd Normal Form(BCNF)对数据进行正规化后,产生了七个关系表:

    Books: {Title*, ISBN, Price}
    Authors: {FirstName*, LastName*}
    ZIPCodes: {ZIPCode*}
    Categories: {Category*, Description}
    Publishers: {Publisher*}
    States: {State*}
    Cities: {City*}

    现在所需要做的工作就是说明如何在这些表之间建立关系。

    关系类型
    在家中,你与其他的成员一起存在着许多关系。例如,你和你的母亲是有关系的,你只有一位母亲,但是你母亲可能会有好几个孩子。你和你的兄弟姐妹是有关系的——你可能有很多兄弟和姐妹,同样,他们也有很多兄弟和姐妹。如果你已经结婚了,你和你的配偶都有一个配偶——这是相互的——但是一次只能有一个。在数据表这一级,数据库关系和上面所描述现象中的联系非常相似。有三种不同类型的关系:

    一对一:在这种关系中,关系表的每一边都只能存在一个记录。每个数据表中的关键字在对应的关系表中只能存在一个记录或者没有对应的记录。这种关系和一对配偶之间的关系非常相似——要么你已经结婚,你和你的配偶只能有一个配偶,要么你没有结婚没有配偶。大多数的一对一的关系都是某种商业规则约束的结果,而不是按照数据的自然属性来得到的。如果没有这些规则的约束,你通常可以把两个数据表合并进一个数据表,而且不会打破任何规范化的规则。

    一对多:主键数据表中只能含有一个记录,而在其关系表中这条记录可以与一个或者多个记录相关,也可以没有记录与之相关。这种关系类似于你和你的父母之间的关系。你只有一位母亲,但是你母亲可以有几个孩子。

    多对多:两个数据表里的每条记录都可以和另一个数据表里任意数量的记录(或者没有记录)相关。例如,如果你有多个兄弟姐妹,这对你的兄弟姐妹也是一样(有多个兄弟姐妹),多对多这种关系需要引入第三个数据表,这种数据表称为联系表或者连接表,因为关系型系统不能直接实现这种关系。

    建立关系
    在开始着手考虑建立关系表之间的关系之前,你可能需要对数据非常熟悉。只有在熟悉数据之后,关联会比你刚开始的时候更明显。你的数据库系统依赖于在两个数据表中找到的匹配值来建立关系。如果在数据库系统中发现了一个匹配值,系统将从两个数据表中提取数据并创建一个虚拟的记录。例如,你可能想要查看某个特定的作者所写的全部书籍,在本文中,系统将从“Books”和“Authors”这两个数据表中查找相关的匹配值。需要注意的是,在大多数情况下,查询的结果是动态的,这意味着对这条虚拟记录所做的任何改动都将可能作用到底层的数据表上,这一点是非常重要的。

    进行匹配的值都是主键和外键的值。(关系模型不要求一个关系必须对应的使用一个主键来确定。你可以使用数据表中的任何备选关键字来建立关系,但是使用主键是大家都已经接受的标准。)主键(primary key)唯一的识别表中的每个记录。而外键(foreign key)只是简单的将一个数据表中的主键存放在另外一个数据表中。同样地,对于你来说也不需要做太多的工作——只是简单地将主键加到关系表中,并将其定义为外键。

    唯一需要注意的是,外键字段的数据类型必须和主键的数据类型相同。但是有些系统可以允许这条规则有一个例外,它允许在数字和自动编号(autonumbering)字段(例如在SQL服务器系统中访问Identity和AutoNumber)之间建立关系。此外,外键的值可以是空(Null),尽管强烈建议在没有特别原因的情况下,不要让外键为空。你有可能永远都不会有机会来使用需要这项功能的数据库。

    现在回到我们的示例关系表,并开始输入合适的外键。(请继续在纸上打草稿——在你的数据库系统中创建真正的数据表还为时过早。要知道在纸上纠正错误要容易得多。)要记住,你正在把主键的值添加到关系表里。只要调用实体之间的关系就行了,而其他的就简单了:

    书籍和分类是有关系的。 书籍和出版社是有关系的。 书籍和作者是有关系的。 作者和邮政编码(ZIP)是有关系的。 邮政编码和城市是有关系的。

    城市和州是有关系的。

    这一步并不是一成不变的,你可能会发现在规范化的过程中加入外键会更容易一些。在把字段移动到一个新的数据表时,你可能要把这个新数据表的主键添加到原来的数据表里,将其作为外键。但是,在你继续规范化剩余数据的时候,外键常常会发生改变。你会发现在所有这些数据表被全部规范化之后,一次添加所有的外键,这样效率会更高。

    操作数据表
    现在让我们一次操作一个数据表,就从Books数据表开始,它在这个时候只有三个字段。很明显,Authors、Categories和Publishers数据表的主键会被添加到Books里。当你完成的时候,Books数据表就有了七个字段:

    Books
    Title (PK)
    ISBN (PK)

    Price
    FirstNameFK (FK) Authors.FirstName many-to-many
    LastNameFK (FK) Authors.LastName many-to-many
    CategoryFK (FK) Categories.Category many-to-many
    PublisherFK (FK) Publishers.Publisher one-to-many

    要记住,Authors数据表里的主键是一个基于姓和名两个字段的复合关键字。所以你必须要把这个两个字段都添加到Books数据表里。要注意,外键字段名的结尾包含有FK这个后缀。加入这个后缀有助于提高可读性和自我归档。通过名称这种方式来区别外键会使得追踪它们更简单。如果主键和外键的名称不同,这没有关系。

    这里出现了三种关系:Books和Authors、Books和Categories,以及Books和Publishers。这三种关系中所存在的两种问题可能没有那么明显:

    Books和Authors之间的关系:一本书可以有多个作者。

    Books和Categories之间的关系:一本书可以被归入多个类。

    这两者的关系是多对多的关系。先前我告诉过你,数据表不能直接实现这样的关系,而需要第三个联系表来实现。(Books和Publishers的关系是一对多的关系,就像现在所说的,这样是没有问题的。)

    这两个新发现的多对多关系将需要一个联系表来包含来自每个数据表的主键,并将其作为外键。新的联系表是:

    BooksAuthorsmmlink
    TitleFK (FK) Books.Title one-to-many
    ISBNFK (FK) Books.ISBN one-to-many
    FirstNameFK (FK) Authors.FirstName one-to-many
    LastNameFK (FK) Authors.LastName one-to-many

    BooksCategoriesmmlink
    TitleFK (FK) Books.Title one-to-many
    ISBNFK (FK) Books.ISBN one-to-many
    CategoryFK (FK) Categories.Category one-to-many

    没有必要更改Categories、Authors或者Publishers数据表。但是,你必须把FirstNameFK、LastNameFK和CategoryFK这三个外键从Books里移走:

    Books
    Title (PK)
    ISBN (PK)
    Price
    PublisherFK (FK) Publishers.Publisher one-to-many

    现在,让我们转到Authors数据表上来,它现在有两个字段。每个作者都和ZIPCodes数据表中的邮政编码的值相关。但是,每个邮政编码会和多个作者相关。要实现这种一对多的关系,就要把ZIPCodes数据表中的主键添加进Authors数据表作为外键:

    Authors
    FirstName (PK)
    LastName (PK)
    ZIPCodeFK (FK) ZIPCodes.ZIPCode one-to-many

    至此,你已经准备好了处理剩下的地址部分了。看到它们被分在不同的数据表里是很让人奇怪的,但是这是遵照BCNF正确规范化数据的结果。每个邮政编码的值只会有一个对应的城市值和州值。每个城市和州的值只会被输入进其对应的数据表里一次。ZIPCodes和Cities数据表需要外键字段来实现这些关系:

    ZIPCodes
    ZIPCode (PK)
    CityFK (FK) Cities.City one-to-many

    Cities
    City (PK)
    StateFK (FK) States.State one-to-many

    States
    State (PK)

    从一个到九个
    最后,你有了九个数据表:Books、Authors、Categories、Publishers、ZIPCodes、Cities、States、BooksAuthorsmmlink和BooksCategoriesmmlink。图A是这个示例数据表的数据库最终的图形形式。很难想像一个简单的数据表会被分成九个数据表。

    图A

    最初的一个数据表现在需要九个数据表了

    由于这个示例数据库很简单,你可能会问这些关系有什么作用。看起来仍在保存冗余的数据,只不过形式不同罢了——通过外键来实现。这是因为我们的数据表现在只有很少几个字段。试想一下有十几个字段的数据表,会是什么样的一个情形。需要承认的是,你仍然需要把数据表的主键作为外键保存进关系表里,但是至多可能最多增加一到两个字段。比较一下为这个数据表里的每一条记录都添加十几个条目的情形吧。(

    展开全文
  • C++定义单向链表定义与使用

    千次阅读 2019-05-02 10:27:11
    //define single-linked list: stuct ListNode{ ...其实简单说就是struct一个ListNode然后对节点设置类型,初始化next指针,最后将节点和指针的关系表示出来; 如何使用这样的单项列表呢? class ...
    //define single-linked list:
    stuct ListNode{
    		int val;
    		ListNode* next;
    		ListNode*(int x) :val(x),next(null){}
    		};
    

    其实简单说就是struct一个ListNode然后对节点设置类型,初始化next指针,最后将节点和指针的关系表示出来;
    如何使用这样的单项列表呢?

    class solution{
    public:
    ListNode* addtwoNum(ListNode* l1,ListNode* l2){
    		return addbybit(l1,l2,0);
    		}
    		};
    
    展开全文
  • Access 外键 定义表之间的关系 (MDB)

    千次阅读 2009-08-11 00:26:00
    定义表之间的关系 (MDB) 全部显示创建表之间的关系时,相关联的字段不一定要有相同的名称,但必须有相同的字段类型,除非主键字段是个“自动编号”字段。仅当“自动编号”字段与“数字”字段的“字段大小”属性相同...

     

    定义表之间的关系 (MDB)  

    创建表之间的关系时,相关联的字段不一定要有相同的名称,但必须有相同的字段类型,除非主键字段是个“自动编号”字段。仅当“自动编号”字段与“数字”字段的“字段大小”属性相同时,才可以将“自动编号”字段与“数字”字段进行匹配。例如,如果一个“自动编号”字段和一个“数字”字段的“字段大小”属性均为“长整型”,则它们是可以匹配的。即便两个字段都是“数字”字段,必须具有相同的“字段大小”属性设置,才是可以匹配的。

    隐藏定义一对多或一对一关系

    1. 关闭所有打开的表。不能在已打开的表之间创建或修改关系。
    2. 按 F11 切换到“数据库”窗口
    3. 单击工具栏上的“关系”
    4. 如果数据库中尚未定义任何关系,则会自动显示“显示表”对话框。

      如果需要添加要关联的表,而“显示表”对话框未显示,请单击工具栏上的“显示表”按钮图像

    5. 双击要作为相关表的名称,然后关闭“显示表”对话框。若要在表及其本身之间建立关系,请添加表两次。

    6. 从某个表中将所要的相关字段拖到其他表中的相关字段。

      若要拖动多个字段,请按下 Ctrl 并单击每一字段,然后拖动这些字段。

      多数情况下是将表中的主键字段(以粗体文本显示)拖到其他表中名为外键的相似字段(经常具有相同的名称)。

      将某一表中的一个字段拖到另一表中的相应字段。

    7. 系统将显示“编辑关系”对话框。请检查显示在两个列中的字段名称以确保正确性。必要情况下可以进行更改。

      根据需要设置关系选项。

    8. 单击“创建”按钮创建关系。
    9. 对要进行关联的每对表都重复第 5 步到第 8 步。

      关闭“关系”窗口时,Microsoft Access 将询问是否保存该布局。不论是否保存该配置,所创建的关系都已保存在此数据库中。

    展开全文
  • 关系数据库——sql基础1定义

    千次阅读 多人点赞 2019-10-21 17:07:09
    同时也是一种介于关系代数与关系演算之间的结构化查询语言(Structured Query Language),其功能包括数据定义、数据查询、数据操纵和数据控制。 SQL的特点: 1)综合统一:集数据定义、数据查询、数据操纵和...
  • 关系模式(1)什么是关系模式(2)定义关系模式3.关系模式和关系的对比4.关系数据库 0.思维导图 1. 关系 什么是关系? 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构----二...
  • 文章目录关系数据库关系数据库简介关系数据结构及形式化定义关系操作关系模型的完整性关系代数 关系数据库 关系数据库简介 美国????IBM公司的E.F.Codd 1970年提出关系数据模型E.F.Codd, “A Relational Model of ...
  • python:链表定义以及实现

    千次阅读 2018-09-05 20:49:51
    链表(linked list)是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的链接. 链表的数据结构如下图所示 ...插入则是调整,插入点的前后两个指针的指向关系,如下图所示:...
  • EF CodeFirst 一对一关系定义

    千次阅读 2014-10-16 22:40:57
    一个帐号与帐号扩展信息的一对一关系Model定义如下 //帐号类 public class Account { public int ID { get; set; } public string Name { get; set; } public AccountEx AccountEx { get; set; } } //帐号...
  • 因果关系、INUS定义和SUPPES定义

    千次阅读 2006-11-10 15:13:00
    原文地址:http://wt.vankeweekly.com/blog/%B4%F3%CA%AB/articles/11884.html因果关系、INUS定义和SUPPES定义我们知道,因果关系对于我们想任何问题和做任何事情,都是非常重要的。甚至有很多人认为,天赋的因果...
  • 独立正交不相关定义关系

    千次阅读 2018-06-01 16:00:40
    一、“独立”、“不相关”和“正交”的定义假设X为一个随机过程,则在t1和t2时刻的随机变量的相关定义如下(两个随机过程一样):(1)定义Rx(t1,t2)=E{X(t1)X(t2)}为相关函数,若R=0,称正交(注意,相关...
  • 关系模型的概念,定义

    万次阅读 2018-05-02 20:37:51
    关系数据模型: (1)关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。(2)关系模型的概念单一,无论实体还是实体之间的联系都用关系表示,操作的对象个操作的结果都是关系,所以其数据结构简单、...
  • 关系模式的形式化定义

    千次阅读 2019-12-16 23:21:24
    关系模式由五部分组成,即它是一个五元组: R:关系名 U:组成该关系的属性名集合 D:属性组U中属性所来自的域 DOM:属性向域的映象集合 F:属性间数据的依赖关系集合 ...
  • 定义一个节点 创建一个节点类,类中定义两个属性,一个属性用来存放数据,一个属性用来存放下一个节点 class Node { String data = null; //链表存储的数据 Node next = null; //下一个节点 public Node ...
  • 上篇博文提到:关系数据库系统支持三级模式结构,其模式、外模式和内模式中的基本对象有数据库模式、、索引、视图等。相应的,SQL的数据定义功能包括数据库模式定义表定义、索引定义和视图定义。 本篇博文主要...
  • :对关系的描述称为关系模式,最后会详细描述 -> 的标题 关系模型 :若干关系的集合 -> 数据库 属性(关系) :相对于前面的属性的意义,这里特指数据库中的某列 元组 :一条数据库记录 分量 :元组中某...
  • 知识图谱中的实体及关系定义二>

    千次阅读 2020-08-09 18:06:05
    在前文中我们将知识图谱中实体和关系的定义分为自顶向下和自底向上两种策略,在本文中我们继续深入研究知识图谱中的实体和关系定义相关内容。 1.实体种类 实体的定义通常根据领域词典、词表来进行规范,之后根据目标...
  • 在线重定义表

    千次阅读 2010-07-21 11:59:00
    Oracle9i开始引入在线重定义表(Redefine Tables Online)的功能,通过调用dbms_redefinition包,可以在修改表结构的同时允许DML操作。在线重定义表的主要功能:² 修改表的存储参数² 在同一个schema下将表移动到...
  • 数据定义

    千次阅读 2018-04-06 23:27:18
    关系数据库系统支持三级模式结构,其模式、外模式和内模式的基本对象有模式、、视图和索引等。SQL数据定义功能包括模式的定义表定义、视图定义和索引的定义。 SQL的数据定义语句如下 一、模式的定义和...
  • ORACLE的在线重定义

    千次阅读 2014-01-13 18:28:57
    一、在线定义的用处: 1、修改或者簇的存储参数 2、在相同schema的空间之间,可以移动或簇 注意:如果的可以停止dml操作,则可以利用alter table move来进行空间的更改 3、增加、修改或者删除一个或多...
  • 数据仓库建模:定义事实的粒度

    千次阅读 2015-12-17 08:19:38
    数据仓库建模:定义事实的粒度 Posted on 2015-08-25 09:03 xuzhengzhu 阅读(28) 评论(0) 编辑 收藏 维度建模中一个非常重要的步骤是定义事实的粒度。定义了事实的粒度,则事实能表达数据的详细程度...
  • 原问题与对偶问题的定义关系

    千次阅读 2020-02-27 21:56:35
    原问题与对偶问题的定义关系 (1)原问题与对偶问题定义 一个优化问题的原问题和对偶问题定义如下: 原问题: 最小化:   f(w)限制条件:{gi(w)≤0   i=1⋯Khi(w)=0   i...
  • 3.1 表定义 3.1.1 SQL语言概览 简介: SQL(Structured Query Language,结构化查询语言),SQL最早的版本 是由IBM开发的,它最初叫做Sequel(Structured English QUEry Language),在20世纪70年代早期作为System...
  • 关系模型中的一些关键字的定义

    千次阅读 2017-06-08 21:43:03
    关系(Relation):一个关系对应通常说的一张。元组(Tuple):中的一行即为一个元组。属性(Attribute):中的一列即为一个属性,给每一个属性起一个名称即属性名。码(Key):也称为码键。中的某个属性组,它可以唯一...
  • 关系型数据库之间的关系

    千次阅读 2017-12-25 15:29:59
    定义:有两个,在第一个中的某一行只与第二个中的一行相关,同时第二个中的某一行,也只与第一个中的一行相关,我们称这两个为一对一关系。 例如: 第一张表: ID 姓名 国籍 ...
  • 广义定义及用法

    万次阅读 多人点赞 2012-07-05 16:49:41
    线性表定义为n>=0个元素a1,a2,a3,…,an的有限序列。线性表的元素仅限于原子项,原子是作为结构上不可分割的成分,它可以是一个数或一个结构,若放松对表元素的这种限制,容许它们具有其自身结构,这样就产生了广义...
  • 判定树与判定定义与相关练习

    千次阅读 2018-11-28 10:49:43
    判定:能够清晰地表示复杂的条件组合与相应的动作之间的对应关系。 一张判断由四部分组成,左上部列出所有条件,左下部列出所有可能做的动作,右上部是表示各种条件的组合的一个矩阵,右下部是和每种条件组合的...
  • 七、关系数据结构及其形式化定义

    千次阅读 2013-09-11 21:41:51
    关系模型建立在集合代数的基础之上,因此其数据结构的定义由集合论的方法给出;  b. 关系模型只包含单一数据结构——关系;  c. 逻辑结构上就是一张二维,非常简单;  d. 现实中的实体以及实体之间的联系均用...
  • 四元数、欧拉角和方向余弦的定义关系

    万次阅读 多人点赞 2016-08-03 19:26:35
    因此要弄懂这三种方法的定义关系,我们必须先从坐标系转化开始了解。下面以四旋翼为例,定义两个坐标系。导航坐标系(参考坐标系)n,选取东北天右手直角坐标系作为导航坐标系n、载体坐标系(机体坐标系)b,选取右手...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,056,999
精华内容 822,799
关键字:

关系表的定义