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!