SQL Chave Externa




SQL > Manipulação de Tabelas > Chave Externa

Uma chave externa é um campo (ou campos) que aponta para a chave primária de outra tabela. O objetivo da chave externa é garantir a integridade referencial dos dados Por outras palavras, apenas os valores suportados que supostamente devem aparecer na base de dados são permitidos.

Por exemplo, suponhamos que temos duas tabelas, uma tabela CUSTOMER que inclui todos os dados dos clientes e uma tabela ORDERS que inclui todas as encomendas dos clientes. A restrição prende-se com o fato de todas as encomendas deverem ser associadas a um cliente que já esteja na tabela CUSTOMER. Nesse caso, iremos colocar uma chave externa na tabela ORDERS e fazer com que se relacione com a chave primária da tabela CUSTOMER. Deste modo, podemos garantir que todas as encomendas na tabela ORDERS estão relacionadas com um cliente na tabela CUSTOMER. Por outras palavras, a tabela ORDERS não pode conter informações sobre um cliente que não se encontre na tabela CUSTOMER.

A estrutura destas duas tabelas seria a seguinte:

Tabela CUSTOMER
Nome da Coluna Característica
SID Chave Primária
Last_Name  
First_Name  

Tabela ORDERS
Nome da Coluna Característica
Order_ID Chave Primária
Order_Date  
Customer_SID Chave Externa
Amount  

No exemplo acima apresentado, a coluna Customer_SID na tabela ORDERS é uma chave externa a apontar para a coluna SID na tabela CUSTOMER.

Abaixo são apresentados exemplos de como especificar uma chave externa ao criar a tabela ORDERS:

MySQL:

CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
PRIMARY KEY (Order_ID),
FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID));

Oracle:

CREATE TABLE ORDERS
(Order_ID integer PRIMARY KEY,
Order_Date date,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);

SQL Server:

CREATE TABLE ORDERS
(Order_ID integer PRIMARY KEY,
Order_Date datetime,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);

Abaixo são apresentados exemplos para a especificação de uma chave externa ao alterar uma tabela. Isso assume que a tabela ORDERS foi criada e que a chave externa ainda não foi introduzida:

MySQL:

ALTER TABLE ORDERS
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

Oracle:

ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

SQL Server:

ALTER TABLE ORDERS
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);

SQL CREATE VIEW >>

Esta página foi atualizada pela última vez em 01/07/2022



Copyright © 2024   1keydata.com   Todos os direitos reservados.