Descrio da aula
De uma forma simples e fcil, voc vai aprender o que so tabelas, linguagem de
definio de dados, linguagem de manipulao de dados e os comandos mais bsicos de
SQL.
Introduo
Nunca entendi o porque das pessoas complicarem algo to simples como a SQL, pois
desde nossa infncia ns aprendemos a criar, ler, atualizar e deletar informaes de todo
tipo, com vrias regras e formatos. Porque no pegamos um exemplo de nossas
brincadeiras mais divertidas de fazer com os nossas primas e primos sozinhos em um
dia de chuva sem internet? Estou falando do STOP.
Se voc no sabe de qual brincadeira se trata, entre neste
link: http://www.alienado.net/brincadeiras-de-stop-no-papel/. De todas as brincadeiras
que j joguei no papel, STOP uma das minhas preferidas. Mas o que isto tem de haver
com banco de dados e SQL? Calma que eu j chego l.
objeto VARCHAR(25),
animal VARCHAR(25),
fruta VARCHAR(25),
cor VARCHAR(25),
pts DOUBLE PRECISION
)
Jogando o stop
Depois de escolher a letra no dedo claro, comea a brincadeira. Se a letra for C
tranquilo mas se for H fica bem difcil. Eu sempre escrevia primeiro o nome, depois a
filme, CEP, carro, Objeto, MS e o resto. Porm quando via que algum escrevia o
mesmo nome que o meu eu logo trocava para ganhar mais pontos. Se voc escrevesse
besteira perdia pontos ento era bom deletar antes que algum gritasse STOP. Depois
era s rir das coisas que escreviam para ganhar mais pontos, porque na contagem final
valia mais os nomes diferentes.
Todo este negcio de escrever, ler, mudar e apagar as coisas tm um nome em banco de
dados e este nome CRUD que em ingls significa respectivamente:
Veja que no fazemos nada alm do que brincarmos com as tabelas, criando, lendo,
mudando e apagando linhas, assim como fazemos no STOP. Desta forma o CRUD
nada mais que princpios bsicos de armazenamento de dados atravs da linguagem
SQL. E adivinha o que o CRUD utiliza? A linguagem de modelagem de dados (DML),
que nada mais uma linguagem para modelar os dados, isto , a DML utilizada para
criar, ler, atualizar e deletar dados.
Observa-se desta maneira que a DML e DDL so conceitos to simples que ns
utilizamos at em uma brincadeira de adolescente. E a causa do seu sucesso
exatamente a sua simplicidade e facilidade no gerenciamento de bancos de dados.
claro que podemos fazer consultas mirabolantes, inseres de valores virtuosas, proezas
inimaginveis na SQL mas em resumo ela to fceis e simples como uma brincadeira.
Vamos ao exerccio
Um dos leitores do blog mandou um exerccio que utiliza todos os conceitos acima.
um exemplo de banco de dados de uma escola, onde tem tabelas de alunos, cursos,
disciplinas, professores etc. Na figura 3 ns temos o modelo conceitual do exerccio.
5. Por quinto a entidade cursos. Note que nesta entidade somente h dois campos:
o idcurso que nada mais que uma identificao da linha da tabela e o campo
nome que vai conter o nome do curso. Na vida real uma entidade pode variar o
nmero de campos que em mdia so de 5 a 50 campos. Porm como este
exemplo didtico ns temos poucos campos, somente o essencial para haver
um mnimo de consistncia da base da dados. Para entender mais sobre o
conceito de consistncia em banco de dados sugiro que leia a aula Banco de
Dados Conhecimento Bsico.
6. Por sexto a entidade associativa disciplinas_cursos. Uma entidade associativa
acontece quando duas entidades possuem uma relao de muitos para muitos,
neste exemplo os cursos podem ter muitas disciplinas e uma disciplina pode
estar em muitos cursos. Para entender melhor a entidade associativa sugiro que
leia o #5 Eu Respondo: Criando diagramas de banco de dados.
7. Por stimo a entidade disciplinas. Ela serve para registrar as disciplinas
oferecidas na escola, porm esta escola s oferece um conjunto de disciplinas
em um determinado curso.
8. Por oitavo a relao ministra. Observe que pelo sentido da seta a entidade
professor ministra uma disciplina. O que parece bvio pelo diagrama pode ficar
muito complicado se for somente por linha de cdigo, por isto to importante
desenhar e planejar todo o banco de dados antes de efetivamente constru-lo.
Aps descritos todos os elementos do diagrama acima a figura 4 ilustra o que acontece
quando gerado o modelo lgico. Eu alterei um pouco o modelo para ficar mais
compreensvel, porm foram poucas alteraes que no afetam um estudo dos arquivos
da aula.
Questes e resoluo
As questes do exerccio esto divididas por tpicos sendo que o primeiro pargrafo a
resoluo do exerccio em seguida a explicao da resposta.
Explicao da questo A
A primeira parte da questo trata-se exclusivamente da linguagem de definio de dados
(DDL). Atravs dela ns criamos e modelamos os dados dentro do banco de dados,
transformando o cdigo em uma tabela.
A segunda parte abrange o CRUD que utiliza a linguagem de modelagem de dados
(DML) para fazer as operaes com os dados j citadas nesta aula. As prximas
questes tratam somente da leitura dos dados utilizando consultas SQL, portanto esto
includas na linguagem de manipulao de dados.
Explicao da questo B
Observa-se que a tabela aluno teve que passar por vrias outras tabelas at chegar na
tabela disciplina. O tipo de ligamento utilizado foi o INNER JOIN pela sua
simplicidade. Para encontrar novas formas de ligar tabelas sugiro que leia a aula
Banco de Dados Conhecimento Bsico.
Explicao da questo C
Observa-se que praticamente a mesma coisa que a questo anterior porm com mais
uma ligao da tabela professor. O INNER JOIN timo pois liga as tabelas e as
indexa direitinho, porm este mtodo prejudica muito na performance, sendo
recomendvel utilizar outras formas de obter os dados. Porm como se trata de um
exerccio que visa uma maior clareza sacrificando a performance, no tem problema
algum em us-lo.
Explicao da questo D
A resoluo desta questo praticamente a mesma coisa da resoluo anterior,
mudando apenas as posies das tabelas. Outra propriedade utilizada para a
simplicidade do cdigo os aliases (apelido) das tabelas. Isto significa que toda vez que
eu colocar alguma letra em frente algum nome de uma tabela, esta letra vai referenciar
esta tabela. Por exemplo: professores PR. O aliase PR est referenciando a tabela
professores.