Banco de Dados Prof. Cadoná Prof. Edemar Modelagem de Dados • Modelo Conceitual • Modelo Lógico • Modelo Físico Modelo Conceitual Professor Emprego Universidade Modelo Conceitual Professor Universidade Entidades Modelo Conceitual Professor Emprego Relacionamento Universidade Modelo Conceitual Professor Emprega Emprego Trabalha Universidade Modelo Conceitual Professor Emprega (0,N) Emprego Cardinalidade: • Mínima • Máxima Trabalha (1,1) Universidade Modelo Conceitual Professor Emprega (0,N) Código Nome Emprego Trabalha (1,1) Universidade Código Nome Atributos de uma entidade Modelo Conceitual Leitura da relação existente entre as entidades Professor Emprega (0,N) Código Nome Emprego Trabalha (1,1) Universidade Código Nome Modelo Conceitual Leitura da relação existente entre as entidades Professor Emprega (0,N) Código Nome Emprego Trabalha (1,1) Universidade O professor trabalha em no mínimo uma e no máximo uma Universidade Código Nome Modelo Conceitual Leitura da relação existente entre as entidades Professor Emprega (0,N) Código Nome Emprego Trabalha (1,1) Universidade Uma Universidade emprega nenhum ou vários professores Código Nome Modelo Lógico Criação de Chaves: • Primárias • Estrangeiras Mapeamento ER - Relacional } Implementação de relacionamentos 1:1 Entidades obrigatórias no relacionamento EMPREGADO código nome (1,1) ALOCAÇÃO data alocação (1,1) TERMINAL número local EMP-TERM (CÓDIGO, NOME, DATA, NÚMERO, - - - - - - - - LOCAL) Mapeamento ER - Relacional } Implementação de relacionamentos 1:1 - Entidade opcional no relacionamento CORRENTISTA (COD-COR, NOME) CARTÃO (COD_CART, DATA_EXP, COD-COR) Mapeamento ER - Relacional } Implementação de relacionamentos 1:1 Entidades opcionais no relacionamento (0,1) PESSOA identidade nome ALOCAÇÃO data regime (0,1) CARGO nome setor PESSOA (IDENT, NOME) CARGO (NOME, SETOR) ALOCAÇÃO (IDENT, NOME, DATA, REGIME) ----- Mapeamento ER - Relacional } Implementação de relacionamentos 1:N - Entidade obrigatória no relacionamento DEP (COD-DEP, NOME) EMP (COD-EMP, NOME, DATA-LOT, COD-DEP) Mapeamento ER - Relacional } Implementação de relacionamentos N:N ENGENHEIRO código nome (0,N) ATUAÇÃO função (0,N) PROJETO código título Mapeamento ER - Relacional } Implementação de relacionamentos N:N ENGENHEIRO código nome (0,N) ATUAÇÃO função (0,N) PROJETO código título ENGENHEIRO (COD-ENG, NOME) PROJETO (COD-PROJ,TITULO) ATUAÇÃO (COD-ENG, COD-PROJ, FUNÇÃO) Modelo Físico • Modelo definido no banco de dados Exemplo de Questão ENADE Um mercado que comercializa alimentos hortifrutigranjeiros faz compras diárias de diversas fazendas e enfrenta prejuízos decorrentes da falta de controle relacionada ao prazo de validade de seus produtos. Para resolver esse problema, o proprietário resolve investir em informatização, que proporcionará o controle do prazo de validade a partir da data da compra do produto. A modelagem de dados proposta pelo profissional contratado apresenta três tabelas, ilustradas a seguir, sendo que o atributo Código nas tabelas Produto e Fazenda são unívocos. Exemplo de Questão ENADE Exemplo de Questão ENADE A partir das informações acima, é correto concluir que: • A) o relacionamento entre as tabelas Produto e Estoque é do tipo um-para-muitos. • B) o campo Produto na tabela Estoque não pode fazer parte da chave nesta tabela e corresponde ao campo Descrição na tabela Produto. • C) o campo Fazenda na tabela Estoque deverá ser a chave primária nesta tabela e corresponde ao campo Código na tabela Fazenda. • D) o campo Código é chave primária na tabela Produto e identifica a fazenda fornecedora do produto. • E) a tupla {produto, fazenda} deverá ser usada como a chave primária da tabela Estoque. Exemplo de Questão ENADE Considere o seguinte script SQL de criação de um banco de dados. SQL CREATE TABLE PECAS (CODIGO NUMERIC(5) NOT NULL, DESCRICAO VARCHAR(20) NOT NULL, ESTOQUE NUMERIC(5) NOT NULL, PRIMARY KEY(CODIGO)); CREATE TABLE FORNECEDORES (COD_FORN NUMERIC(3) NOT NULL, NOME VARCHAR(30) NOT NULL, PRIMARY KEY(COD_FORN)); CREATE TABLE FORNECIMENTOS (COD_PECA NUMERIC(5) NOT NULL, COD_FORN NUMERIC(3) NOT NULL, QUANTIDADE NUMERIC(4) NOT NULL, PRIMARY KEY(COD_PECA, COD_FORN), FOREIGN KEY (COD_PECA) REFERENCES PECAS, FOREIGN KEY (COD_FORN) REFERENCES FORNECEDORES); Exemplo de Questão ENADE A partir desse script, assinale a opção que apresenta comando SQL que permite obter uma lista que contenha o nome de cada fornecedor que tenha fornecido alguma peça, o código da peça fornecida, a descrição dessa peça e a quantidade fornecida da referida peça A) SELECT * FROM PECAS, FORNECEDORES, FORNECIMENTOS; SQL Exemplo de Questão ENADE A partir desse script, assinale a opção que apresenta comando SQL que permite obter uma lista que contenha o nome de cada fornecedor que tenha fornecido alguma peça, o código da peça fornecida, a descrição dessa peça e a quantidade fornecida da referida peça SQL B) SELECT * FROM PECAS, FORNECEDORES, FORNECIMENTOS WHERE PECAS.CODIGO =FORNECIMENTOS.COD_PECA AND FORNECEDORES.COD_FORN =FORNECIMENTOS.COD_FORN; Exemplo de Questão ENADE A partir desse script, assinale a opção que apresenta comando SQL que permite obter uma lista que contenha o nome de cada fornecedor que tenha fornecido alguma peça, o código da peça fornecida, a descrição dessa peça e a quantidade fornecida da referida peça SQL C) SELECT NOME, CODIGO, DESCRICAO, QUANTIDADE FROM PECAS, FORNECEDORES, FORNECIMENTOS; Exemplo de Questão ENADE A partir desse script, assinale a opção que apresenta comando SQL que permite obter uma lista que contenha o nome de cada fornecedor que tenha fornecido alguma peça, o código da peça fornecida, a descrição dessa peça e a quantidade fornecida da referida peça SQL D) SELECT NOME, CODIGO, DESCRICAO, QUANTIDADE FROM PECAS, FORNECEDORES, FORNECIMENTOS WHERE PECAS.CODIGO = FORNECIMENTOS.COD_PECA AND FORNECEDORES.COD_FORN =FORNECIMENTOS.COD_FORN; Exemplo de Questão ENADE A partir desse script, assinale a opção que apresenta comando SQL que permite obter uma lista que contenha o nome de cada fornecedor que tenha fornecido alguma peça, o código da peça fornecida, a descrição dessa peça e a quantidade fornecida da referida peça SQL E) SELECT DISTINCT NOME, CODIGO, DESCRICAO, QUANTIDADE FROM PECAS, FORNECEDORES, FORNECIMENTOS WHERE CODIGO = COD_PECA; Funções -SQL • max(<atributo>) retorna o maior elemento da coluna especificada • min(<atributo>) retorna o menor elemento da coluna especificada • avg(<atributo>) retorna a média dos elemento da coluna especificada • sum(<atributo>) retorna a soma dos elemento da coluna especificada • count(<atributo>) retorna a quantidade de elemento existente da coluna especificada SELECT - SQL Select [distinct]<atributos de resposta> from <tabelas> [inner join <tabela> on <relação>] [where <condições>] [having <condição do atributo>] [group by <atributos>] [order by <atributos> [desc]] ;