詳細検索

A chave primária da base de dados deve ser a chave substituta, não a chave primária composta.

Avatar
por maeno
4 min de leitura

A chave primária da base de dados deve ser a chave substituta, não a chave primária composta.
Traduzido do 日本語 • Ver original

Em outro assunto, quando eu pesquisava os "pares substitutos" do Unicode, um artigo sobre a "chave substituta" e a "chave primária composta" no banco de dados ficou preso na conexão substituta e eu perdi o controle o máximo que pude (risos).

Se você não está muito familiarizado com bancos de dados, o que são "chaves substitutas", "chaves primárias compostas" e "chaves naturais"? ── Deve haver muitas pessoas que conhecem, então pensei em resumir como uma análise de mim mesmo.

Chave Primária (Chave Primária)

Uma restrição de chave que existe na maioria das tabelas de um banco de dados para gerenciar dados de forma única. Uma coluna com essa chave não pode conter valores duplicados (restrições de chave únicas) nem estar em branco (NULL).

Chaves Únicas (Chaves Únicas, Índices Únicos)

A restrição da chave é que valores duplicados não podem ser armazenados na coluna onde essa chave é especificada, e ela deve ser única. No entanto, ao contrário da chave primária, a chave em branco (NULL) pode ser armazenada, e apenas a chave em branco (NULLA) pode ser duplicada. Como essa chave é indexada ao mesmo tempo em que é especificada, ela é sinônima de um índice único.

Chaves de substituição (Chaves de substituição)

É uma chave primária quando uma restrição de chave primária é atribuída a uma coluna com um valor único no qual o número de números sequenciais é armazenado por atributos de autoincremento. Também é chamada de chave substituta porque substitui o conjunto de colunas (chave natural) para identificar o registro de linha único na tabela. É sistematicamente benéfica porque pode identificar a unicidade de todos os registros de linha em uma única coluna, mas é sem sentido como dados usados para serviços reais, etc., e do ponto de vista do usuário de dados, é apenas uma coluna que comprime desnecessariamente a área de armazenamento físico do banco de dados.

Chaves Naturais (Chaves Naturais)

Um conjunto de colunas com uma restrição de chave única para identificar registros de linha em uma tabela. Por exemplo, no WordPress, se uma combinação de "post ID" e "tag ID" pode identificar de forma única dados de post pertencentes a uma determinada tag, a combinação dessas duas colunas é chamada de chave natural, e a tabela com essa chave natural é 'wp_term_relationships'. Em princípio, colunas contidas em chaves naturais devem ter restrições de chave únicas, por isso frequentemente são definidas como chaves primárias. Do ponto de vista dos usuários de dados, tabelas de tipos de chave natural, cuja singularidade é identificada apenas por dados significativos, têm usos claros e não são desperdiçadoras.

Chaves Primárias Compostas

Tabelas como múltiplas chaves primárias, chaves substitutas + chaves naturais, e apenas chaves naturais em um conjunto de múltiplas colunas sem chave primária podem ser chamadas tabelas compostas de chaves primárias. Em resumo, é um tipo de tabela que não consegue identificar a unicidade de registros de linha com apenas uma coluna. Um tipo comum de tabela de relacionamento que gerencia apenas a união de chaves estrangeiras para se relacionar com outras tabelas (por exemplo, a tabela 'wp_term_relationships' no WordPress introduzida na seção de chaves naturais). Quem já analisou tabelas de relacionamento ou design de banco de dados deve entender bem, mas essas tabelas compostas de chaves primárias são estruturadas de forma que as chaves substitutas de cada tabela externa são gerenciadas centralmente, e a relação de relacionamento entre os dados reais muitas vezes não é clara à primeira vista. Por outro lado, se a chave primária de uma tabela com a chave natural como chave primária estiver relacionada a uma chave estrangeira, a combinabilidade dos dados pode ser vista rapidamente apenas olhando para a tabela de relacionamento, mas dados de string com altos custos de referência existirão duplicados no banco de dados, resultando em degradação de desempenho no banco de dados como um todo, e a pressão sobre a área de armazenamento físico será maior do que a da chave substituta. Além disso, especialmente se a chave natural estiver envolvida na identificação única, o custo do sistema para lidar com dados únicos será alto.

Enquanto eu organizava as palavras, senti novamente que parece bastante problemático operar uma tabela com uma chave primária composta. Bem, na verdade é complicado. Por exemplo, se você quiser mudar o valor de uma das colunas da chave natural da chave primária composta, precisa colocar a mesma chave natural nos critérios de busca para identificar o registro de linha, o que torna um pouco irritante pensar em processamento. Se você tentar ATUALIZAR uma tabela com duas ou mais chaves primárias, o MySQL vai ficar irritado...

Minha conclusão pessoal é que é melhor tornar o banco de dados fácil para o sistema responder, não para as pessoas, e acho que é o fim da história insistir na visibilidade dos dados do lado humano, mesmo que isso custe o desempenho. Acho que a forma correta do sistema que usa o banco de dados é criar um processamento de relé separado e moldar os dados que sejam fáceis para o lado humano reconhecer. Isso porque, na maioria dos casos, os dados solicitados pelo lado humano não serão úteis a menos que sejam filtrados pelo tempo e pelo caso. Em outras palavras, acho que é melhor prática usar uma chave substituta em vez de uma chave primária composta para a chave primária.

Related Articles