Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 7
            [id] => 563129
            [titulo] => Qual a vantagem de se usar chave estrangeira no banco de dados?
            [dataCadastro] => DateTime Object
                (
                    [date] => 2016-09-28 10:40:00
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 514048
            [status] => A
            [isExample] => 
            [NomeUsuario] => Ronaldo Santos
            [Apelido] => RonaldoSantos
            [Foto] => 514048_20160808085944.png
            [Conteudo] => Chave estrangeira é um tipo de "constraint", ou seja, restrição. E serve para restringir que dados errados sejam inseridos em uma tabela.
exemplo:

Tabela Carro Tabela Pessoa
Cod Nome Cod Nome
1 Celta 1 João
2 Uno 2 José
3 Palio 3 Mario

(nesse sistema fictício, só existem três carros)

(na tabela abaixo vamos preencher quem possui qual carro)

Tabela propriedade
Carro Pessoa
1 1
2 2
4 3

Você percebeu que o Carro 4 não existe?
Como é possível a pessoa 3 possuir um carro que não está cadastrado?
Isso é considerado uma inconsistência no banco de dados, que só aconteceu porque:
1 - Não existe chave estrangeria na tabela "Propriedade" ligando a coluna Carro a coluna Cod na tabela "Carro"
2 - Algum código no software está inserindo dado incorreto na tabela ou alguem executou um insert de forma errada.

ou seja, se houvesse chave estrangeira, esse registro

Carro Pessoa
4 3

nunca teria sido inserido. ) )

Qual a vantagem de se usar chave estrangeira no banco de dados?

Calebe
   - 28 set 2016

Gostaria de uma boa resposta que justificasse o uso de chaves estrangeiras no banco de dados.
Já vi sistemas que não usavam chave estrangeira nas suas tabelas e aparentemente funcionavam bem.
Eu queria saber todas vantagens ou desvantagens no uso de chaves estrangeiras.

Post mais votado

Ronaldosantos
|
MVP
Pontos: 450
    28 set 2016

Chave estrangeira é um tipo de "constraint", ou seja, restrição. E serve para restringir que dados errados sejam inseridos em uma tabela.
exemplo:

Tabela Carro Tabela Pessoa
Cod Nome Cod Nome
1 Celta 1 João
2 Uno 2 José
3 Palio 3 Mario

(nesse sistema fictício, só existem três carros)

(na tabela abaixo vamos preencher quem possui qual carro)

Tabela propriedade
Carro Pessoa
1 1
2 2
4 3

Você percebeu que o Carro 4 não existe?
Como é possível a pessoa 3 possuir um carro que não está cadastrado?
Isso é considerado uma inconsistência no banco de dados, que só aconteceu porque:
1 - Não existe chave estrangeria na tabela "Propriedade" ligando a coluna Carro a coluna Cod na tabela "Carro"
2 - Algum código no software está inserindo dado incorreto na tabela ou alguem executou um insert de forma errada.

ou seja, se houvesse chave estrangeira, esse registro

Carro Pessoa
4 3

nunca teria sido inserido.

Calebe
   - 28 set 2016

Excelente resposta Ronaldo!

Ronaldosantos
|
MVP
Pontos: 450
    28 set 2016

Esqueci de dizer que a chave estrangeira também serve para prevenir que dados sejam apagados.
Considerando o exemplo acima:
Você não poderia apagar dados da tabela Carro se houver registros na tabela Propriedade pertinentes a tabela carro, dessa forma gerando registros "orfãos" na tabela Propriedade.

Você teria que apagar os dados na tabela Propriedade primeiro e somente após apagar dados na tabela Carro.

Jones Granatyr
|
MVP
Pontos: 470
    28 set 2016

Olá, pegando o gancho do comentário do Ronaldo, uma vez eu fiz a migração da base de dados de um sistema de ordens de serviço (da base antiga para a nova base com novo sistema). A ideia era a seguinte: uma ordem de serviço poderia ter muitos produtos, e o que o ocorreu quando peguei a base antiga era que mais de 4.000 desses produtos tinham sido apagados, ficando sem relação na tabela de ordens de serviço. Era impossível saber quais eram esses produtos e essas ordens de serviço (mais de 800), tiveram que ficar fora da importação para o sistema novo!! Ou seja, informação importante da empresa foi perdida por falta de chaves estrangeiras.

Jones

Calebe
   - 28 out 2016

Vlw gente pelo help!

Pestana
   - 28 out 2016

E também como todo tipo de chave ela contem índice que torna mais rápido o desempenho durante a consulta.

Calebe
   - 31 out 2016

Opa Pestana, ótima observação!