码迷,mamicode.com
首页 > 数据库 > 详细

oracle主从表主外键对应关系

时间:2015-04-22 20:20:52      阅读:433      评论:0      收藏:0      [点我收藏+]

标签:

  一.首先让我们来了解下什么是主外键?

  1.主键:唯一标识数据表中的某一行

  1) 一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。
  2)主键的值不可重复,也不可为空(NULL)。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。
  3)主键的创建:在建置新表格时设定主键的方式
  MySQL:  CREATE TABLE Customer (SID integer,Last_Name varchar(30),First_Name varchar(30),PRIMARY KEY (SID));
  Oracle:   CREATE TABLE Customer (SID integer PRIMARY KEY,Last_Name varchar(30),First_Name varchar(30));
  SQL Server: CREATE TABLE Customer (SID integer PRIMARY KEY,Last_Name varchar(30),First_Name varchar(30));
 
  2.外键:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字
  
  特点:
  
  2.1、 为关联字段创建外键。
  2.2、 所有的键都必须唯一。
  2.3、避免使用复合键。
  2.4、外键总是关联唯一的键字段。
 
  
  CREATE TABLE TABLE1( [ID] INT IDENTITY(1,1) PRIMARY KEY)
  CREATE TABLE TABLE2( [ID] INT NOT NULL,FOREIGN KEY ([ID]) REFERENCES [TABLE1]([ID]))
  TABLE2 中引用了TABLE1,在此TABLE1为主键表,而TABLE2 为外键表。
  总结:主键表是被引用的表,外键表是引用其他表的表。
 
  
  
  
  二.有了上面的基础储备,下面让我们来看一下主从表主外键对应关系
  
  
  
 
  在进行多表的联接查询前,我们需要对多表进行相关的处理,比方说确定主从关系,建立外键,联接时确定中间表等操作.

      一般情况下,建表时先建主表,再建从表(插入数据时也是一样的),那怎么确定主从关系呢,进一步建立外键约束?

      比方说,有三个表,customers表(customerid--pk)  --对于 orders表和orderitems表来说是主表,反过来后两个为从表

                        orders表(orderid--pk;customerid--fk)    --对于orderitems表来说是主表

                            orderitems表(orderitemid---pk;bookid,quantity,orderid---fk),

  注意:一张表只能有一个主键,但可以有多个外键

      从这三张表来看,orders表的customerid列为外键,它来自表customers的主键列customerid,因此这就是我们常说的外键引用主键,被引用的表为主表,引用的表为从表.即customers表为主表,orders表为从表;同样的道理下,orderitems表中的orderid列为外键,来自于(引用)表orders的主键列orderid,故针对这两个表来说,orders表为主表,而orderitems表为从表.

      对于删表的顺序,刚好与建表的次序相反,先删从表再删主表,即对于上面三个表来说,先删表orderitems,再删表orders,最后才能删掉customers表.

      在进行多表联接的查询操作时,我们可以以orders表作为中间表,因为他和其他两个表都有关系.即:

  select * from orders a join customers c

                        on a.customerid=c.customerid

               join orderitem t

                        on t.orderid=a.orderid

 

以上内容来自网络整理兼个人总结,感谢   http://blog.csdn.net/luoxl81/article/details/6876930  作者

  

oracle主从表主外键对应关系

标签:

原文地址:http://www.cnblogs.com/iliuyuet/p/4447852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!