O tópico de chave primária eu entendi bem, só não compreendi como funciona a chave estrangeira, ainda tá meio abstrato na minha cabeça, alguém poderia me explicar?
O tópico de chave primária eu entendi bem, só não compreendi como funciona a chave estrangeira, ainda tá meio abstrato na minha cabeça, alguém poderia me explicar?
Oi, Ana! Tudo bem?
A chave estrangeira é uma coluna ou conjunto de colunas em uma tabela que se refere à chave primária de outra tabela. Isso é feito para estabelecer uma relação entre as tabelas.
Por exemplo, suponha que você tenha uma tabela CLIENTE
com uma chave primária id_cliente
. Agora, você quer criar outra tabela PEDIDO
que se relaciona com a tabela CLIENTE
. Para isso, você pode criar uma chave estrangeira id_cliente
na tabela PEDIDO
, que se refere à chave primária id_cliente
na tabela CLIENTE
.
Para representar melhor o texto acima, observe a seguir a criação das tabelas CLIENTE
e PEDIDO
:
CREATE TABLE CLIENTE (
id_cliente SERIAL PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE PEDIDO (
id_pedido SERIAL PRIMARY KEY,
descricao VARCHAR(100),
valor NUMERIC(10,2),
id_cliente INTEGER REFERENCES CLIENTE (id_cliente)
);
Enquanto CLIENTE
tem como chave primária id_cliente
(que é do tipo SERIAL
, permitindo um incremento sequencial deste campo durante a inserção de dados), o PEDIDO
utiliza este mesmo campo como sua chave estrangeira.
A criação da chave estrangeira foi feita na última linha da criação da tabela PEDIDO
, em que:
id_cliente INTEGER
cria e configura o campo id_cliente
;REFERENCES CLIENTE (id_cliente)
indica que ele será uma chave estrangeira derivada da chave primária id_cliente
, de CLIENTE
.Dessa forma, sempre que um novo pedido for adicionado à tabela PEDIDO
, ele deve estar relacionado a um cliente existente na tabela CLIENTE
. Isso garante a integridade dos dados e evita que informações inconsistentes sejam inseridas no banco de dados.
Espero que isso tenha ajudado a entender melhor como funciona a chave estrangeira, Ana! Se surgirem novas dúvidas, fico à disposição para ajudar.
Um forte abraço!