数据库术语中的关系是什么?

前端之家收集整理的这篇文章主要介绍了数据库术语中的关系是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当有人提到数据库课程中的关系时,这是什么意思?

解决方法

令人惊讶的是,“关系”数据库中的“关系”并不表示一个表与另一个表的外键关系.根据维基百科 ‘Relation (database)’所述,“关系是一种数据结构,包括一个标题和一组共享相同类型的无序元组.”

sql RDBMS(如MS sql Server和Oracle)中,表格是存储关系,其中在数据字典中定义的列名称形成“标题”,行是关系的“元组”.

然后从表中查询可以返回一个不同的关系:

create table t (x number primary key,y number not null);

Table created.

sql> insert into t values (1,10);

1 row created.

sql> insert into t values (2,20);

1 row created.

sql> select x from t;

         X
----------
         1
         2

从t中选择x,返回一个与基表相比较少的列,少元素的元组的关系.并从t中选择x,y,其中x = 1将返回与基表相比较少的元组的关系:

sql> select x,y from t where x = 1;

         X          Y
---------- ----------
         1         10

使用内连接的示例:

sql> create table s (x number primary key,words varchar2(100) not null);

Table created.

sql> insert into s values (1,'Hello World!');

1 row created.

sql> insert into s values (3,'Will not show');

1 row created.

sql> select t.x,t.y,s.words
  2  from t
  3  inner join s
  4      on t.x = s.x;

         X          Y WORDS
---------- ---------- ---------------
         1         10 Hello World!

在概念上,t.x = s.x上的t内连接经过以下步骤:

>拿取s和t的笛卡尔乘积,取每行s,并将其与每行t组合,得到一个大小为t * t或t的大小的元组,每个元组都有两个列的所有列和t很像结果:

sql>选择*从s,t;

X WORDS                    X          Y
3 Will not show            1         10
     3 Will not show            2         20
     1 Hello World!             1         10
     1 Hello World!             2         20

(或从sql-92语法中的s交叉连接中选择*)从包含四个元组的笛卡尔乘积(在s.x = t.x上四列)将元组还原为一个,仍然有四列:

sql> select *
  2  from t
  3  inner join s
  4      on t.x = s.x;

         X          Y          X WORDS
---------- ---------- ---------- ---------------
         1         10          1 Hello World!

并选择t.x,s.word从关系中除去一列.

请注意,以上描述了正在发生的一个概念或逻辑模型.数据库带有查询优化器,它们旨在给出结果,就好像遵循所有逻辑步骤一样,但是在物理实现工作中跳过步骤,并使用不是部分的支持物理结构(如索引)的关系模型.

视图是不存储关系的关系定义,而是根据其他关系定义关系,最终以底部的表格. (除了物化视图,预先计算并存储基于其他关系的关系.)

猜你在找的MsSQL相关文章