Bases de dados: Auto-associaçõesSQL: SELECTCarlos SantosLabMM 4 - NTC - DeCA - UAAula 06, 05-03-2013
Auto-associaçõesPretende-se modelar a seguinte situação numa BD:  • Num escritório os funcionários possuem (ou não) um sup...
Auto-associaçõesComo a FK pode admitir valores nulos e valores repetidos  • Um funcionário pode ser superior hierárquico d...
Auto-associações (solução alternativa)Utilizar uma tabela de relação com duas chaves estrangeiras que apontampara a mesma ...
Auto-associações (solução alternativa)Diferentes possibilidades:  • M:M - Se as duas FK admitirem valores repetidos (em ca...
SQL | Structured Query LanguageDesenvolvida no início dos anos 70. Permite a interação com os SGBD eas BD aí existentes. É...
SQL: SELECTVamos considerar como exemplo o exercício de gestão dos CDs. A basede dados designa-se “MeusCDs” e existe uma t...
SQL: SELECT ... WHEREPara selecionar um determinado conjunto de registos utiliza-se a cláusulaWHERE  • SELECT nome_colunas...
SQL: SELECT ... WHERE • SELECT * FROM MeusCDs.amigos WHERE nome = ”Rui”; • SELECT * FROM MeusCDs.amigos WHERE nome > ‘Carl...
SQL: SELECT ... WHERE ... LIKEWildcards em SQL com operador LIKE  • “_” -> pode ser substituído por qualquer caracter (mas...
SQL: SELECT ... WHERE ...  • SELECT * FROM MeusCDs.amigos WHERE nome LIKE ”%o%”;As condições também podem incluir os opera...
SQL: SELECT ... ORDER BY ...Os resultados finais podem ser ordenados pelos valores de uma ou maiscolunas  • SELECT nome_col...
SQL: SELECT ... ORDER BY ... • SELECT * FROM MeusCDs.amigos ORDER BY nome; • SELECT * FROM MeusCDs.amigos ORDER BY nome DE...
SQL: SELECT ... LIMIT ...Os resultados finais podem ser limitados a uma determinada gama deresultados  • SELECT nome_coluna...
SQL: SELECT ... LIMIT ... • SELECT * FROM MeusCDs.amigos LIMIT 1,2; • SELECT * FROM MeusCDs.amigos LIMIT 3,100;
Próximos SlideShares
Carregando em…5
×

LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL

715 visualizações

Publicada em

Publicada em: Educação
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
715
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
65
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL

  1. 1. Bases de dados: Auto-associaçõesSQL: SELECTCarlos SantosLabMM 4 - NTC - DeCA - UAAula 06, 05-03-2013
  2. 2. Auto-associaçõesPretende-se modelar a seguinte situação numa BD: • Num escritório os funcionários possuem (ou não) um superior hierárquico • Cada funcionário pode ter um único superior hierárquico • Cada superior hierárquico pode coordenar vários funcionáriosComo modelar esta relação numa BD? Funcionarios idFuncionarios Nome
  3. 3. Auto-associaçõesComo a FK pode admitir valores nulos e valores repetidos • Um funcionário pode ser superior hierárquico de vários outros • Podem existir funcionários sem superior hierárquicoSe a FK não permitir valores nulos (NOT NULL) • Não podem existir funcionários sem superior hierárquicoSe FK não permitir valores repetidos (UNIQUE) • Cada funcionário só pode ser superior hierárquico de um único funcionário • (a relação transforma-se numa 1:1)
  4. 4. Auto-associações (solução alternativa)Utilizar uma tabela de relação com duas chaves estrangeiras que apontampara a mesma chave primária!Cada uma das FK não admite valores nulos por ser parte duma chaveprimária composta. No entanto: • Funcionarios_idFuncionarios e Funcionarios_idFuncionarios1 podem ser configuradas com o parâmetro UNIQUE para evitar os valores repetidos em cada uma das colunas Nota: se a relação é do tipo 1:M, esta representação física não está totalmente correta. Ver a discussão iniciado do grupo no SAPO Campus!
  5. 5. Auto-associações (solução alternativa)Diferentes possibilidades: • M:M - Se as duas FK admitirem valores repetidos (em cada uma das colunas) • 1:M - Se apenas uma das FK admitir valores repetidos • 1:1 - Se nenhuma das FK admitir valores repetidos
  6. 6. SQL | Structured Query LanguageDesenvolvida no início dos anos 70. Permite a interação com os SGBD eas BD aí existentes. É suportada por todos os SGBDR (embora compequenas diferenças). Está estruturada em várias categorias: • Data Query Language (DQL) – consultar os dados existentes na BD • SELECT • Data Manipulation Language (DML) – criar e modificar os dados na BD • INSERT, UPDATE, DELETE • Data Definition Language (DDL) – criar e modificar objectos da BD (tabelas, views, …), ou a própria BD • CREATE, ALTER, DROP • Data Control Language (DCL) – gerir os privilégios dos utilizadores na gestão da BD, dos seus objectos e dos dados aí existentes • GRANT, REVOKE
  7. 7. SQL: SELECTVamos considerar como exemplo o exercício de gestão dos CDs. A basede dados designa-se “MeusCDs” e existe uma tabela com os “Amigos” • SELECT * FROM MeusCDs.Amigos; “Devolve todos os campos de todos os registos existentes na tabela Amigos da BD MeusCDs” • SELECT nome, email FROM MeusCDs.amigos; “Devolve os campos nome e email de todos os registos existentes na tabela Amigos da BD MeusCDs”
  8. 8. SQL: SELECT ... WHEREPara selecionar um determinado conjunto de registos utiliza-se a cláusulaWHERE • SELECT nome_colunas FROM nome_tabela WHERE nome_coluna operador valor;A ter em atenção: • a coluna da condição não tem que estar na lista nome_colunas • um valor do tipo string é escrito como “valor” ou ‘valor’ • os operadores possíveis de utilizar são: =, <>, >, <, >=, <=, BETWEEN, LIKE e IN • o operador LIKE só deve ser utilizado para pesquisas em campos do tipo string
  9. 9. SQL: SELECT ... WHERE • SELECT * FROM MeusCDs.amigos WHERE nome = ”Rui”; • SELECT * FROM MeusCDs.amigos WHERE nome > ‘Carlos’; • SELECT * FROM MeusCDs.amigos WHERE nome > Carlos; “Unknown column ‘Carlos’ in ‘WHERE clause’
  10. 10. SQL: SELECT ... WHERE ... LIKEWildcards em SQL com operador LIKE • “_” -> pode ser substituído por qualquer caracter (mas apenas 1) • “%” -> pode ser substituído por 0 ou mais caracteres • SELECT * FROM MeusCDs.amigos WHERE nome LIKE ”R%”; • SELECT * FROM MeusCDs.amigos WHERE nome LIKE ”r%”;
  11. 11. SQL: SELECT ... WHERE ... • SELECT * FROM MeusCDs.amigos WHERE nome LIKE ”%o%”;As condições também podem incluir os operadores lógicos: AND, OR e NOT • SELECT * FROM MeusCDs.amigos WHERE nome="pedro" OR email LIKE "r%";
  12. 12. SQL: SELECT ... ORDER BY ...Os resultados finais podem ser ordenados pelos valores de uma ou maiscolunas • SELECT nome_colunas FROM nome_tabela ... ORDER BY nome_coluna(s) [ASC|DESC]A ter em atenção: • a coluna que tem mais prioridade é a que aparece primeiro na lista de colunas • por defeito, a ordenação é ascendente
  13. 13. SQL: SELECT ... ORDER BY ... • SELECT * FROM MeusCDs.amigos ORDER BY nome; • SELECT * FROM MeusCDs.amigos ORDER BY nome DESC;
  14. 14. SQL: SELECT ... LIMIT ...Os resultados finais podem ser limitados a uma determinada gama deresultados • SELECT nome_colunas FROM nome_tabela LIMIT X,Y;A ter em atenção: • X é o índice do primeiro elemento do resultado global que queremos obter • Y é o número de resultados • mecanismo muito útil para criar sistemas de paginação! Porquê?
  15. 15. SQL: SELECT ... LIMIT ... • SELECT * FROM MeusCDs.amigos LIMIT 1,2; • SELECT * FROM MeusCDs.amigos LIMIT 3,100;

×