Revisão de Bancos de Dados Conceitos Básicos 1. Defina o que é um banco de dados e o que é um sistema gerenciador de bancos de dados (SGBD). 2. Defina as arquiteturas de software em duas camadas (cliente/servidor) e em três camadas (cliente/servidor de aplicação/servidor de bancos de dados). 3. O que diferencia os conceitos de esquema de bancos de dados, estado de bancos de dados e metadados? 4. O que é uma linguagem de definição de dados (Data Definition Language DDL) e o que é uma linguagem de manipulação de dados (Data Manipulation Language DML)? A linguagem SQL é uma DDL ou uma DML? 5. Qual a diferença entre bancos de dados relacionais e bancos de dados orientados a objetos? 6. Defina os conceitos de superchave, chave, chave primária, chave única e chave estrangeira. 7. As aplicações de bancos de dados usualmente possuem uma série de restrições de integridade que podem ser de diferentes tipos. Defina o que é uma restrição de integridade de bancos de dados. 8. Define as restrições de integridade de atributos abaixo: a. Restrição de domínio b. Restrição de chave c. Restrição NOT NULL 9. Defina o que é uma restrição de integridade de entidade. 10. Defina o que é uma restrição de integridade referencial. 11. Defina o que é uma restrição de integridade semântica. 12. Considere o esquema de bancos de dados abaixo. Identifique pelo menos cinco restrições de integridade (de pelo menos três tipos diferentes) que devem ser mantidas no banco de dados.
Modelo ER 1. Crie um diagrama ER que descreva o minimundo de uma empresa descrito abaixo: Uma empresa é organizada em departamentos. Cada departamento tem um nome exclusivo, um número exclusivo e um funcionário em particular que o gerencia. Registramos a data inicial em que esse funcionário começou a gerenciar o departamento. Um departamento pode ter vários locais. As informações armazenadas para cada funcionário são: nome, CPF, endereço, salário, gênero sexual e data de nascimento. Um funcionário é alocado a um departamento, mas pode trabalhar em vários projetos que não necessariamente são controlados pelo mesmo departamento. O número total de horas que o funcionário trabalha em cada projeto é registrado. Também é registrado o supervisor de cada funcionário (que é outro funcionário). É importante registrar os dependentes de cada funcionário para fins de seguro. Os dados mantidos para cada dependente são: nome, sexo, data de nascimento e parentesco com o funcionário. 2. A partir do diagrama ER escrito no exercício anterior, crie o esquema de tabelas do minimundo seguindo o padrão utilizado na Figura 3. SQL 1. Defina os conceitos de esquema, catálogo e ambiente no contexto de SQL. 2. Para criar tabelas em SQL é utilizado o comando CREATE TABLE. Restrições de integridade podem ser adicionadas tanto no momento de criação das tabelas quanto posteriormente usando o comando ALTER TABLE (um comentário sobre restrições do tipo chave estrangeira é feito no box de observação abaixo). a. Dado o código de criação da tabela table01 apresentado na Figura 4, defina qual a diferença entre o tipo VARCHAR e o tipo CHAR[]. b. Assumindo que a tabela table01 tenha sido criada com objetivo de armazenar informações sobre pessoas, cite pelo menos duas restrições de integridade que deveriam ser adicionadas aos atributos da tabela.
c. Escreva o código SQL para criação de 5 tabelas do minimundo da empresa descrito anteriormente. Adicione as restrições de chave primária e chave estrangeira pelo menos uma vez no momento de criação da tabela e uma vez usando o comando ALTER TABLE. Para exemplificar o código SQL para criação de tabelas, na Figura 5 são apresentados os códigos para criação das tabelas compositor, composição e música, vindas dos exemplos apresentados nas Figuras 2 e 3. As restrições de chave primária, chave estrangeira e atributos únicos foram adicionados de diferentes formas apenas para relembrar as possibilidades. 3. Em SQL, o comando INSERT é utilizado para inserir elementos em uma tabela do banco de dados. Crie os comandos SQL para inserir pelo menos três elementos em pelo menos três tabelas daquelas criadas no exercício 2.c. Para relembrar o formato do comando INSERT, a Figura 6 traz um conjunto de comandos utilizados para popular as tabelas compositor, musica e composição. 4. Para listar informações existentes em um banco de dados usando SQL é utilizado o comando SELECT. Para relembrar este comando, a Figura 7 traz uma série de queries usando os dados inseridos pelo código apresentado na Figura 6. Para exercitar o uso do comando, crie queries para retornar as seguintes informações do minimundo da empresa: a. Liste o número de funcionários na empresa. b. Liste de forma ordenada os nomes dos funcionários do sexo feminino que gerenciam departamentos. c. Liste os nomes dos dependentes e os nomes dos respectivos funcionários associados. d. Liste o nome de cada funcionário e o número de dependentes que este possui. e. Liste o nome de cada funcionário e o número de projetos em que ele trabalha que são do mesmo departamento a que ele está alocado. f. Liste o nome de cada departamento, a soma do salário de seus funcionários e o número de funcionários do departamento. g. Liste a soma dos salários e o número de funcionários do sexo masculino que trabalham em projetos do mesmo departamento a que pertencem. 5. Cite quais são as diferenças entre os operadores INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN e FULL OUTER JOIN. 6. Os comandos SQL para atualizar e apagar elementos de uma tabela são, respectivamente, os comandos UPDATE e DELETE. Já para atualizar e apagar bancos de dados e seus elementos (tabelas, triggers, stored procedures, etc.), são utilizados, respectivamente, os comandos ALTER e DROP (a Figura 8 traz exemplos de utilização destes comandos). Crie pelo menos 5 comandos SQL para atualização e deleção de itens e tabelas do minimundo da empresa. 7. A linguagem SQL provê vários mecanismos para lidar com atualizações e deleções de itens de uma tabela que são referenciados como chaves estrangeiras de outras tabelas. Descreve quais ações serão tomadas se os seguintes modificadores forem adicionados à definição de uma chave estrangeira: a. ON DELETE CASCADE b. ON UPDATE CASCADE c. ON DELETE SET DEFAULT d. ON DELETE SET NULL
Figura 1: Componentes básicos do Modelo Entidade-Relacionamento (Figura adaptada do livro-texto) Figura 2: Exemplo minimalista de um diagrama ER
Figura 3: Diagrama de tabelas correspondente ao exemplo da Figura 2 usando uma notação alternativa. Figura 4: Código base para os exercícios 2.a e 2.b. Observação: A adição de restrições do tipo chave estrangeira podem causar erros quando são especificadas por referências circulares ou porque dizem respeito a uma tabela que ainda não foi criada. Para lidar com esse tipo de problema, essas restrições podem ser omitidas do comando CREATE TABLE, e depois acrescentadas usando o comando ALTER TABLE.
Figura 5: Código SQL para criação das tabelas compositor, música e composição apresentadas anteriormente. Figura 6: Exemplos de comandos de inserção
Figura 7: Exemplos de queries usando o comando SELECT Figura 8: Exemplos de utilização dos comandos ALTER, DROP, UPDATE e DELETE.