Vamos falar agora sobre regras que podemos aplicar aos dados diretamente nos bancos de dados, ou seja, vamos conversar sobre restrições de banco de dados ou as famosas database constraints. Bom, primeiro ponto para a gente começar falando é que é possível, recomendável, que a gente aplique regras para favorecer a consistência, a integridade, a precisão e a confiabilidade dos dados que estão nos bancos de dados. confiabilidade dos dados que estão nos bancos de dados. Especificamente falando sobre o recurso conhecido como Database Constraints ou restrições de bancos de dados, estamos falando de bancos de dados relacionais. E aqui nós vamos ter a possibilidade de delegar ao banco de dados validações, na verdade, regras, a implementação de regras sobre os dados que estarão ali persistidos. Então, essas regras vão garantir que durante a criação desse modelo de dados, sejam aplicadas aos dados que estão ali persistidos. Ou seja, nós temos aqui a possibilidade de desonerar a aplicação, ou seja, ter menos complexidade de técnica de persistência na aplicação e delegar essas tarefas para que o banco de dados as realize. Então, aqui, este é um recurso muito comum em bancos de dados relacionais. E um exemplo importante, básico, de uma Constraint, é justamente a impossibilidade de preencher um valor numérico em um campo que precisa ter um carácter, ou vice-versa, ou um campo que tem a obrigatoriedade de ser preenchido e ficou vazio, ficou nulo. Então, você imagina ter que controlar isso no código da nossa aplicação. Então, o banco de dados relacional tem essa facilidade e tem tudo a ver com o tópico anterior que conversamos de ácide. Tipos comuns de restrições que nós vamos encontrar nos bancos de dados relacionais Independente do provedor deste banco, com certeza nós vamos encontrar a restrição do tipo default, o padrão, a do tipo Check ou verificação, o Not Null ou não nulo e o NIC, que é o exclusivo ou único, chave primária ou Primary Key e chave estrangeira ou Foreign Key. Então, esses seis tipos são os mais comuns. Quando a gente começar a exercitar e ter experiências com diferentes bancos de dados, por exemplo, Oracle, MySQL, SQL Server e Postgres, nós vamos perceber que nem todos os bancos de dados implementam todas as constraints da mesma maneira. todas as Constraints da mesma maneira. E com certeza você vai encontrar nas documentações específicas de cada um desses bancos de dados quais são as Constraints suportadas, como utilizar no seu código SQL e a maneira sintaxe como isso deve ser utilizado. Porém, pela minha experiência, com certeza, estes seis tipos você vai encontrar na maioria dos bancos de dados relacionais. Aqui uma tabela sumário e um ponto interessante de discussão. Temos estes tipos de constraints ou restrições ou regras a serem aplicadas aos dados que serão persistidos no banco de dados. E essas regras podem ser aplicadas sobre uma tabela, como um todo, ou sobre uma coluna. Então, por exemplo, a restrição default, que é um valor padrão, pode ser atribuída em código ao nível de tabela, para uma coluna, ou diretamente na coluna, apenas uma coluna. A verificação, ou check, se nós fizermos em nível de tabela, podemos aplicar múltiplas colunas, fazer uma validação de mais de uma coluna. colunas, fazer uma validação de mais de uma coluna. E se aplicarmos diretamente em uma coluna, acaba sendo específica para aquela coluna que está implementando essa validação. E este raciocínio vai se aplicar às demais restrições. Um ponto aqui para destacar, not null, que é não nulo, não é possível utilizar em nível de tabela, sempre é em nível de coluna e as demais, unique, primary key e foreign key, podem ser atribuídas em nível de tabela para múltiplas colunas ou em nível de coluna, especificamente para aquela coluna que está implementando essa restrição. E logo em seguida, nós vamos ver o detalhe de cadaando essa restrição. E logo em seguida nós vamos ver o detalhe de cada uma dessas restrições.