数据库术语中的关系是什么?
当有人提到数据库课程中的关系时,这是什么意思?
解决方法令人惊讶的是,“关系”数据库中的“关系”并不表示一个表与另一个表的外键关系.根据维基百科 ‘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从关系中除去一列. 请注意,以上描述了正在发生的一个概念或逻辑模型.数据库带有查询优化器,它们旨在给出结果,就好像遵循所有逻辑步骤一样,但是在物理实现工作中跳过步骤,并使用不是部分的支持物理结构(如索引)的关系模型. 视图是不存储关系的关系定义,而是根据其他关系定义关系,最终以底部的表格. (除了物化视图,预先计算并存储基于其他关系的关系.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |