Restrição

Em ciência da computação , o termo condição de integridade denota condições que são colocadas no estado de um processo ou estrutura de dados. Com relação aos bancos de dados , os estados são considerados consistentes se atenderem às restrições.

definição

As restrições de integridade descrevem suposições feitas sobre os dados ou o status, por exemplo, um determinado tipo de dados, uma faixa de valores ou um relacionamento de dependência entre dois objetos. Com base nessas suposições, um programador pode descrever processos de processamento e, se necessário, alterar o status de um processo. A conformidade com as restrições de integridade não deve ser deixada para o programador, mas sim verificada pelo sistema. Estados inconsistentes (ou seja, estados que violam as restrições de integridade) ou restrições de integridade definidas de forma imprecisa são causas comuns de erros de programação , uma vez que as sub-rotinas / funções individuais dependem de sua conformidade.

Exemplos

Bancos de dados

Os sistemas de bases de dados relacionais oferecem a possibilidade de formular condições de integridade na definição de um esquema relacional, cuja conformidade é garantida pelo sistema. Um exemplo típico de restrições são os relacionamentos de chave e chave estrangeira .

Pode ser especificado como a conformidade deve ser garantida ou como as mudanças devem ser reagidas. Uma mudança que viola uma restrição de integridade pode ser totalmente evitada ou pode resultar em outras mudanças para restaurar a integridade (consulte: Gatilho do banco de dados ). O seguinte exemplo de SQL modela uma conexão entre professores , alunos , palestras e exames de uma forma muito simplificada . O foco aqui deve ser nos relacionamentos de chave estrangeira:

create table Professor (
  ID           integer primary key
);
create table Student (
  MatrNr       varchar(16) primary key
);
create table Vorlesung (
  ID           integer primary key,
  Name         varchar(32),
  Prof         integer references Professor.ID
               on delete set null
);
create table Prüfung (
  Datum        date,
  Vorlesung    integer not null
               references Vorlesung.ID
               on delete no action,
  Stud         varchar(16) not null
               references Student.MatrNr
               on delete cascade
);

As seguintes restrições são definidas neste exemplo:

  • Uma palestra faz referência a um professor. Se o professor se aposentar (e o registro de dados correspondente for apagado), a aula será mantida. A adição em deletar conjunto nulo deleta a referência ao professor se o registro de dados referenciado for deletado (condição de integridade: o professor referenciado detém a aula).
  • Cada exame faz referência a uma palestra. Enquanto ainda houver um exame para uma aula, esta aula não pode ser excluída do banco de dados. A adição em excluir nenhuma ação evita que um registro de dados referenciado seja excluído da tabela de "aula". (Condição de integridade: há também uma palestra para cada exame).
  • Cada exame faz referência a um aluno que faz o exame. Se o aluno for cancelado (e o registro de dados relevante for excluído), o exame não será realizado. A adição em cascata de exclusão significa que um exame é excluído se o aluno referenciado for excluído. (Condição de integridade: sem aluno não há exame)

A base de dados garante o cumprimento desta condição.

Direitos de uso

Naturalmente, a especificação das restrições de integridade restringe o número de operações permitidas. Como em um banco de dados relacional, essas restrições também podem afetar outras tabelas além da tabela real na qual a condição foi especificada, há uma autorização especial em alguns bancos de dados que permite que uma tabela seja referenciada. No exemplo acima, a adição em excluir nenhuma ação impede a exclusão de entradas na mesa de aula . Assim, o proprietário da mesa de teste deve ter autorização para fazer referência à aula de mesa .

otimização

Como a conformidade com as condições de integridade no banco de dados pode resultar em verificações demoradas, na maioria dos casos não há especificação explícita para melhorar os tempos de execução. A consequência disso são inconsistências de dados no banco de dados. Dependendo do cenário da aplicação, o software associado deve ser capaz de reconhecer e levar em consideração os dados inconsistentes restantes no banco de dados. Se a conformidade com as condições não for garantida pelo próprio aplicativo e a inconsistência de dados resultante não puder ser contornada, o software não funcionará sem erros.

Documentos

Uma variedade de restrições de integridade também podem ser encontradas no contexto de processamento de texto ou processamento de documentos. É intuitivamente óbvio que a integridade de um documento foi violada se o sumário contiver números de página incorretos ou hiperlinks em páginas HTML não apontarem para nada.

Em uma forma formalizada, as condições de integridade para documentos XML podem ser descritas, por exemplo, por meio de um esquema XML . A seguinte definição de elemento XML pode, por exemplo, ser usada para definir um novo tipo de elemento que permite apenas informações sobre a temperatura do corpo humano. Neste caso, 3 casas decimais, 1 casa decimal, bem como os valores mínimo e máximo

<simpleType name="celsiusKörperTemp">
  <restriction base="xsd:decimal">
    <totalDigits value="3"/>
    <fractionDigits value="1"/>
    <minInclusive value="30.0"/>
    <maxInclusive value="42.5"/>
  </restriction>
</simpleType>

Veja também

literatura

  • Alfons Kemper, André Eickler: Sistemas de banco de dados. Uma introdução. 5ª edição atualizada e ampliada. Oldenbourg, Munich et al., 2004, ISBN 3-486-27392-2 .
  • Victor M. Markowitz: Estruturas referenciais seguras em bancos de dados relacionais. In: Guy M. Lohman, Amílcar Sernadas, Rafael Camps (eds.): Very large Data Bases. Procedimentos da Décima Sétima Conferência Internacional sobre Bases de Dados Muito Grandes. 3-6 de setembro de 1991, Barcelona (Catalunha, Espanha). Kaufmann, San Mateo CA et al., 1991, ISBN 1-55860-150-3 , pp. 123-132.

Links da web