Banco de Dados

Sumário


Primeira parte

Qual a diferença entre Banco de Dados e SGBD?

Banco de dados é um conjunto de informações organizadas de maneira sistemática e que permite acesso, recuperação e gerenciamento de dados.

Já SGDB (Sistema Gerenciador de Banco de Dados) é um software especializado que proporciona a criação, manipulação e administração de um banco de dados. Ele fornece ferramentas e recursos para garantir a integridade dos dados, gerenciar transações e proteger a segurança dos dados.


O que a cardinalidade expressa?

A cardinalidade expressa a relação entre duas entidades em um modelo de banco de dados. Ela define o número máximo de ocorrências de uma entidade que podem estar relacionadas com uma ocorrência de outra entidade.

Existem três tipos básicos de cardinalidade:

Cardinalidade 1:1 (um para um): Cada ocorrência de uma entidade está relacionada com uma única ocorrência da outra entidade.

Cardinalidade 1:N (um para muitos): Cada ocorrência de uma entidade pode estar relacionada com várias ocorrências da outra entidade.

Cardinalidade N:M (muitos para muitos): Cada ocorrência de uma entidade pode estar relacionada com várias ocorrências da outra entidade e vice-versa.


Quais as regras básicas do modelo relacional?

Integridade de chave primária: Cada registro em uma tabela deve ter uma chave primária única que o identifique de forma exclusiva.

Integridade referencial: Quando uma relação é criada entre tabelas, é preciso garantir que as chaves estrangeiras correspondam a valores presentes na tabela de referência.

Normalização: Consiste em dividir as informações em tabelas mais simples e evitar a redundância de dados.

Tipos de dados: Cada coluna em uma tabela deve ter um tipo de dado específico, como número inteiro, texto, data, etc.

Domínios de valores: É necessário especificar um conjunto de valores válidos para cada coluna de uma tabela.


Defina e explique o significado de chave primeira e chave estrangeira.

Chave primária: é uma chave única usada para identificar de forma exclusiva cada registro em uma tabela do banco de dados. Ela garante que não haja registros duplicados na tabela e que cada registro possua uma identificação única. A chave primária é composta por um ou mais campos e é usada para estabelecer relações entre tabelas.

Chave estrangeira: é uma chave usada para estabelecer uma relação entre tabelas. Ela faz referência a uma chave primária em outra tabela, criando uma ligação entre os dados. A chave estrangeira é usada para garantir a integridade referencial, ou seja, que os dados nas duas tabelas sejam consistentes e que não haja referências inválidas. Quando um registro na tabela principal é excluído, todos os registros relacionados na tabela secundária também são excluídos.


Defina DDL, DML E DCL e seus principais comandos

O padrão ANSI possui três grupos de comandos. O primeiro, é o DDLs, ou Data Definition Language (linguagem de definição de dados). Os DDLs são a parte da linguagem SQL que permite a manipulação das estruturas do banco de dados. Como, por exemplo, criar um banco, tabelas, índices, apagar as tabelas e alterar a política de crescimento de índice. Ou seja, os comandos que envolvem a estrutura do banco de dados relacionais são os comandos do tipo DDL.

O segundo grupo de comandos são os chamados DML, ou Data Manipulation Language (linguagem de manipulação de dados). Esse grupo visa gerenciar os dados: incluindo, alterando e excluindo informações nas estruturas do banco, como as tabelas. Além disso, realizam as consultas, buscam as informações das estruturas e exibem para o usuário.

DCL é a sigla para Data Control Language. Trata-se de um conjunto de comandos utilizados para gerenciar permissões e segurança em um banco de dados. Ele permite controlar quem tem acesso aos dados e quais ações essas pessoas podem realizar. Alguns exemplos de comandos DCL incluem GRANT (para conceder permissões) e REVOKE (para revogar permissões).

Principais comandos


Segunda parte

Defina transação, quais as suas propriedades e apresente todas as instruções que especificam os seus limites:

Uma transação é um programa em execução que forma uma unidade lógica de processamento de banco de dados. Suas propriedades incluem Atomicidade, Consistência, Isolamento e Durabilidade (ACID).

Atomicidade: A execução de uma transação deve ser atômica, ou todas as ações são executadas, ou nenhuma é processada;
Consistência: Cada transação executada isoladamente deve preservar a consistência do banco de dados;
Isolamento: Cada transação deve ser isolada dos efeitos da execução concorrente de outras transações;
Durabilidade: Toda transação que for finalizada de forma bem-sucedida deve persistir seus resultados em banco mesmo na presença de falhas no sistema.

As instruções que especificam seus limites são:

BEGIN_TRANSACTION: inicia uma nova transação.

COMMIT: confirma a transação e torna as mudanças permanentes.

ROLLBACK: desfaz as mudanças feitas pela transação e retorna o banco de dados ao seu estado anterior.

SAVEPOINT: cria um ponto de salvamento dentro de uma transação, permitindo desfazer apenas parte da transação em vez de todas as operações.

SET_TRANSACTION: define as propriedades da transação, como o nível de isolamento.

END_TRANSACTION: especifica que operações de transação READ e WRITE terminaram e marca o fim da execução da transação.


Explique controle de concorrência no contexto de banco de dados.

Método usado em SGBDs para garantir que as transações sejam executadas de uma forma segura e sigam as regras ACID.


Explique o problema da atualização perdida.

Vários problemas podem acontecer quando transações simultâneas são executadas de maneira descontrolada, como é o caso da atualização perdida. O problema da atualização perdida ocorre quando duas transações que acessam os mesmos itens do banco de dados possuem operações entrelaçadas, de modo que torne incorreto o valor de algum item do banco de dados.


Quais os motivos que levam uma transação falhar no meio da execução? Explique cada um deles.

As falhas geralmente são classificadas como falhas de transação, sistema e mídia. Existem vários motivos possíveis para uma transação falhar no meio da execução:

Uma falha do computador (falha do sistema); Um erro de transação ou do sistema; Erros locais ou condições de exceção detectadas pela transação; Imposição de controle de concorrência; Falha de disco; Problemas físicos e catástrofes;


Quais operações que o gerenciador de transação precisa acompanhar na execução de uma transação?

Início da transação: o gerenciador precisa registrar o início da transação e colocá-la em um estado pendente.

Execução de operações: o gerenciador precisa executar as operações requisitadas, como inserções, atualizações e exclusões, de forma coordenada e garantir a integridade dos dados.

Validação: o gerenciador precisa validar se as operações foram bem-sucedidas e se a integridade dos dados foi mantida.

Confirmação ou desfazer: o gerenciador precisa decidir se a transação será confirmada ou desfeita, dependendo se todas as operações foram bem-sucedidas ou não.

Conclusão da transação: o gerenciador precisa registrar a conclusão da transação e liberar os recursos alocados.


Quando uma transação alcança seu ponto de confirmação?

Uma transação alcança seu ponto de confirmação quando todas as suas operações que acessam o banco de dados tiverem sido executadas com sucesso e o efeito de todas as operações de transação no banco de dados tiver sido registrado no log.


Quais as fazes do protocolo de concorrência otimista?

O protocolo de concorrência otimista consiste em quatro fases:

Leitura: um processo lê o estado compartilhado e verifica se é possível atualizá-lo.

Validação: antes de atualizar, o processo verifica se nenhuma outra transação foi executada no estado compartilhado desde a leitura.

Atualização: se a validação foi bem-sucedida, o processo atualiza o estado compartilhado.

Confirmação: ao concluir a atualização, o processo registra a transação como tendo sido concluída com êxito.


O que é log do sistema, no contexto de banco de dados?

O log é um arquivo sequencial, apenas para inserção, que é mantido no disco, de modo que não é afetado por qualquer tipo de falha, exceto por falha de disco ou catastrófica.