Baixe o app para aproveitar ainda mais
Prévia do material em texto
MCG241'–'Sistemas'de'Informação' ' ' Profa.'Janaína'Gomide' 1'Janaína'Gomide' ' ' 03'–'Banco'de'Dados' ! ! ' 2'Janaína'Gomide' Definição'?' ' ' ' 3'Janaína'Gomide' Conceitos'básicos' ' ' ' 4'Janaína'Gomide' Conceitos'básicos' • Uma'pessoa'por'vez'acessando' • Busca'sequencial' • Quem'pode'atualizar?' ' • Pode'Mrar'2'fichas'ao'mesmo'tempo?' • E'se'uma'pessoa'está'com'a'ficha'e'uma'outra'não'encontra'a' ficha,'então'cria'uma'nova;'2'fichas'para'mesmo'cliente?' • E'se'precisar'de'fichários'diferentes'para'dados'diferentes?' ' ' ' 5'Janaína'Gomide' Conceitos'básicos' • Como'seria'o'banco'de'dados'da'UFRJUMacaé?' ! Turmas' ! Alunos' ! Professores' ! Disciplinas' ! Currículo' ! Horários' ' ' ' 6'Janaína'Gomide' Conceitos'básicos' • Como'seria'o'banco'de'dados'da'UFRJUMacaé?' ' ' ' 7'Janaína'Gomide' Nome! Rua! Nro! Cidade! Estado! email! Janaina' Gomide' Av.'do' Aloízio' 50' Macaé' RJ' janainagomide' Danilo'de' Freitas' Av.'do' Aloízio' 50' Macaé' RJ' danilo.freitas' Anselmo' Pestana' Av.'do' Aloízio' 50' Macaé' RJ' anselmopestan a' Guto' Garcia' Av.'do' Aloízio' 50' Macaé' RJ' gutogarcia' Conceitos'básicos' • Como'seria'o'banco'de'dados'da'UFRJUMacaé?' ' ' ' 8'Janaína'Gomide' Nome! Rua! Nro! Cidade! Estado! email! Janaina' Gomide' ' ' ' Av.!do! Aloízio! ' ' ' 50! ' ' ' Macaé! ' ' ' RJ! ' janainagomide' Danilo'de' Freitas' danilo.freitas' Anselmo' Pestana' anselmopestan a' Guto' Garcia' gutogarcia' Conceitos'básicos' • Quais'dados'armazenar?' • Como'modelar'os'dados?' • Como'consultar?' • Atualizar?' • Quem'pode'acessar?' ' ' 9'Janaína'Gomide' Conceitos'básicos' • Banco'de'dados' fornece'acesso'seguro'e'eficiente'a' grandes'quanMdade'de'dados' • Resolve' problemas' de' armazenamento,' consulta' eficiente,' acesso' e' atualização' com' segurança' por' múlMplos'usuários' ' ' 10'Janaína'Gomide' Definições' • [Chu,'1985]' Um' banco' de' dados' é' um' conjunto' de' arquivos' relacionados'entre'si.' ' • [Date,1975]' Um' banco' de' dados' é' uma' coleção' de' dados' operacionais' usados' pelas' aplicações' de' uma' determinada'organização.' ' ' 11'Janaína'Gomide' Definições' • [Elmasri'&'Navathe,'2000]' Um' banco' de' dados' é' uma' coleção' de' dados' relacionados.' Entretanto,' um' BD' possui' as' seguintes' propriedades' implícitas:' 1. Representa'aspectos'do'mundo'real' 2. É' uma' coleção' de' dados' logicamente' coerentes' com' algum' significado'inerente' 3. É' projetado,' construído' e' instanciado' (“povoado”)' para' uma' aplicação'específica.' 12'Janaína'Gomide' Banco'de'Dados'em'diversas'áreas' Exemplos:' ' • Aplicações'bancárias:'contas'bancárias,'agências' • Reservas'de'passagens:'passagem,'passageiros,'pilotos' • Aplicações'hospitalares:'pacientes,'médicos,'remédios' • Universidades:'estudantes,'turmas,'professores' 13'Janaína'Gomide' Vantagens'de'usar'um'Banco'de'Dados' • Controle'de'redundância'dos'dados' • Controle'de'acesso'(segurança)' • Armazenamento'persistente'dos'dados' • Existência'de'múlMplas'interfaces'para'os'usuários' • Representação'de'restrições'de'integridade' • Acesso' mulMUusuário' (controle' de' concorrência' e' recuperação'de'falhas)' 14'Janaína'Gomide' Exemplo'de'Banco'de'Dados' • MiniUmundo:'parte'de'uma'universidade' • Alguns'integrantes' – Alunos' – Disciplinas' – Departamentos' • Alguns'relacionamentos' – Disciplinas'são'oferecidas'por'Departamentos' – Alunos'estão'matriculados'em'Disciplinas' 15'Janaína'Gomide' Exemplo'de'Banco'de'Dados' 16'Janaína'Gomide' Exemplo'de'Banco'de'Dados' 17'Janaína'Gomide' CaracterísMcas'da'Abordagem'de'BD' 18'Janaína'Gomide' • AutoUdescrição'dos'dados' • Isolamento'entre'programas'e'dados:'abstração'de'dados' • Suporte'a'múlMplas'visões'dos'dados' • ComparMlhamento'de'dados'e'processamento'de'transações' concorrentes' Mais'alguns'exemplos...' 19'Janaína'Gomide' Mais'alguns'exemplos...' 20'Janaína'Gomide' Mais'alguns'exemplos...' 21'Janaína'Gomide' Mais'alguns'exemplos...' 22'Janaína'Gomide' Banco'de'Dados'em'diversas'áreas' • Economia' • Engenharia' • Medicina' • Educação' Qualquer'aplicação'precisa'de'dados!' E' os' dados' precisam' ser' armazenados,' gerenciados,' consultados,'recuperados!' 23'Janaína'Gomide' Banco'de'Dados'em'diversas'áreas' • Economia' • Engenharia' • Medicina' • Educação' Qualquer'aplicação'precisa'de'dados!' E' os' dados' precisam' ser' armazenados,' gerenciados,' consultados,'recuperados!''''''''''''''''SGBD! 24'Janaína'Gomide' Sistema'de'Gerência'de'Banco'de'Dados' • Um'Sistema'de'Gerência'de'Banco'de'Dados'(SGBD)' é' um' conjunto' de' programas' que' permite' criar' e' manter'(manipular)'um'banco'de'dados' ' • BD!+!SGBD!=!sistema!de!banco!de!dados! 25'Janaína'Gomide' Sistema'de'Banco'de'Dados' 26'Janaína'Gomide' Sistema'de'Banco'de'Dados' 27'Janaína'Gomide' Vantagens'da'UMlização'de'um'SGBD' • Controle'de'redundância'dos'dados' – ComparMlhamento'informações'replicadas' • Manutenção'de'restrições'de'integridade' • Controle'de'acesso'(segurança)' • Armazenamento'persistente'dos'dados' • Existência'de'múlMplas'interfaces'para'os'usuários' • Representação'de'relacionamentos'complexos'entre' os'dados' • Recuperação'de'falhas' 28'Janaína'Gomide' Implicação'da'Abordagem'de'BD' • Adoção/imposição'de'padrões' • Redução' do' tempo' de' desenvolvimento' das' aplicações' • Flexibilidade' • Atualidade'da'informação'disponível' • Economia'de'escala' 29'Janaína'Gomide' Quando'NÃO'uMlizar'um'SGBD' • Aplicações' simples' e' bem' definidas' onde' não' se' espera'mudanças' • Aplicações' onde' não' é' necessário' acesso' mulMU usuário' • MoMvos:' – InvesMmento'inicial'alto' – Generalidade'na'definição'e'manipulação'dos'dados' – Custo'adicional'para'prover'outras'facilidade'funcionais' 30'Janaína'Gomide' Para'lembrar...' • [Elmasri'&'Navathe,'2000]' Um' banco' de' dados' é' uma' coleção' de' dados' relacionados.' Entretanto,' um' BD' possui' as' seguintes' propriedades' implícitas:' 1. Representa'aspectos'do'mundo'real' 2. É' uma' coleção' de' dados' logicamente' coerentes' com' algum' significado'inerente' 3. É' projetado,' construído' e' instanciado' (“povoado”)' para' uma' aplicação'específica.' 31'Janaína'Gomide' • E'ai?' • Por'onde'começar?' 32'Janaína'Gomide' Modelos'de'Dados,'Esquema'e'Instância' 33'Janaína'Gomide' Modelos'de'Dados,'Esquema'e'Instância' 34'Janaína'Gomide' Modelos'de'Dados,'Esquema'e'Instância' • Esquema'do'BD' – Armazenamento'no'catálogo' – Mudanças'muito'menos'frequentes' • Estado'do'BD' – Dados'do'banco'em'qualquer'ponto'do'tempo' – Inicialmente'vazio' – Muda'frequentemente' – Validade'parcialmente'garanMda'pelo'SGBD' 35'Janaína'Gomide' Arquitetura'de'um'Sistema'de'BD' • CaracterísMcas'do'enfoque'de'BD' – Isolamento'de'programas'e'dados' – Suporte'de'visões'múlMplas'de'usuários' – Catálogo'para'armazenar'a'descrição'(esquema)'do'BD' • Arquitetura'de'três'níveis' – Mantém'independência'de'dados'e'programas' – Suporta'múlMplas'visões' 36'Janaína'Gomide' Arquitetura'de'um'Sistema'de'BD' Componentes! ' 1. Esquema'interno' – Descreve'armazenamento'tsico' 2. Esquema'conceitual' – Descreve' enMdades,' Mpos' de' dados,' relacionamentos,' operações'e'restrições' – Esconde'detalhes'de'armazenamento' 3. Esquemas'externos'(visões)' – Descreve'porções'do'banco'para'diferentes'comunidades' 37'Janaína'Gomide' Arquitetura'de'um'Sistema'de'BD' 38'Janaína'Gomide'Arquitetura'de'um'Sistema'de'BD' Exemplo! ' 1. Esquema'interno' – Relações'guardadas'como'arquivos'desordenados' – Índices'na'primeira'coluna'de'estudantes' 2. Esquema'conceitual' – Estudantes' (eid:' string,' nome:' string,' login:' string,' idade:' integer,'gpa:'real)' – Cursos'(cid:'string,'cnome:'string,'creditos:'integer)' – Matricula'(eid:'string,'cid:'string,'nota:'string)' 3. Esquemas'externos'(visões)' – Info_Curso'(cid:'string,'horário:'string)' 39'Janaína'Gomide' Arquitetura'de'um'Sistema'de'BD' 40'Janaína'Gomide' Altera'um'nível,'' ' outro'também'altera?' Independência'de'Dados' • Capacidade' de' se' alterar' o' esquema' em' um' determinado' nível' SEM' alterar' o' esquema' (ou' esquemas)'do'nível'imediatamente'mais'alto' VANTAGEM:' • Imunidade' dos' programas' em' relação' a' mudanças'na'estrutura'do'banco'de'dados' • Um'dos'maiores'benetcios'de'usar'SGBD!' 41'Janaína'Gomide' Independência'de'Dados' • Independência'de'dados'lógica:' – Capacidade' de' alterar' o' esquema' conceitual' sem' alterar'o'esquema'externo'ou'aplicações' • Independência'de'dados'tsica:' – Capacidade'de'mudar'o'esquema'interno'sem'mudar' o'esquema'conceitual'('ou'externo)' • Ex.'Reorganização'de'arquivos'para'melhorar'desempenho' 42'Janaína'Gomide' Independência'de'Dados' 43'Janaína'Gomide' Exercício' 44'Janaína'Gomide' • Como' seria' o' esquema' de' um' Banco' de' Dados' para' armazenar' os' usuários' e' as' publicações' de' uma'rede'social?' – Quais'atributos'para'os'usuários?' – Quais'atributos'para'as'publicações?' – Como'usuário'e'publicação'se'relacionam?' – Como'seriam'as'tabelas?'Faça'um'exemplo...' Revisão...' 45'Janaína'Gomide' • [Elmasri'&'Navathe,'2000]' Um' banco' de' dados' é' uma' coleção' de' dados' relacionados.' Entretanto,' um' BD' possui' as' seguintes' propriedades' implícitas:' 1. Representa'aspectos'do'mundo'real' 2. É' uma' coleção' de' dados' logicamente' coerentes' com' algum' significado'inerente' 3. É' projetado,' construído' e' instanciado' (“povoado”)' para' uma' aplicação'específica.' Revisão...' 46'Janaína'Gomide' • Um'Sistema'de'Gerência'de'Banco'de'Dados'(SGBD)' é' um' conjunto' de' programas' que' permite' criar' e' manter'(manipular)'um'banco'de'dados' • Esquema'do'BD' – Armazenamento'no'catálogo' – Mudanças'muito'menos'frequentes' • Estado'do'BD' – Dados'do'banco'em'qualquer'ponto'do'tempo' – Inicialmente'vazio' – Muda'frequentemente' – Validade'parcialmente'garanMda'pelo'SGBD' Revisão...' 47'Janaína'Gomide' • Arquitetura'de'Banco'de'Dados:' • CaracterísMcas'do'enfoque'de'BD' – Isolamento'de'programas'e'dados' – Suporte'de'visões'múlMplas'de'usuários' – Catálogo'para'armazenar'a'descrição'(esquema)'do'BD' • Arquitetura'de'três'níveis' – Mantém'independência'de'dados'e'programas' – Suporta'múlMplas'visões' Revisão...' Independência!de!Dados! • Capacidade' de' se' alterar' o' esquema' em' um' determinado' nível' SEM' alterar' o' esquema' (ou' esquemas)'do'nível'imediatamente'mais'alto' VANTAGEM:' • Imunidade' dos' programas' em' relação' a' mudanças'na'estrutura'do'banco'de'dados' • Um'dos'maiores'benetcios'de'usar'SGBD!' 48'Janaína'Gomide' Como!modelar?! ! ! Modelo'EnMdade'Relacionamento' 49'Janaína'Gomide' Conceitos'do'modelo'relacional' • O'modelo'relacional'representa'o'banco'de'dados' como'uma'coleção'de'relações.' • Informalmente,'cada'relação'é'semelhante'a'uma' tabela'de'valores.' • Quando' uma' relação' é' considerada' uma' tabela' de' valores,' cada' linha'na' tabela' representa' uma' coleção'de'valores'de'dados'relacionados.' 50'Janaína'Gomide' Conceitos'do'modelo'relacional' • Uma'linha'na'tabela'é'chamada'de'tupla.' • Um'cabeçalho'da'coluna'é'chamado'de'atributo.' • A'tabela'é'chamada'de'relação.' 51'Janaína'Gomide' Conceitos'do'modelo'relacional' 52'Janaína'Gomide' Restrições' 53'Janaína'Gomide' • No' banco' de' dados' relacional' haverá' muitas' relações,' e' as' tuplas' nessas' relações' são' relacionadas'de'várias'maneiras.' • Existem'muitas' restrições' sobre' os' valores' reais' em'um'estado'do'banco'de'dados.' • Essas' restrições' são' derivadas' das' regras' do' minimundo'que'o'banco'de'dados'representa.' Restrições' Restrições'de'domínio' 54'Janaína'Gomide' • As'restrições'de'domínio'especificam'que'valor'cada' atributo'pode'assumir.' • Os'Mpos'de'dados'associados'aos'domínios'incluem:' – Tipos'de'dados'numéricos'para'inteiros'e'números'reais' – Caracteres,' booleanos,' cadeia' de' caracteres' de' tamanho' fixo'ou'variável' – Data,'hora,'moeda'e'outros'Mpos'especiais' • Outros' domínios' podem' ser' descritos' por' um' subintervalo'dos'valores'possíveis.' 55'Janaína'Gomide' • O'Mpo'de'dado'que'descreve'os'Mpos'de'valores' que' podem' aparecer' em' cada' coluna' é' representado' por' um' domínio' de' valores' possíveis.' Restrições' Restrições'de'domínio' Restrições' Restrições'de'chave' 56'Janaína'Gomide' • No'modelo'relacional,'uma'relação'é'definida'por' um'conjunto'de'tuplas.' • Todas' as' tuplas' em' uma' relação' precisam' ser' disMntas,' ou' seja,' duas' tuplas' não' podem' ter' a' mesma'combinação'de'valores'para'todos'os'seus' atributos.' • Existem' subconjuntos' de' atributos' de' um' esquema'para' os' quais' duas' tuplas' não'deverão' ter'a'mesma'combinação'de'valores.' Restrições' Restrições'de'chave' 57'Janaína'Gomide' • Uma'chave'saMsfaz'duas'propriedades:' 1. Duas'tuplas'disMntas'em'qualquer'estado'da'relação'não' podem'ter'valores'idênMcos'para'os'atributos'na'chave.' 2. Ela'é'uma'superchave'mínima'–'ou'seja,'uma'superchave' da'qual'não'podemos'remover'nenhum'atributo'e'ainda' mantemos'uma'restrição'de'exclusividade' • O'valor'de'um'atributo'de'chave'pode'ser'usado'para' idenMficar'exclusivamente'cada'tupla'na'relação' Restrições' Restrições'de'chave' 58'Janaína'Gomide' • No'exemplo'abaixo,'qual'seria'a'chave'da'relação' aluno?' Restrições' Restrições'de'chave' 59'Janaína'Gomide' • Um'esquema'de'uma'relação'pode'ter'mais'de'uma'chave.' • Cada'chave'é'chamada'de'chave'candidata.' • Uma'das'chaves'candidatas'é'a'chave'primária'da'relação.' • A' relação' CARRO,' com' duas' chaves' candidatas:' Placa' e' Numero_chassi' • Apenas'a'chave'primária'é'sublinhada.' EnMdades' • EnMdades' – Objetos' do' mundo' real' que' são' de' interesse' para' alguma'aplicação' Empregado' ' Departamento' 60'Janaína'Gomide' Atributos' • Atributos' – Propriedades'para'descrever'uma'enMdade' 61'Janaína'Gomide' Tipos'de'atributos' • Simples'ou'compostos' – Ex.'Endereço' • Monovalorados'ou'mulMvalorados' – Ex.'Profissão' • Armazenados'ou'derivados' – Data'de'nascimento'U>'Idade' – Empregados'trabalhando'no'departamento'U>'Número'de' empregados' • Valores'Null' – Não'aplicável:'Número'do'apartamento' – Desconhecido:'Telefone'de'casa' 62'Janaína'Gomide' Tipos'de'atributos' 63'Janaína'Gomide' Exercícios' 64'Janaína'Gomide' Analise'e'desenhe'um'modelo'ER'para'cada'um'dos'casos'abaixo:' 1. Um'empregado'tem'CPF'e'Nome.' 2. Um'departamento'tem'um'Código'e'um'Nome' 3. Um'curso'tem'um'código,'um'nome'e'uma'duração' 4. Um'professor'tem'um'código'e'um'nome' Exercícios' 65'Janaína'Gomide' Analise'e'desenhe'um'modelo'ER'para'cada'um'dos'casos'abaixo:' 1. Um'empregado'tem'CPF'e'Nome.' 2. Um'departamento'tem'um'Código'e'um'Nome' Exercícios' 66'Janaína'Gomide' Analise'e'desenhe'um'modelo'ER'para'cada'um'dos'casos'abaixo:' 3. Um'curso'tem'um'código,'um'nome'e'uma'duração' 4. Um'professor'tem'um'código'e'um'nome' Relacionamentos' • Associações' entre' duas' ou' mais' enMdades' disMntas'com'um'significado' • Exemplo:'– Empregado' John' Smith' trabalha! para' Departamento' pesquisa' 67'Janaína'Gomide' Relacionamentos' • Relacionamento'umUparaUum'1:1' 68'Janaína'Gomide' Relacionamentos' • Relacionamento'umUparaUmuitos'1:N' 69'Janaína'Gomide' Relacionamentos' • Relacionamento'muitosUparaUmuitos'N:M' 70'Janaína'Gomide' Relacionamentos' • Relacionamento'muitosUparaUmuitos'N:M' 71'Janaína'Gomide' Exercícios' Analise'e'desenhe'um'modelo'ER'para'cada'um'dos'casos'abaixo:' 1. Um' membro' da' equipe' gerencia' vários' clientes.' Um' cliente' nunca'será'contactado'por'mais'de'um'membro'da'equipe' 2. Uma'pessoa'pode'consultar'diversos'livros.'Estes'podem'ser'lidos' por'vários'alunos'em'momentos'diferentes' 3. Cada' aluno' parMcipa' de' diversas' palestras.' Cada' palestra' é' assisMda'por'diversos'alunos.'Um'professor'dá'diversas'palestras.' Cada'palestra'é'dada'por'um'professor' 4. Cada' cliente' pode' abrir' várias' contas' correntes.' Cada' conta' é' aberta' por' um' cliente.' Cada' banco' gerencia' diversas' contas.' Cada'conta'é'gerenciada'por'um'banco.' 72'Janaína'Gomide' Exercícios' 1. Um' membro' da' equipe' gerencia' vários' clientes.' Um' cliente' nunca'será'contactado'por'mais'de'um'membro'da'equipe' 73'Janaína'Gomide' Exercícios' 2. Uma'pessoa'pode'consultar'diversos'livros.'Estes'podem'ser'lidos' por'vários'alunos'em'momentos'diferentes' 74'Janaína'Gomide' Exercícios' 3. Cada' aluno' parMcipa' de' diversas' palestras.' Cada' palestra' é' assisMda'por'diversos'alunos.'Um'professor'dá'diversas'palestras.' Cada'palestra'é'dada'por'um'professor' 75'Janaína'Gomide' Exercícios' 4. Cada' cliente' pode' abrir' várias' contas' correntes.' Cada' conta' é' aberta' por' um' cliente.' Cada' banco' gerencia' diversas' contas.' Cada'conta'é'gerenciada'por'um'banco.' 76'Janaína'Gomide' • Além' das' restrições' de' domínio' e' chave,' dois' outros'Mpos'de'restrições'são'considerados'parte' do'modelo'relacional:'' – integridade'de'enMdade' – integridade'relacional' 77'Janaína'Gomide' Restrições' Restrições'de'integridade' • A'restrição'de'integridade'de'enMdade'afirma'que' nenhum'valor'de'chave'primária'pode'ser'NULL.' • Isso' porque' o' valor' de' chave' primária' é' usado' para' idenMficar' tuplas' individuais' em' uma' relação.' • As' restrições' de' chave' e' de' integridade' são' especificadas'sobre'relações'individuais.' 78'Janaína'Gomide' Restrições' Restrições'de'integridade'de'enMdade' • A' restrição' de' integridade' referencial' é' especificada' entre' duas' relações' e' usada' para' manter' a' consistência' entre' tuplas'nas'duas'relações.' • A' restrição'de' integridade' referencial' afirma'que'uma' tupla' em' uma' relação' que' referencia' outra' relação' precisa' se' referir'a'uma'tupla'existente'nessa'relação.' • Por'exemplo,'um'funcionário'trabalha'em'um'departamento.' Na'relação'Funcionário'há'o'número'de'departamento'para'o' qual' trabalha.' Logo,'o' valor'para'departamento'na' tupla'de' Funcionário'precisa'combinar'com'o'valor'de'departamento' em'alguma'tupla'na'relação'Departamento.' 79'Janaína'Gomide' Restrições' Restrições'de'integridade'referencial' • A'restrição'de'integridade'referencial'é'definida'por'meio'da' chave'estrangeira'(foreign(key)'' 80'Janaína'Gomide' Restrições' Restrições'de'integridade'referencial' • A'restrição'de'integridade'referencial'é'definida'por'meio'da' chave'estrangeira'(foreign(key)'' 81'Janaína'Gomide' Restrições' Restrições'de'integridade'referencial' • Tipos'de'enMdade'que'não'têm'chave'própria' • As' ins tânc ias' são' idenMficadas' a t ravés' do' relacionamento' com' enMdades' de' outro' Mpo,' chamado' dono' ou' idenMficador,' juntamente' com' os' valores' de' alguns'atributos'(chave'parcial)' 82'Janaína'Gomide' EnMdade'Fraca' 83'Janaína'Gomide' EnMdade'Fraca' Exemplo' • Banco'de'dados'de'uma'empresa' ' • Essa' empresa' tem' departamentos,' projetos' e' empregados' • Tem'algumas'restrições'e'relações'que'devem'ser' consideradas...' 84'Janaína'Gomide' Exemplo' • Os'departamentos:' – Tem'um'nome'único' – Tem'um'número'único' – Um'empregado'gerencia'o'departamento' – DeveUse' registrar' a' data' de' quando' o' empregado' começou'a'gerenciar'o'departamento' – Um'departamento'pode'ter'várias'localizações' 85'Janaína'Gomide' Exemplo' • Os'projetos:' – Tem'um'nome'e'número'únicos' – Uma'única'localização' • Um' departamento' controla' um' número' de' projetos' 86'Janaína'Gomide' Exemplo' • Os'empregados:' – Nome,'idenMdade,'endereço,'salário,'sexo,'data'de'nascimento' • Um'empregado'é'assinalado'a'um'departamento' • Pode'trabalhar'em'diversos'projetos' • O'número'de'horas' por' semana'que'o' empregado' trabalha' em' cada' projeto' e' o' supervisor' direto' de' cada' empregado' devem'ser'armazenados' ' 87'Janaína'Gomide' Exemplo' • Registro'para'cada'empregado' – Número'de'dependentes' – Para'cada'dependente:' • Primeiro'nome,'sexo,'data'de'nascimento'e'relacionamento'com' o'empregado.' ' 88'Janaína'Gomide' 89'Janaína'Gomide' 90'Janaína'Gomide' 91'Janaína'Gomide' 92'Janaína'Gomide' 93'Janaína'Gomide' 94'Janaína'Gomide' 95'Janaína'Gomide' Revisando...' • O' modelo' relacional' representa' um' banco' de' dados' como'um'conjunto'de'relações' • Informalmente:' Uma'relação'='uma'tabela'de'valores' ' – Cada'linha'representa'uma'coleção'de'dados'relacionados' – Cada' linha' de' uma' tabela' representa' um' “fato”' que' Mpicamente' corresponde' a' uma' enMdade' ou' relacionamento'do'mundo'real' ' 96'Janaína'Gomide' Revisando...' • Uma'linha'na'tabela'é'chamada'de'tupla.' • Um'cabeçalho'da'coluna'é'chamado'de'atributo.' • A'tabela'é'chamada'de'relação.' 97'Janaína'Gomide' Revisando...' " EnMdade' " Atributo' – Tipos:' S imples' ou' composto;' monovalorados' ou' mulMvalorados;'armazenados'ou'derivados;'valores'NULL' " Relacionamento' – 1:1''ou'1:N''ou''N:M' " EnMdade'fraca' " Restrições:' – Domínio' – Chave' – Integridade'de'enMdade' – Integridade'relacional' " Modelo'ER' 98'Janaína'Gomide' 99'Janaína'Gomide' ? Mapeamento'ER'''''''Relacional'' 100'Janaína'Gomide' Mapeamento'ER'''''''Relacional'' • O' algoritmo' de' mapeamento' faz' a' conversão' dos' construtores' básicos' (enMdades,' atr ibutos' e' relacionamentos)'em'relações.' 1. EnMdade'regulares' 2. Atributos'mulMvalorados' 3. EnMdades'fracas' 4. Relacionamentos' a) Relacionamento'binários'1:1' b) Relacionamento'binários'1:N' c) Relacionamento'binários'N:M' ' 101'Janaína'Gomide' Mapeamento'ER''''''''Relacional' EnMdades'Regulares'' • EnMdade'regular'E'''''''''Relação'R' • Atributo'em'E''''''''Coluna'em'R' • Atributo'idenMficador'em'E'''''''''Chave'primária'em'R'' ' 102'Janaína'Gomide' Mapeamento'ER''''''''Relacional' Atributos'MulMvalorados' • Não'existem'no'modelo'relacional:'viram'tabelas.' ' ' 103'Janaína'Gomide' Mapeamento'ER''''''''Relacional' EnMdades'Fracas' • Não'existem'no'modelo'relacional:'viram'tabelas.' • As' ins tânc ias' são' idenMficadas' a t ravés' do' relacionamento' com' enMdades' de' outro' Mpo' (dono' ou' idenMficador)' juntamente' com' os' valores' de' alguns' atributos'(chave'parcial)' ' ' 104'Janaína'Gomide' Mapeamento'ER''''''''Relacional' Relacionamentos' • Relacionamentos'binários'1:1' – Uma'relação'tem'chave'estrangeira'para'outra' ' 'Empregado'(CPF,'Nome)' 'Departamento'(CodDept,'NomeDept,'CPF_gerente)' ''''''''''' '! ' ' ' ' 105'Janaína'Gomide' Mapeamento'ER''''''''Relacional' Relacionamentos' • Relacionamentos'binários'1:N' – Uma'das'relações'tem'chave'estrangeira'para'outra'OU' – Cria'tabela'para'o'relacionamento'Curso'(CodCurso,'Nome,'Duração,'Id)' Professor'(Id,'Nome)' '''''''OU! '''''''Curso'(CodCurso,'Nome,'Duração)' '''''''Professor'(Id,'Nome)' '''''''Leciona'(Id,'CodCurso)' ' ' ' 106'Janaína'Gomide' Mapeamento'ER''''''''Relacional' Relacionamentos' • Relacionamentos'binários'N:M' – Criar'uma'tabela'para'o'relacionamento' Curso'(CodCurso,'Nome)' Aluno'(RA,'Nome)' Exame(CodCurso,'RA,'Nota)' ' ' ' ' 107'Janaína'Gomide' Quais!são!as!relações?! 108'Janaína'Gomide' 109'Janaína'Gomide' 110'Janaína'Gomide' Exemplo:'Universidade' ' • Aluno'está'inscrito'em'curso' • Um'curso'tem'várias'disciplinas' • Uma'disciplina'pode'ter'vários'requisitos' • Um'departamento'é'responsável'por'várias'disciplinas' ' ' ' 111'Janaína'Gomide' Exemplo:'Universidade' IdenMficação'de'enMdades' ' • Aluno'está'inscrito'em'curso' • Um'curso'tem'várias'disciplinas' • Uma'disciplina'pode'ter'vários'requisitos' • Um'departamento'é'responsável'por'várias'disciplinas' ' ' ' 112'Janaína'Gomide' Exemplo:'Universidade' IdenMficação'de'relacionamentos' ' • Aluno'está'inscrito'em'curso' • Um'curso'tem'várias'disciplinas' • Uma'disciplina'pode'ter'vários'requisitos' • Um'departamento'é'responsável'por'várias'disciplinas' ' ' ' 113'Janaína'Gomide' Exemplo:'Universidade' 1'N' N' M' N'M' 1' N' 114'Janaína'Gomide' Exemplo:'Universidade' 115'Janaína'Gomide' Exemplo:'Universidade' 116'Janaína'Gomide' Exemplo:'Universidade' 117'Janaína'Gomide' Exercício:'Locadora' • Uma' locadora' de' vídeos' possui' cerca' de' 2.000' DVDs,' cujo' emprésMmo' deve' ser' controlado.' Cada' DVD' possui' um' número.' Para' cada' filme,' é' necessário'saber'seu'{tulo'e'sua'categoria'(comédia,'drama,'aventura,'...).'' • Cada'filme'recebe'um'idenMficador'próprio.'Para'cada'DVD'é'controlado' que' filme' ele' contém.' Para' cada' filme' há' pelo'menos' um' DVD.' Alguns' poucos'filmes'necessitam'de'mais'de'um'DVD.'' • Os' clientes' podem' desejar' encontrar' os' filmes' estrelados' pelo' seu' ator' predileto.' Por' isso,' é' necessário' manter' a' informação' dos' atores' que' atuam'em'cada'filme.'Os'clientes,'às'vezes,'desejam'receber'referências' de'determinado'ator,'tais'como'o'nome'real,'a'data'de'nascimento,'etc.'' • A' locadora' possui' clientes' cadastrados.' Só' clientes' cadastrados' podem' alugar' DVDs.' Para' cada' cliente' é' necessário' saber' seu' préUnome' e' seu' sobrenome,'seu'telefone'e'seu'endereço.'Cada'cliente'recebe'um'número''' • Finalmente,' desejamos' saber' quais' DVDs' estão' locados' por' um' dado' cliente.' Um' cliente' pode' locar' vários' DVDs' ao'mesmo' tempo.' Não' são' manMdos'registros'históricos'de'aluguéis.'' 118'Janaína'Gomide' Exercício:'Locadora' • Uma' locadora' de' vídeos' possui' cerca' de' 2.000' DVDs,' cujo' emprésMmo' deve' ser' controlado.' Cada' DVD' possui' um' número.' Para' cada' filme,' é' necessário'saber'seu'{tulo'e'sua'categoria'(comédia,'drama,'aventura,'...).'' • Cada'filme'recebe'um'idenMficador'próprio.'Para'cada'DVD'é'controlado' que' filme' ele' contém.' Para' cada' filme' há' pelo'menos' um' DVD.' Alguns' poucos'filmes'necessitam'de'mais'de'um'DVD.'' • Os' clientes' podem' desejar' encontrar' os' filmes' estrelados' pelo' seu' ator' predileto.' Por' isso,' é' necessário' manter' a' informação' dos' atores' que' atuam'em'cada'filme.'Os'clientes,'às'vezes,'desejam'receber'referências' de'determinado'ator,'tais'como'o'nome'real,'a'data'de'nascimento,'etc.'' • A' locadora' possui' clientes' cadastrados.' Só' clientes' cadastrados' podem' alugar' DVDs.' Para' cada' cliente' é' necessário' saber' seu' préUnome' e' seu' sobrenome,'seu'telefone'e'seu'endereço.'Cada'cliente'recebe'um'número''' • Finalmente,' desejamos' saber' quais' DVDs' estão' locados' por' um' dado' cliente.' Um' cliente' pode' locar' vários' DVDs' ao'mesmo' tempo.' Não' são' manMdos'registros'históricos'de'aluguéis.'' 119'Janaína'Gomide' Exercício:'Locadora' • Uma' locadora' de' vídeos' possui' cerca' de' 2.000' DVDs,' cujo' emprésMmo' deve' ser' controlado.' Cada' DVD' possui' um' número.' Para' cada' filme,' é' necessário'saber'seu'{tulo'e'sua'categoria'(comédia,'drama,'aventura,'...).'' • Cada'filme'recebe'um'idenMficador'próprio.'Para'cada'DVD'é'controlado' que' filme' ele' contém.' Para' cada' filme' há' pelo'menos' um' DVD.' Alguns' poucos'filmes'necessitam'de'mais'de'um'DVD.'' • Os' clientes' podem' desejar' encontrar' os' filmes' estrelados' pelo' seu' ator' predileto.' Por' isso,' é' necessário' manter' a' informação' dos' atores' que' atuam'em'cada'filme.'Os'clientes,'às'vezes,'desejam'receber'referências' de'determinado'ator,'tais'como'o'nome'real,'a'data'de'nascimento,'etc.'' • A' locadora' possui' clientes' cadastrados.' Só' clientes' cadastrados' podem' alugar' DVDs.' Para' cada' cliente' é' necessário' saber' seu' préUnome' e' seu' sobrenome,'seu'telefone'e'seu'endereço.'Cada'cliente'recebe'um'número''' • Finalmente,' desejamos' saber' quais' DVDs' estão' locados' por' um' dado' cliente.' Um' cliente' pode' locar' vários' DVDs' ao'mesmo' tempo.' Não' são' manMdos'registros'históricos'de'aluguéis.'' 120'Janaína'Gomide' Exercício:'Locadora' 121'Janaína'Gomide' Exercício:'Locadora' Cliente'(NúmeroC,'PréUnome,'Sobrenome,'Telefone,'Endereço)' Ator'(CodA,'Nome'popular,'Nome'ar{sMco,'Data'de'nascimento)' Filme'(Id,'Título,'CodC)' Categoria'(CodC,'Nome)'' DVD'(NúmeroD,'Id)' ' Estrela'(Id,'CodA)' EmprésMmo'(NúmeroC,'NúmeroD)'' ' ' ' 122'Janaína'Gomide' ?! Como!são!realizadas!as!operações?! 123'Janaína'Gomide' Transações' • Usuários'de'um'banco'de'dados'podem:'' – pesquisar,'' – inserir,'' – atualizar'e'' – excluir'dados.' ' • Um' conjunto' de' operações' bemUsucedidas' efetuadas' por' um' único'usuário'é'chamado'de'transação' ' ' 124'Janaína'Gomide' Transações' • Quando'se'comparMlha'um'banco'de'dados,'é'importante:' – garanMr' que' múlMplas' transações' possam' ser' processadas' sem' causar'conflitos'nos'dados' – proteger' os' dados' para' evitar' inconsistência' na' eventualidade' de' falhas'durante'o'processamento'de'uma'transação' • Nesse' senMdo,' as' transações' precisam' apresentar' algumas' propriedades:'ACID' ' ' 125'Janaína'Gomide' Transações' • Propriedades'obrigatórias'para'uma'transação:' Atomicidade' –' uma' transação' precisa' sempre' terminar' com' uma' operação'de'efeMvação'ou'de'reversão' ' Consistência' –' processar' uma' transação' nunca' pode' resultar' em' perda'de'consistência'no'banco'de'dados' ' Isolamento' –' mesmo' quando' transações' são' processadas' simultaneamente,' os' resultados' precisam' ser' os' mesmos' de' um' processamento'sequencial' ' Durabilidade'–'o'conteúdo'de'uma'transação'completa'não'pode'ser' afetado'por'falhas' ' ' 126'Janaína'Gomide' Transações' ' Atomicidade' ' • Uma'transação'precisa'terminar'com'uma'efeMvação'ou'com' uma' reversão' para' manter' o' banco' de' dados' livre' de' inconsistências' • Em'resumo,'ou' todas'as'ações'da' transação'são'concluídas,' ou'todas'são'canceladas' • Uma'efeMvação'finaliza'as'operações'de'uma'transação' • Uma'reversão'as'cancela.' ' ' 127'Janaína'Gomide' Transações' ' Consistência' • Uma'transação'não'deve'gerar'erros' • Se' o' banco' de' dados' estava' consistente' antes' do' processamento' de' uma' transação,' ele' precisa' conMnuar' consistente'depois'que'a'transação'se'encerra' ' ' 30'livros' 40'livros' +'10'livros' +'10'livros' • Quando' transações' são' processadas' simultaneamente,' mais' de' uma' pode' acessar' a' mesma' linha' da' mesma' tabela,' e' conflitos' nos' dados' podem' ocorrer' • Em' um' banco' de' dados,' transações' devem' ser' capazes' de' acessar' os' mesmos'recursos'simultaneamente'sem' criar'inconsistências.'128'Janaína'Gomide' Transações' ' Isolamento' ' • Quando' duas' ou' mais' transações' simultâneas' produzem' os' mesmos' resultados' que' seriam' obMdos' se' elas' Mvessem' sido' processadas' em' momentos' diferentes,' dizUse' que' elas' são' serializáveis.' • A' propriedade' de' isolamento' exige' que' as' transações' sejam' serializáveis,'o'que'serve'como'proteção'contra'erros' • Para'conseguir'que'as'transações'sejam'serializáveis,'é'preciso'ter' controle'sobre'aquelas'que'ocorrem'simultaneamente.' • O'método'mais'comum'uMlizado'é'o'controle'baseado'em'travas' (bloqueios).' ' ' 129'Janaína'Gomide' Transações' ' Durabilidade' ' • Um' banco' de' dados' gerencia' dados' importantes,' de'modo' que'garanMr'a'segurança'e'durabilidade'no'caso'de' falhas'é' essencial.' • Uma'vez'que'a'transação'foi'confirmada,'vai'conMnuar'assim,' mesmo'que'haja'perda'de'energia'ou'erros.' ' 130'Janaína'Gomide' ?! Como!criar!tabelas,!pesquisar,! inserir,!atualizar!e!excluir!alguma! informação?! 131'Janaína'Gomide' Linguagem'SQL' ' • Structured'Query'Language' • SQL'é'a'linguagem'padrão'para'SGBDs'relacionais'' • A'linguagem'SQL'pode'ser'considerada'um'dos'principais'moMvos' para'o'sucesso'dos'banco'de'dados'relacionais' '' • Como'ela'se'tornou'um'padrão'para'esse'Mpo'de'banco'de'dados,' facilita'a'migração'de'aplicações'para'outros'sistemas'de'banco'de' dados' • É'abrangente:'tem'instruções'para'definição'de'dados,'consultas'e' atualizações' ' 132'Janaína'Gomide' Linguagem'SQL' ' • Conceitos:' – Tabela/Table'='Relação' – Linha/Row'='Tupla' – Coluna/Column'='Atributo' ' 133'Janaína'Gomide' Linguagem'SQL' SCHEMA' • Um'esquema'SQL'é'idenMficado'por'um'nome'de'esquema'e'inclui' um'idenMficador'de'autorização'para'idenMficar'o'usuário'ou'conta' do' proprietário' do' esquema,' bem' como' descritores' para' cada' elemento.' • Esses' elementos' incluem' tabelas,' restrições,' domínios' e' outras' construções' CREATE'SCHEMA'Empresa'AUTHORIZATION'‘Jsilva’' ' 134'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' • O' comando' CREATE' TABLE' é' usado' para' especificar' uma' nova' relação.' • Deve'informar'o'nome,'seus'atributos'e'restrições'iniciais' • Os'atributos' são'especificados'primeiro,' e' cada'um'deles' recebe' um' nome,' um' Mpo' de' dado' para' especificar' seu' domínio' de' valores'e'quaisquer'restrições'de'atributo'como'NOT'NULL' ' 135'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' 136'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' • Tipos'de'dados'básicos'disponíveis'para'atributos:' – Numérico:'INTEGER,'REAL,'DECIMAL(i,j)' – Cadeia' de' caracteres' de' tamanho' fixo' –' CHAR(n)' ou' de' tamanho' variável' VARCHAR(n)' – Booleano:'TRUE'ou'FALSE' – DATE'que'possui'10'posições'e'seus'componentes'são'DAY,'MONTH'e'YEAR' na'forma'DDUMMUYYYY.'O'Mpo'TIME'com'HOUR,'MINUTE'e'SECOND' • É'possível'especificar'o'Mpo'de'dado'de'cada'atributo'diretamente.' CREATE'DOMAIN'Mpo_CPF'AS'CHAR(11)' CREATE'DOMAIN'telefone'AS'CHAR'(8'9)' ' 137'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' Especificando'restrições'de'chave'e'integridade'referencial' ' • Como' chaves' e' restrições' de' integridade' referencial' são' muito' importantes,' existem' cláusulas' especiais' dentro' da' instrução' CREATE'TABLE'para'especificáUlas.' • A' cláusula' PRIMARY' KEY' especifica' um' ou' mais' atributos' que' compõem'a'chave'primária'de'uma'relação' • Se'a'chave'Mver'um'único'atributo,'a'cláusula'pode'acompanhar'o' atributo'diretamente.' ' 138'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' Especificando'restrições'de'chave'e'integridade'referencial' ' ' ' ' ' ' ' ' ' OU! Dnumero'INT'PRIMARY'KEY;' ' ' ' 139'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' Especificando'restrições'de'chave'e'integridade'referencial' • A'cláusula'UNIQUE'especifica'chaves'alternaMvas'(secundárias)' • Também' pode' ser' especificada' diretamente' para' uma' chave' secundária'se'esta'for'um'único'atributo.' Dnome'VARCHAR(15)'UNIQUE;' ' ' 140'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' Especificando'restrições'de'chave'e'integridade'referencial' • A' integridade' referencial' é' especificada' por' meio' da' cláusula' FOREIGN'KEY'(chave'estrangeira)' • Uma'restrição'de'integridade'referencial'pode'ser'violada'quando' tuplas'são'inseridas'ou'excluídas,'ou'quando'um'valor'de'atributo' de'chave'estrangeira'ou'chave'primária'é'modificado.' • A' ação' default' que' a' SQL' toma' para' essa' violação' é' rejeitar' a' operação,'o'que'é'conhecido'como'opção'RESTRICT.' • Porém,'o'projeMsta'pode'especificar'uma'ação'alternaMva.' ' ' 141'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' Especificando'restrições'de'chave'e'integridade'referencial' • As'opções'incluem:' – SET'NULL' – CASCADE' – SET'DEFAULT' • Deve'especificar'ON'DELETE'ou'ON'UPDATE' ' ' 142'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' • As'restrições'de'chave,'integridade'de'enMdade'e'integridade'referencial' podem'ser'especificadas:' – junto'com'a'criação'da'tabela,'' – depois'que'os'atributos'forem'declarados,'ou,' – acrescentadas'depois,'usando'o'comando'ALTER'TABLE' ALTER' TABLE' tabelaA' ADD' FOREIGN' KEY' (chave)' REFERENCES' tabelaB' (atributo)' • PRIMARY'KEY'(atributo)' • UNIQUE'(atributo)' • atributo'NOT'NULL' • FOREIGN'KEY'(atributo)'REFERENCES'(tabela(atributo))' ' 143'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' 144'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' 145'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' 146'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' 147'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' 148'Janaína'Gomide' Linguagem'SQL' CREATE'TABLE' 149'Janaína'Gomide' Linguagem'SQL' Operações'sobre'Relações' • As'operações'sobre'um'banco'de'dados'relacional'podem'ser' classificadas'em:' – Operações'de'recuperação'(consulta)' – Operações'de'atualização' • Operações'de'atualização'(sobre'tuplas):' – Inserção'(insert)' – Remoção'(delete)' – Modificação'(update)' ' 150'Janaína'Gomide' Linguagem'SQL' Operações'sobre'Relações' • Inserção'(insert)' – Adiciona' uma' nova' tupla' (ou' várias)' em' uma' mesma' relação' ' • Remoção'(delete)' – Remove'uma'tupla'da'relação' • Modificação'(update)' – Altera'os'dados'de'uma'tupla' Em' qualquer' operação,' a' integridade' da' base' de' dados' relacional'deve'ser'manMda!' ' 151'Janaína'Gomide' Linguagem'SQL' Operações'sobre'Relações' Restrições'de'integridade'não'podem'ser'violadas!' ' • Restrição'de'domínio:'valor'fora'do'domínio' • Restrição'de'chave:'valor'já'existe' • Restrição'de'integridade'de'enMdade:'se'a'chave'for' NULL' • Restrição' de' integridade' referencial:' se' a' chave' estrangeira'referencia'tupla'inexisteste' 152'Janaína'Gomide' Linguagem'SQL' INSERT' • Em' sua' forma' mais' simples,' INSERT' é' usado' para' acrescentar'uma'única'tupla'a'uma'relação' • Temos'de'especificar'o'nome'da'relação'e'uma'lista' de'valores'para'a'tupla' Na'mesma'ordem'em'que' foram'declarados'no' comando'CREATE'TABLE' Especifica'o'nome'do'atributo' explicitamente.'Precisa'incluir'todos'os' atributos'com'especificação'NOT'NULL' e'nenhum'valor'padrão.' 153'Janaína'Gomide' Linguagem'SQL' DELETE' • O' comando' DELETE' remove' as' tuplas' de' uma' relação.' Ele' inclui' uma' cláusula' WHERE' para' selecionar'as'tuplas'a'serem'excluídas' • No' entanto,' a' exclusão' pode' se' propagar' para' as' tuplas'em'outras'relações.' 154'Janaína'Gomide' Linguagem'SQL' UPDATE' • O'comando'UPDATE'é'usado'para'modificar'valores' de'atributo'de'uma'ou'mais'tuplas'selecionadas.' • Tem'a' cláusula'WHERE' para' selecionar' as'tuplas' a' serem'modificadas'em'uma'única'relação' • A' cláusula' SET' especifica' os' atributos' a' serem' modificados'e'seus'novos'valores.' 155'Janaína'Gomide' Linguagem'SQL' UPDATE' • Várias'tuplas'podem'ser'modificadas'com'um'único' comando'UPDATE.' • Ex:' dar' a' todos' os' funcionários' no' departamento' ‘Pesquisa’'um'aumento'de'10%'no'salário.' 156'Janaína'Gomide' Linguagem'SQL' Exercícios' Escreva'instruções'de'criação'das'tabelas' com'as'restrições'necessárias:' ' CREATE'TABLE'EDITORA' (Nome'VARCHAR'(50)'NOT'NULL,' Endereço'VARCHAR(50),' Telefone'CHAR(9),' PRIMARY'KEY'(Nome));' ' E'a'tabela'Livro?' 157'Janaína'Gomide' Linguagem'SQL' Exercícios' Escreva' instruções'de' criação'das' tabelas' com' as'restrições'necessárias:' ' CREATE'TABLE'EDITORA' (Nome'VARCHAR'(50)'NOT'NULL,' Endereço'VARCHAR(50),' Telefone'CHAR(9),' PRIMARY'KEY'(Nome));' ' CREATE'TABLE'LIVRO' (Cod_livro'INT'NOT'NULL,' Título'VARCHAR(50),' Nome_editora'VARCHAR(50),' PRIMARY'KEY'(Cod_livro),' FOREIGN' KEY' (Nome_editora)' REFERENCES'' EDITORA'(Nome));' 158'Janaína'Gomide' Linguagem'SQL' Exercícios' • Escreva' instruções' de' atualização' SQL' para' realizar' ações' sobre' o' esquema'de'banco'de'dados:' 1. Inserir'um'novo'aluno'<‘Alves’,'25,'1,'‘MAT’>,'no'banco'de'dados' 2. Alterar' o' nome' da' disciplina' ‘Banco' de' Dados’' para' ‘Banco' de' Dados'I’'' 3. Excluir'o'registro'para'o'aluno'cujo'nome'é'‘Silva’'e'cujo'número'de' aluno'é'17.' 159'Janaína'Gomide' Linguagem'SQL' Exercícios' • Escreva' instruções' de' atualização' SQL' para' realizar' ações' sobre' o' esquema'de'banco'de'dados:' 1. Inserir'um'novo'aluno'<‘Alves’,'25,'1,'‘MAT’>,'no'banco'de'dados' ' INSERT'INTO'Aluno'VALUES'(‘Alves’,'25,'1,'‘MAT’)' ou' INSERT' INTO' Aluno' (Nome,' Numero_aluno,' Tipo_aluno,' Curso)' ' 'VALUES'(‘Alves’,'25,'1,'‘MAT’)' 160'Janaína'Gomide' Linguagem'SQL' Exercícios' • Escreva' instruções' de' atualização' SQL' para' realizar' ações' sobre' o' esquema'de'banco'de'dados:' 2. Alterar' o' nome' da' disciplina' ‘Banco' de' Dados’' para' ‘Banco' de' Dados'I’'' UPDATE'Disciplina'' SET'Nome_disciplina'='‘Banco'de'Dados'I’'' WHERE'Nome_disciplina'='‘Banco'de'dados’' 161'Janaína'Gomide' Linguagem'SQL' Exercícios' • Escreva' instruções' de' atualização' SQL' para' realizar' ações' sobre' o' esquema'de'banco'de'dados:' 3. Excluir'o'registro'para'o'aluno'cujo'nome'é'‘Silva’'e'cujo'número'de' aluno'é'17.' DELETE'FROM'Aluno'' WHERE'Nome'='‘Silva’'and'Numero_aluno'='17' 162'Janaína'Gomide' Linguagem'SQL' Operações'sobre'Relações' • As'operações'sobre'um'banco'de'dados'relacional'podem'ser' classificadas'em:' – Operações!de!recuperação!(consulta)! " Operações'de'atualização' " Operações'de'atualização'(sobre'tuplas):' " Inserção'(insert)' " Remoção'(delete)' " Modificação'(update)' ' 163'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' • A' SQL' tem' uma' instrução' básica' para' recuperar' informações' de' um'banco'de'dados:'a'instrução'SELECT' • A' forma' básica' do' comando' SELECT' é' composta' pelas' três' cláusulas'SELECT,'FROM'e'WHERE,'e'tem'a'seguinte'forma:' ' SELECT'<lista'de'atributos>' FROM'<lista'de'tabelas>' WHERE'<condição>;' ' Os'operadores'básicos'de'comparação'lógicos'para'comparar'valores' de'atributos'entre'si'e'com'constantes'são'=,'<,'<=,'>,'>='e'<>' ' 164'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' 165'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' 166'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' 167'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' 168'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' • Em' SQL,' o' mesmo' nome' pode' ser' usado' para' dois' (ou' mais)' atributos,'desde'que'estes'estejam'em'relações'diferentes.' • Se'isso'acontecer,'e'uma'consulta'em'múlMplas'tabelas'se'referir'a' dois' ou'mais' atributos' com'mesmo' nome,' é' preciso' qualificar' o' nome'do'atributo'com'o'nome'da'relação.' ' 169'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' • Também' podemos' criar' um' apelido' para' cada' nome' de' tabela,' para'evitar'a'digitação'repeMda'de'nomes'de'tabela'longos' • A'ambiguidade'dos'nomes'de'atributo'também'surge'no'caso'de' consultas'que'se'referem'à'mesma'relação'duas'vezes' ' 170'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' • A' falta'de'uma'cláusula'WHERE' indica'que'não'há'condição' sobre'a'seleção'de'tuplas.' • Dessa' forma,' todas' as' tuplas' da' relação' especificada' na' cláusula'FROM'são'selecionadas'para'o'resultado'da'consulta' ' 171'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' • Para' recuperar' todos! os! atributos! das' tuplas' selecionadas,' não'precisamos'listar'os'nomes'explicitamente.' • Basta'especificar'um'asterisco'(*)' ' 172'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' • Quando' queremos' eliminar! tuplas! duplicadas! do' resultado' de'uma'consulta'SQL,'usamos'a'palavra'DISTINCT'na'cláusula' SELECT' • Significa'que'apenas'as'tuplas'disMntas'deverão'permanecer' no'resultado' ' 173'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' Combinação'de'padrão'de'subcadeias'e'operadores'aritméMcos' • LIKE'' – permite' condições' de' comparação' apenas' sobre' partes' de' uma' cadeia'de'caracteres' – %'subsMtui'um'número'qualquer'de'zero'ou'mais'caracteres' – _'subsMtui'um'único'caractere' 174'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' Combinação'de'padrão'de'subcadeias'e'operadores'aritméMcos' • LIKE'' – permite' condições' de' comparação' apenas' sobre' partes' de' uma' cadeia'de'caracteres' – %'subsMtui'um'número'qualquer'de'zero'ou'mais'caracteres' – _'subsMtui'um'único'caractere' 175'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' Combinação'de'padrão'de'subcadeias'e'operadores'aritméMcos' • BETWEEN' 176'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' Ordem'dos'resultados'da'consulta' • SQL'permite'que'o'usuário'ordene'as'tuplas'no'resultado'de' uma'consulta'pelos'valores'de'um'ou'mais'dos'atributos' • Cláusula'ORDER'BY' 177'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' Ordem'dos'resultados'da'consulta' • Padrão'é'ascendente,'mas'pode'alterar'para'DESC' 178'Janaína'Gomide' Linguagem'SQL' Consultas'Básicas'em'SQL' Resumo'' 179'Janaína'Gomide' Linguagem'SQL' Exercícios' Para'o'banco'relacional'EMPRESA:' 1. Recupere' os' nomes' de' todos' os' funcionários' no' departamento' 5' que' trabalham' mais' de' 10' horas' por' semana'no'projeto'ProdutoX' 2. Liste'os'nomes'de' todos'os' funcionários'que'possuem'um' dependente'com'mesmo'primeiro'nome'que'seu'próprio' 3. Ache' os' nomes' de' todos' os' funcionários' que' são' supervisionados'diretamente'por'‘Fernando'Wong’'' 180'Janaína'Gomide' Linguagem'SQL' Exercícios' Para'o'banco'relacional'EMPRESA:' 1. Recupere' os' nomes' de' todos' os' funcionários' no' departamento' 5' que' trabalham'mais'de'10'horas'por'semana'no'projeto'ProdutoX' ' 181'Janaína'Gomide' Linguagem'SQL' Exercícios' Para'o'banco'relacional'EMPRESA:' 1. Recupere' os' nomes' de' todos' os' funcionários' no' departamento' 5' que' trabalham'mais'de'10'horas'por'semana'no'projeto'ProdutoX' SELECT'Pnome,'Unome'' FROM'FUNCIONARIO,'' 'PROJETO,' 'TRABALHA_EM' WHERE'Dnr'='Dnum'and' 'Fcpf'='Cpf'and' 'Pnr'='Projnumero'and' 'Dnr'='5'and' 'Horas'>'10'and' 'Projnome'='‘ProdutoX'' '' '' '' ' 182'Janaína'Gomide' Linguagem'SQL' Exercícios' Para'o'banco'relacional'EMPRESA:' 2. Liste'os'nomes'de'todos'os'funcionários'que'possuem' um'dependente'com'mesmo'primeiro'nome'que'seu' próprio'SELECT'Pnome,'Unome'' FROM'FUNCIONARIO,'' 'DEPENDENTE' WHERE''Fcpf'='Cpf'and' 'Nome_dependente'='Pnome' '' '' '' ' 183'Janaína'Gomide' Linguagem'SQL' Exercícios' Para'o'banco'relacional'EMPRESA:' 3. Ache' os' nomes' de' todos' os' funcionários' que' são' supervisionados' diretamente'por'‘Fernando'Wong’'' ' SELECT'Pnome,'Unome' FROM'FUNCIONARIO'as'F1,' 'FUNCIONARIO'as'F2' WHERE'F2.Pnome'='‘Fernando’' 'and'F2.Unome'='‘Wong’' 'and'F2.Cpf'='F1.Cpf_supervisor' '' '' '' ' MCG241'–'Sistemas'de'Informação' ' ' Profa.'Janaína'Gomide' 184'Janaína'Gomide'
Compartilhar