Modelagem de Banco de Dados ▪ Revisão Modelo Relacional Tem por base a teoria dos conjuntos e álgebra relacional; Revelou-se ser o mais flexível e adequado ao solucionar os vários problemas que se colocam no nível da concepção e implementação da base de dados; A estrutura fundamental do modelo relacional é a relação (tabela): ◦ Uma relação (tabela) é constituída por um ou mais atributos (campos) que, juntos, representam uma entidade (registro); ◦ Cada atributo da entidade é chamada de campo ◦ O conjunto de atributos que define uma entidade é chamada de registro. Modelos de Dados: relacional Nome Endereço Cidade Conta Saldo José Av. Pio XI São Paulo 900 55,00 Maria R. São Francisco Recife 556 100.000,00 Maria R. São Francisco Recife 647 105.366,00 801 744,00 647 105.366,00 Gabriela R. do Sol Maceió Gabriela R. do Sol Maceió Cliente Conta Cliente Cod_cliente Nome Rua Cidade São Paulo Cod_conta Saldo 900 55,00 01 José Av. Pio XI 02 Maria R. São Francisco Recife 556 100.000,00 03 Gabriela R. do Sol 647 105.366,00 801 744,00 Maceió Cliente_Conta Cod_cliente Cod_conta 01 900 02 556 02 647 03 647 03 801 Modelagem Conceitual Modelagem Conceitual Modelagem Conceitual: entidade Pode representar tanto objetos concretos (uma pessoa, um automóvel) quanto objetos abstratos (um departamento, uma venda); É representada através de um retângulo com o nome da entidade. Livro Editora Reserva Empréstimo Modelagem Conceitual: relacionamento Conjunto de associações entre entidades; É representado através de um losango ligado por linhas aos retângulos das entidades que participam do relacionamento; CURSO MÉDICO Matrícula Consulta ALUNO PACIENTE Modelagem Conceitual: cardinalidade Número de ocorrências das entidades associadas em um relacionamento. Quantas ocorrências de uma entidade podem estar associadas a uma determinada ocorrência de outra entidade através do relacionamento? Empresa 1 Uma ocorrência de DEPARTAMENTO pode estar associada ao no máximo 1 ocorrência de EMPRESA possui n Departamento A uma ocorrência de EMPRESA pode estar associada várias (n) ocorrências de DEPARTAMENTO Modelagem Conceitual: relacionamentos 1 para n Departamento 1 possui n Funcionário Modelagem Conceitual: relacionamentos n para n Médico Livro n n consulta autoria n n Paciente Autor Modelagem Conceitual: exemplo Deseja-se manter informações sobre alunos, cursos, disciplinas e departamentos: 1. Cada disciplina possui um departamento responsável. Um departamento é responsável por muitas disciplinas. pré-requisito n Departamento 1 n responsável 4. Um aluno está inscrito em um curso. Um curso pode ter nele inscritos muitos alunos. Disciplina n 2. Uma disciplina pode possuir diversos pré-requisitos. Uma disciplina pode ser pré-requisito de muitas outras disciplinas. 3. Uma disciplina pode aparecer no currículo de muitos cursos. Um curso pode possuir muitas disciplinas em seu currículo. n disc-curso n Aluno n inscrição 1 Curso Modelagem Conceitual: atributos Dado que é associado a cada ocorrência de uma entidade ou de um relacionamento; Muitas vezes os atributos não são representados para não sobrecarregar o diagrama; Projeto tipo nome código Modelagem conceitual: atributos de relacionamentos Assim como uma entidade, relacionamentos também podem possuir atributos; Departamento código 1 n possui Funcionário matrícula nome nome Médico n consulta n Paciente data CRM nome código nome Modelagem Conceitual: identificadores Cada entidade deve possuir um identificador; Um identificador é um conjunto de um ou mais atributos cujos valores servem para distinguir uma entidade. Aluno RA nome endereço Linguagem SQL A linguagem SQL: estrutura Linguagem de Definição de dados (DDL) ◦ Subconjunto de comandos para definição e modificação de esquemas de relação (tabelas), remoção de tabelas, etc. Linguagem de Manipulação de dados (DML) ◦ Subconjunto de comandos para inserir, remover e modificar informações em um banco de dados. Linguagem de Definição de Dados DDL Linguagem de Definição de Dados: comandos CREATE table ◦ cria uma tabela no banco de dados. DROP table ◦ Apaga/exclui uma tabela do banco de dados. ALTER table ◦ Altera a estrutura de uma tabela no banco de dados Linguagem de Definição de Dados: create table nome da tabela CREATE TABLE aluno ( RA numeric(9) primary key, nome char(40) not null, endereco varchar(50) ) Aluno RA nome endereço nomes dos campos tipos de dado Aluno RA nome endereco 1242532 Manoel Rua Cinco 1425534 Joana Rua São Paulo 1565243 Maria Rua Pio XII 4537642 João Rua Leão 23 restrições de integridade Linguagem de Definição de Dados: create table (relacionamento 1:n) Departamento código 1 possui nome n Funcionário matrícula nome depto CREATE TABLE departamento ( codigo numeric(2) primary key, nome char(30) not null ) CREATE TABLE funcionario ( matricula numeric(5) primary key, nome char(40) not null, depto numeric(2) references departamento(codigo) ) Linguagem de Definição de Dados: create table (relacionamento 1:n) Departamento código 1 possui n matrícula nome nome Departamento Funcionário depto Funcionario nome Matricula nome 01 Contabilidade 35241 João 03 02 Recursos Humanos 52615 Maria 01 03 Informática 73645 Manoel 02 76545 Heloisa 03 Codigo depto Linguagem de Definição de Dados: create table (relacionamento n:n) Médico n consulta n Paciente data CRM nome CREATE TABLE medico ( CRM numeric(6) primary key, nome char(40) not null ) código nome CREATE TABLE paciente ( codigo numeric(3) primary key, nome char(40) not null ) CREATE TABLE consulta ( medico numeric(6) references medico(CRM), paciente numeric(3) references paciente(codigo), data date ) Linguagem de Definição de Dados: create table (relacionamento n:n) n Médico n consulta Paciente data CRM nome código Medico CRM nome Paciente nome 102199 Carlos Alberto 243552 Maria Luiza 356623 José Carlos Consulta Codigo nome 117 João 236 Maria 405 Manoel 765 Heloisa Medico Paciente data 102199 117 10/08/2019 243552 405 12/08/2019 356623 236 03/07/2019 Linguagem de Manipulação de Dados (DML) Linguagem SQL Linguagem de Manipulação de Dados comandos SELECT ◦ é o comando mais usado do DML, comanda e permite ao usuário especificar uma consulta com uma descrição do resultado desejado. A questão não especifica como os resultados devem ser localizados. INSERT ◦ Incluir um registro em uma tabela. UPDATE ◦ Alterar os valores dos dados de uma tabela. DELETE ◦ remover registros de uma tabela. O comando SELECT FROM WHERE ORDER BY Linguagem de Manipulação de Dados O comando SELECT Funcionario Apresentar o nome e o salário dos funcionários do departamento 1 em ordem decrescente salário select nome, salario from funcionario where depto = 1 order by salario DESC Guilherme Dias, 3000 Maria José da Silva, 2000 Adriano José Ribeiro, 1800 Linguagem SQL Funções agregadas ◦ A linguagem SQL possui algumas funções específicas para os seguintes cálculos: média...............: AVG mínimo............: MIN máximo...........: MAX total.................: SUM contar..............: COUNT Linguagem SQL Funcionario 1. Qual a média salarial da empresa? SELECT AVG(salario) FROM Funcionario 3. Qual o maior salário da empresa? SELECT MAX(salario) FROM Funcionario 4. 3280 10000 Quanto é a folha de pagamento da empresa? SELECT SUM(salario) FROM Funcionario 32800 Linguagem SQL Grupos ◦ A SQL oferece a habilidade para calcular funções relacionados a grupos de registros usando a cláusula group by. ◦ O atributo utilizado na cláusula group by é usado para se formar grupos. ◦ Registros com o mesmo valor são colocados em um mesmo grupo. Linguagem SQL Funcionario 1. Apresentar o código do departamento seguido da média salarial do departamento SELECT depto, AVG(salario) FROM Funcionario GROUP BY depto 2. Apresentar o código do departamento seguido do maior salário do departamento; SELECT depto, MAX(salario) FROM Funcionario GROUP BY depto