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
Tabela ORDERS
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);
Copyright © 2024 1keydata.com Todos os direitos reservados. |