Chaves e restrições comumente usadas em SQL

o que são chaves e restrições?

um banco de dados deve aderir a certas propriedades para manter a integridade e a qualidade dos dados que está armazenando. Chaves e restrições são regras que definem quais valores de dados são permitidos em determinadas colunas de dados. Eles são um conceito de banco de dados importante e fazem parte da definição de esquema de um banco de dados. Definir chaves e restrições faz parte do processo de design do banco de dados e garante que os dados dentro de um banco de dados sejam confiáveis e mantenham sua integridade. As restrições podem ser aplicadas a uma coluna específica, a uma tabela inteira, a mais de uma tabela ou a um esquema inteiro. Um sistema de banco de dados confiável garante que as restrições se mantenham o tempo todo. As chaves são um tipo especial de restrição usada para estabelecer relacionamentos e exclusividade.

chave primária

uma parte necessária para estabelecer relações entre duas entidades ou duas partes de dados é identificar os dados corretamente. No SQL, a identificação exclusiva de dados é crítica. Uma chave primária é um identificador exclusivo para uma linha de dados. Na analogia da planilha que usamos até agora, sempre houve uma coluna id. Embora qualquer coluna possa servir como chave primária, usar uma coluna chamada id é fácil por razões mnemônicas e é uma convenção popular. Em um RDBMS, cada tabela pode ter apenas uma chave primária.

uma chave primária é um identificador exclusivo garantido para uma linha em uma tabela. Por causa disso, podemos usar o valor da chave primária de uma linha para fazer referência a essa linha de outras tabelas. No capítulo anterior, estabelecemos relacionamentos entre várias tabelas com base nisso, mas os bancos de dados relacionais precisam de uma maneira de se relacionar, e a coluna de chave primária é uma maneira de fazer isso de forma eficiente. No PostgreSQL, as chaves primárias também recebem benefícios de desempenho, pois é sabido que elas serão usadas com frequência para pesquisar dados, especialmente em pesquisas com várias tabelas.

esteja ciente de que nem todas as colunas chamadas ” id ” são chaves primárias; esta é apenas uma convenção. Além disso, as chaves primárias podem ter qualquer nome.

já vimos a sintaxe para designar uma coluna como a coluna de chave primária em capítulos anteriores:

Vamos dar uma olhada no comando acima, o que cria uma tabela chamada users, a partir de uma perspectiva de entendimento de Chaves Primárias.

  1. id a coluna é a chave primária desta tabela. Também podemos dizer que a restrição de chave primária foi aplicada à coluna id.
  2. id só pode conter valores numéricos (int).
  3. para cada nova linha adicionada à tabela, o campo id será incrementado automaticamente em 1. Com muitos RDBMS, a palavra-chave AUTO_INCREMENT é usada. Com o PostgreSQL, usamos serial para incrementar automaticamente nossos ids e definir seu tipo como inteiro. Não é necessário especificar manualmente o valor da chave primária cada vez que você inserir dados, o PostgreSQL fará isso por você se você especificar serial como o tipo para id.

chave estrangeira

colunas de chave estrangeira são usadas para fazer referência a outra linha de dados, talvez em outra tabela. Para fazer referência a outra linha, o banco de dados precisa de um identificador exclusivo para essa linha. Portanto, as colunas de chave estrangeira contêm o valor da chave primária da linha referenciada. Por exemplo, uma tabela pode ter uma coluna chamada user_id como uma coluna de chave estrangeira, que corresponde à coluna id da tabela users. Chaves estrangeiras são como o RDBMS configura relações entre linhas de dados, na mesma tabela ou entre tabelas.

Você pode ver a instrução SQL acima que a linha para estabelecer essa relação é

FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE

No exemplo acima id é a chave primária da books tabela, que é usado para estabelecer um relacionamento com os comentários de tabela. Os dados idsão armazenados na tabela de comentários no campo book_id para mapear os livros com os comentários. A cláusula ON DELETE CASCADE indica que, se um livro for excluído, todas as revisões associadas a esse livro também serão excluídas.

chave composta como chave primária

no capítulo anterior, criamos um relacionamento muitos para muitos, no qual nossa chave primária era feita de duas colunas. O user_id e o book_id ambos juntos formaram a chave primária para a tabela de referência cruzada, como pode ser visto nesta linha da instrução SQL.

PRIMARY KEY (user_id, book_id)

quando um primary_key consiste em um par exclusivo PRIMARY KEY (user_id, book_id), ele é conhecido como uma chave composta. Geralmente ocorre em relacionamentos muitos para muitos, e precisamos adicionar uma tabela extra para armazenar esses dados de relacionamento. A chave composta garante que os dados na tabela sejam exclusivos para a relação entre o Usuário e o livro. Exemplo:

|User_id | Book_id | | 1 | 1 | | 1 | 2 | | 2 | 1 | 

restrições exclusivas

além da chave primária, um banco de dados também permite aplicar uma restrição exclusiva em qualquer coluna no banco de dados. Por exemplo, na tabela livros, podemos optar por não apenas ter o book_id como uma chave primária única, mas também precisar armazenar o número ISBN do livro. O ISBN, International Standard Book Number é um número único de 10 dígitos para um livro. Podemos optar por projetar nosso banco de dados para tornar esta coluna única. Mesmo que essa não seja uma chave primária, ISBNs duplicados não serão permitidos na tabela livros e a qualidade dos dados será mantida.

a restrição única não permite a entrada duplicada na tabela livros para o valor da coluna de isbn.

restrições não nulas

vimos “não nulo” em muitas de nossas instruções SQL. A restrição NOT NULL impede que uma coluna permita um valor nulo (ou seja, esta coluna deve conter dados). Isso é importante para campos-chave. Por exemplo: se você deseja adicionar um usuário a um banco de dados, deve fornecer um nome de usuário. Sem essa restrição, o banco de dados seria preenchido com valores nulos e se tornaria menos útil.

como o SQL lida com esses relacionamentos?

o PostgreSQL permite relações entre o esquema e os dados de diferentes tabelas por meio do uso de chaves estrangeiras e uma operação chamada JOIN. Como o nome sugere, o objetivo é juntar tabelas. Por meio desse mecanismo, podemos, por exemplo, obter todos os detalhes do autor da tabela de revisões mostrada acima, uma vez que possui um campo user_id que se relaciona com a tabela user. Aqui está um exemplo rápido:Agora que entendemos como criar várias tabelas e as teclas de função desempenham no estabelecimento de relacionamentos, vamos dar uma olhada mais profunda nas várias junções e como as consultas SQL são construídas usando essas junções para recuperar os dados necessários de várias tabelas.

Deixe uma resposta

O seu endereço de email não será publicado.