Qual é uma definição clara de restrição de banco de dados? Por que as restrições são importantes para um banco de dados? Quais são os tipos de restrições?
sql
sql-server
constraints
rdbms
bala3569
fonte
fonte
Respostas:
As restrições fazem parte da definição do esquema do banco de dados.
Uma restrição geralmente está associada a uma tabela e é criada com uma instrução
CREATE CONSTRAINT
ouCREATE ASSERTION
SQL.Eles definem certas propriedades que os dados em um banco de dados devem cumprir. Eles podem se aplicar a uma coluna, uma tabela inteira, mais de uma tabela ou um esquema inteiro. Um sistema de banco de dados confiável garante que as restrições sejam mantidas em todos os momentos (exceto possivelmente dentro de uma transação, para as chamadas restrições adiadas).
Os tipos comuns de restrições são:
fonte
Para entender por que precisamos de restrições, você deve primeiro entender o valor da integridade dos dados.
Integridade de dados refere-se à validade dos dados. Seus dados são válidos? Os seus dados representam aquilo para que você os projetou?
Que perguntas estranhas eu faço você pode pensar, mas infelizmente, muitas vezes, os bancos de dados estão cheios de dados de lixo, referências inválidas a linhas em outras tabelas, que já se foram ... e valores que não significam nada para a lógica de negócios da sua solução por mais tempo.
Todo esse lixo não tende por si só a reduzir seu desempenho, mas também é uma bomba-relógio sob a lógica de seu aplicativo que eventualmente irá recuperar dados que não foi projetado para entender.
Restrições são regras que você cria em tempo de design que protegem seus dados de serem corrompidos. É essencial para a longa sobrevivência de seu coração filho de uma solução de banco de dados. Sem restrições, sua solução definitivamente se deteriorará com o tempo e o uso intenso.
Você deve reconhecer que projetar o design do seu banco de dados é apenas o nascimento da sua solução. Depois disso, ele deve viver (espero) muito tempo e suportar todos os tipos de comportamento (estranho) de seus usuários finais (ou seja, aplicativos cliente). Mas esta fase de design no desenvolvimento é crucial para o sucesso duradouro de sua solução! Respeite-o e preste-lhe o tempo e atenção de que necessita.
Um homem sábio disse uma vez: "Os dados devem se proteger!" . E é isso que as restrições fazem. São regras que mantêm os dados em seu banco de dados tão válidos quanto possível.
Existem muitas maneiras de fazer isso, mas basicamente elas se resumem a:
sys.check_constraints
exibição no banco de dados de exemplo AdventureWorksComo sugeri aqui, são necessárias algumas considerações completas para construir a melhor e mais defensiva abordagem de restrição para o design de seu banco de dados. Primeiro, você precisa conhecer as possibilidades e limitações dos diferentes tipos de restrições acima. Outras leituras podem incluir:
Restrições FOREIGN KEY - Microsoft
Restrição de chave estrangeira - w3schools
CHECK Constraints
Boa sorte! ;)
fonte
As restrições nada mais são do que regras sobre os dados. Quais dados são válidos e quais são inválidos podem ser definidos usando restrições. Assim, essa integridade dos dados pode ser mantida. A seguir estão as restrições amplamente utilizadas:
NOT NULL
. Aqui podemos especificar quais dados podemos inserir para aquela coluna específica e o que não é esperado para essa coluna.fonte
As restrições podem ser usadas para impor propriedades específicas de dados. Um exemplo simples é limitar uma coluna interna a valores [0-100000]. Esta introdução parece boa.
fonte
As restrições determinam quais valores são válidos para os dados do banco de dados. Por exemplo, você pode impor que um valor não seja nulo (uma
NOT NULL
restrição), ou que exista como uma restrição única em outra tabela (umaFOREIGN KEY
restrição), ou que seja único nesta tabela (umaUNIQUE
restrição ou talvezPRIMARY KEY
restrição dependendo de seus requisitos ) Restrições mais gerais podem ser implementadas usandoCHECK
restrições.A documentação do MSDN para as restrições do SQL Server 2008 é provavelmente seu melhor ponto de partida.
fonte
UNIQUE
restrição (da qual umaPRIMARY KEY
restrição é uma variante). Verifica se todos os valores de um determinado campo são exclusivos na tabela. Esta é aX
restrição -eixo (registros)CHECK
restrição (da qual umaNOT NULL
restrição é uma variante). Verifica se uma determinada condição é válida para a expressão nos campos do mesmo registro. Esta é aY
restrição do eixo (campos)FOREIGN KEY
limitação. Verifica se o valor de um campo é encontrado entre os valores de um campo em outra tabela. Esta é aZ
restrição -axis (tabelas).fonte
CHECK
restrições, então por que classificá-las de forma diferente? ou seja, "Y
-eixo" (o que quer que isso signifique).FOREIGN KEY
usando umaCHECK
restrição?SELECT
consulta. Você não pode usar subconsultas (ou qualquer outra construção que se refira a valores fora do registro atual) emCHECK
restrições emSQL Server
.Um banco de dados é a representação lógica computadorizada de um modelo conceitual (ou de negócios), que consiste em um conjunto de regras de negócios informais. Essas regras são o significado dos dados compreendido pelo usuário. Como os computadores compreendem apenas representações formais, as regras de negócios não podem ser representadas diretamente em um banco de dados. Eles devem ser mapeados para uma representação formal, um modelo lógico, que consiste em um conjunto de restrições de integridade. Essas restrições - o esquema do banco de dados - são a representação lógica no banco de dados das regras de negócios e, portanto, são o significado dos dados entendido pelo DBMS. Segue-se que, se o SGBD desconhece e / ou não impõe o conjunto completo de restrições que representam as regras de negócios, ele tem um entendimento incompleto do que os dados significam e, portanto,
Nota: O SGBD - significado “compreendido” - restrições de integridade - não é idêntico ao significado compreendido pelo usuário - regras de negócios - mas, apesar da perda de algum significado, ganhamos a capacidade de mecanizar inferências lógicas a partir dos dados.
"An Old Class of Errors" por Fabian Pascal
fonte
Existem basicamente 4 tipos de restrições principais no SQL:
Restrição de domínio: se um dos valores de atributo fornecidos para uma nova tupla não for do domínio de atributo especificado
Restrição de chave: se o valor de um atributo de chave em uma nova tupla já existe em outra tupla na relação
Integridade referencial: se um valor de chave estrangeira em uma nova tupla faz referência a um valor de chave primária que não existe na relação referenciada
Integridade da entidade: se o valor da chave primária for nulo em uma nova tupla
fonte
restrições são condições que podem validar uma condição específica. As restrições relacionadas ao banco de dados são integridade de domínio, integridade de entidade, integridade referencial, restrições de integridade definida pelo usuário, etc.
fonte