Banco de Dados 1
Horário
Segunda e Quarta, às 16:40
Slack
Todo material de aula será postado no Slack. Para acessar: http://bit.ly/2G5OIqX
Objetivo
Introduzir os fundamentos que permitam ao aluno adquirir o domínio básico da tecnologia de banco de dados.
Ementa
Conceitos básicos de banco de dados. Modelos de dados e linguagens. Projeto de bancos de dados. Novas tecnologias e aplicações de banco de dados.
Bibliografia
- HEUSER, Carlos Alberto. Projeto de Banco de Dados. 2a edição. Porto Alegre: Sagra - Luzzato, 1999.
- SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Sistema de Banco de Dados. 3a edição. São Paulo: Markon Books, 1999.
Material extra
- Smelly Relations: Measuring and Understanding Database Schema Quality
- Search-Based Test Data Generation for SQL Queries
- Database smell detector
- How to get a data science position after academia with no previous industry experience
- A growing collection of what I know about analyzing GitHub with BigQuery and other tools
- How to Perform Set Operations on Terabyte Files
- Data Science at the command line
- Apostila sobre SQL (Alura)
Avaliação
- Exercícios em sala: 3 pontos (1pt cada exercício)
- Projeto sobre modelagem de dados: 4 pontos
- Prova sobre modelagem de dados: 4 pontos
- Projeto de disciplina (PD): 10 pontos
- Atividade extra (AE): 2 pontos
Projeto sobre modelagem de Dados
Os alunos devem criar o modelo entidade relacionamento de um sistema de software não trivial. Os alunos devem apontar o sistema escolhido no Slack. O critério de escolha é first come, first served. O trabalho é em dupla. Cada dupla deve descrever em profundidade o sistema escolhido. No entanto, entidades e relacionamentos que não são vitais para o domínio da aplicação não precisam ser descritos. A dupla deve saber justificar as escolhas e implementações feitas. A dupla deverá apresentar o trabalho na data marcada. Na apresentação, a dupla deve descrever o domínio do problema da aplicação escolhida (o que ela faz), as entidades e seus relacionamentos. A riqueza de detalhes (atributos e seus tipos, relacionamentos e seus tipos) é importante para as principais entidades do sistema. Os modelos devem conter, no mímimo, as seguintes características: (1) cardinalidade mínima e máxima, (2) atributo simples, identificador e multivalorado, (3) relacionamento com atributo, (4) relacionamento unário, (5) relacionamento ternário, (6) entidade fracas. Não é necessário descrever essas características para todas entidades e relacionamento; somente para aquelas que representam o core da aplicação. A não apresentação de uma das características acarretará na redução de 0.50 pontos da atividade (somado para cada característica pendente). Se a dupla optar por usar um software de modelagem que não implemente as características mencionadas anteriormente, certifiquem-se de modificar os diagramas para que essas características sejam cobertas. No mímimo de 3 horas antes da apresentação, a dupla deve enviar os slides bem como o diagrama para o slack (o não envio no prazo estipulado acarretará na redução de 2 pontos da atividade). As duplas que apresentarem no segundo dia serão mais cobradas. Apresentação de até 25 minutos por dupla.
Projeto de Disciplina (PD)
No projeto de disciplina, o aluno deverá abordar na prática alguns dos conceitos vistos em sala de aula. Um exemplo de PD: Configure a ferramenta DbDeo e execute-a em vários bancos de dados existentes (no seu estágio, de software livre, etc). O professor é responsável por apresentar vários PDs, mas o aluno poderá sugerir um PD do seu interesse. No entanto, o PD deve ser uma atividade que justifique o tempo dedicado para sua execução (em torno de 3 semanas). O projeto de disciplina deve ser feito em dupla.
Algumas outras possíveis atividades para o projeto de disciplina:
- Rodar algum algoritmo de aprendizado de máquina em alguma base de dados (exemplo aqui)
- Importar CSVs de algum projeto (como o o dadosbr) para um banco de dados e extrair informações relevantes
- Utilizar alguma biblioteca de visualização (exemplo aqui) de dados em algum banco de dados
- Aplicar alguma ferramenta de análise de performance em algum banco de dados já existente
- Exportar dados de algum banco de dados relacional, e utilizar alguma biblioteca de análise de dados (por exemplo, pandas) (exemplo aqui)
- Rodar alguma ferramenta de mapeamento objeto relacional em algum banco de dados já existente (exemplo aqui)
- Realizar um processo de limpeza de dados em alguma base de dados já existente (por exemplo)
- Implementar o trabalho do seminário em algum bando de dados relacional
Base de dados abertas
- StackOverflow: http://data.stackexchange.com/stackoverflow/queries
- Github: https://cloud.google.com/bigquery/public-data/github e http://ghtorrent.org/ (exemplos aqui)
- Wikipedia: https://bigquery.cloud.google.com/dataset/fh-bigquery:wikipedia?pli=1 (exemplos aqui)
Trabalhos escolhidos
- Planilha com os trabalhos: https://docs.google.com/spreadsheets/d/10JXQf0ZQL2KcnwaRFkNWvoOLXFi2Lsgw_3D-en_4O_c/edit#gid=0
Atividade Extra (AE)
Alunos interessados em fazer a atividade extra devem entrar em contato com o professor, avisando o interesse, até o dia 16/04. As instruções da atividade extra será passada para o aluno interessado. A atividade extra é individual.
Nota final
Soma de todas as atividades dividido por dois.
Cronograma
Passível de alterações.
# | Data | Conteúdo de Aula |
1 | 19/03 | Apresentação |
2 | 21/03 | Conceitos e Arquitetura de SGBD |
3 | 26/03 | Modelo ER (Definir trabalhos) |
4 | 28/03 | Modelo ER |
5 | 02/04 | Modelo ER |
6 | 04/04 | Exercícios (em sala) |
7 | 09/04 | Revisão Entidades-Relacionamentos |
8 | 11/04 | NÃO TEREMOS AULA |
9 | 16/04 | Modelo ER |
9 | 18/04 | Apresentação de trabalhos (Parte 1) |
9 | 23/04 | GREVE DOS RODOVIARIOS |
10 | 25/04 | Apresentação de trabalhos (Parte 2) |
11 | 30/04 | Prova 1 |
13 | 02/05 | DDL E DML |
12 | 07/05 | SQL CREATE, INSERT |
14 | 09/05 | NAO TEREMOS AULA |
15 | 14/05 | SQL SELECT, DELETE e UPDATE |
16 | 16/05 | SQL COMPLEXO |
17 | 21/05 | Exercícios (em sala) |
18 | 23/05 | SQL Funções |
19 | 28/05 | AULA SUSPENSA: GREVE |
20 | 28/05 | SQL Subqueries |
20 | 04/06 | Normalização |
20 | 06/06 | Exercícios (em sala) |
20 | 11/06 | Acompanhamento de projetos |
20 | 13/06 | Acompanhamento de projetos |
20 | 18/06 | NAO TEREMOS AULA |
20 | 20/06 | NAO TEREMOS AULA |
21 | 25/06 | Apresentação de projetos de disciplina (Parte 1) |
22 | 27/06 | Apresentação de projetos de disciplina (Parte 2) |
23 | 02/07 | Atividade Extra |
Entrega atrasada
Entregas de trabalhos após o prazo serão aceitas mas os pontos referentes não serão contabilizados.
Política de plágio
Todos os trabalhos (a não ser que indicados explicitamentes) devem ser feitos de forma individual. O que você entregar deve ser fruto do seu trabalho. Alunos são permitidos e encorajados para discutir os trabalhos e projetos com outros alunos. Alunos não são permitidos copiar solução ou parte de solução de colegas. Na presença de plágio, os alunos envolvidos não receberão pontos da atividade em questão.