Modelagem de Banco de Dados Prof. Marcus Vinícius drakhos@gmail.com www.marcussilva.com.br
- Dados contextualizados e apresentados de forma significativa e útil - Fator que pode ser gravado - Não possui utilidade INFORMAÇÃO - Dados contextualizados e apresentados de forma significativa e útil AÇÃO / CONHECIMENTO Atitude tomada com base em experiências / conhecimento pessoal mediante a informação recebida.
(1) (2) (3)
Total de Alunos: 3 Total de Aprovados: 2 Total de Pontos: 211 Média das Notas: 70,33 Sexo masculino: 2 Sexo feminino: 1 (1) (2) (3)
Total de Alunos: 3 Total de Aprovados: 2 Total de Pontos: 211 Média das Notas: 70,33 Sexo masculino: 2 Sexo feminino: 1 AÇÕES: A quantidade de alunos não são suficientes conforme estrutura da escola. A escola deve investir no marketing para captação de novos alunos. A média das notas estão baixas em relação ao nível de conhecimento adquirido e esperado pelos alunos. A escola deve verificar onde está a falha no processo de aprendizagem.
Dados Persistentes Uma coleção de dados persistentes podem ser armazenados em vários tipos de dispositivos, como: Planilha Eletrônica, Agenda e Documentos
O Professor José deseja armazenar os nomes e data de nascimento de seus alunos, qual o melhor banco de dados para indicar? Carlos Alberto Costa Maria Joana Pereira Fernanda Oliveira Alan Cordeiro Lima Bianca Souza 20/05/1990 29/11/1985 09/08/1950 03/12/1976 06/01/1963 Total de Registros: 5
O Professor José deseja armazenar os nomes e data de nascimento de seus alunos, qual o melhor banco de dados para indicar? Aprox. 10 registros Folha de Papel (manual) Aprox. 50 registros Documento de Texto (word) Aprox. 1.000 registros Planilha Eletrônica (Excel) Aprox. 10.000 registros Access Acima de 10.000 SGBD
O que é um Banco de Dados? Para que serve um Banco de Dados? Qual o melhor Banco de Dados?
Restrições de acesso aos dados Armazenamento persistente Recursos para consultas Backup e Restore Controle de redundância (compartilhamento X replicação)
Abstração de alto nível Modelagem Conceitual Abstração de alto nível DER alto nível Identificação dos requisitos de software e de banco de dados Modelagem Lógica Modelagem do Projeto de Banco de Dados (DER) Modelagem Física Geração de Script do Banco de Dados Implementação do Banco de Dados Otimização de Estrutura (view, índices, chaves, etc.. )
Projeto de Banco de Dados Diagrama de Esquema Projeto de Banco de Dados Estado vazio (sem dados) Instância ou Estado Os dados no banco de dados em um determinado momento no tempo são chamados de estado ou instante do banco de dados. Também são chamados de conjunto atual de ocorrências ou instâncias no banco de dados.
Linguagem do SGBD Linguagem de comunicação com o banco de dados (SQL: DML, DQL, DDL, etc... ) Interfaces de Aplicação para Usuários Interfaces amigáveis de manipulação das informações pelos usuários Interfaces de buscas Interface dentro da área administrativa do banco, utilizada para buscar informações sem a utilização de comandos SQL Interface de Entrada e Saída de voz Interface dentro da área administrativa do banco, com base em comando de voz para realizar procedimentos no banco de dados Interface para o DBA Interface visual de administração do banco de dados
Carga Geração de carga de teste nos objetos do banco de dados Reorganização Reorganização das instâncias armazenas, com objetivo de melhoria de desempenho. Comando: OPTIMIZE TABLE aluno Monitoração de Desempenho Utilitários para monitoramento do uso do banco de dados
Centralizada Arquitetura antiga Utilização de Mainframe Terminais (baixa capacidade de processamento) Todo processamento é feito no servidor Arquitetura de Cliente / Servidor Servidor de Banco Estação de Trabalho Servidores Especializados (Aplicação, E-mail, Arquivos) Client Side
Servidor Web (IIS, Apache e Tomcat) Camada de Apresentação Cliente Camada Lógica De Negócios Servidor Web (IIS, Apache e Tomcat) Camada de Serviços De Banco de dados Servidor de Banco de Dados
Modelo de dados hierárquico e de rede Modelo baseado em arquivos Modelo Relacional de dados Objetos Relacionais (MySQL, SQL Server e Oracle) Modelo de Dados Orientado a Objetos Modelo de dados Pseu da Orientação a Objetos ou Pós-Relacional (Caché) Modelo XML Nativos Modelo de dados estruturados em documentos XML (Tamino)
Case Studio DBDesigner Poseidon System Architect Rational Rose Enterprise Architect Erwin Visible Suite Power Designer Jude Software utilizado para projetar um Banco de Dados.
Criadas antes do SQL SQL: linguagem derivada Operações Relacionais: Unárias: Seleção e Projeção de Resultados com apenas 1 tabela Binárias: Seleção com 2 tabelas combinando tuplas relacionadas
Operação Relacionais Unárias: Seleção e Projeção Seleção: é usada para escolher um subconjunto das tuplas de uma relação que satisfaça uma condição de seleção. σ (sigma) indicar operador de seleção σ salario >= 3000(FUNCIONARIO) * Busca todos funcionário com o salário maior ou igual a 3 mil.
σ salario >= 3000 and departamento = 4 (FUNCIONARIO) * Busca todos os funcionários com salário maior ou igual a 3000 e departamento igual a 4.
Operação Relacionais Unárias: Seleção e Projeção Projeção: é usada para definir a lista de atributos que serão mostradas na projeção. π (pi) indicar operador de projeção π nome, salario, telefone (FUNCIONARIO)
Interseção Álgebra: R∩S União Álgebra: A U B Diferença de Conjuntos Álgebra: A-B
Operação Relacionais binárias: Junção Junção: é usada para combinar tuplas relacionadas de duas relações em uma única tupla maior. X (Junção) indicar operador de junção π nome, cpf (FUNCIONARIO X (cpf_fun = cpf_ger) GERENTE)
Funções: SOMA, MÉDIA, MÁXIMO, MÍNIMO £ (F script) é usado para definir as funções de agregação NroDep £ MÉDIA salario (FUNCIONARIO) NroDep £ MÁXIMO salario (FUNCIONARIO)
O que é uma entidade? Conjunto de objetos / registros / tuplas de uma mesma natureza. Outras definições: “...algo o mundo real com existência independente.” (NAVATHE, 2005); “Conjunto de objetos da realidade do mundo modelada sobre os quais deseja-se manter informações no banco de dados.” (HEUSER, 2004);
O que deve compor em uma entidade? - Nome Atributo chave (unívoco) - PK (Primary Key) Propriedades de um objeto/registro Observações: - Nomenclatura das tabelas Nomenclatura das chaves Nomenclatura dos atributos
É o fator de comunicação e referência entre Entidades.
É o mínimo de ocorrência em uma entidade. 0,0 | 0,1 | 0,N | 1,0 | 1,1 | 1,N | N,0 | N,1 | N,N
(1,1) (1,N) (0,1) (0,N)
1) Ache o relacionamento e a cardinalidade das entidades abaixo: aluno e prova cliente e conta_receber banco e agencia cliente e conta_pagar
Segue abaixo alguns tipo de Atributos comuns em uma modelagem de base de dados: Tipos de Atributos Descrição Cadeia de Caracteres Char(n) - Tamanho fixo de Caracteres Varchar(n) – Tamanho máximo de Caracteres Numéricos Int(n) - Tamanho máximo de Caracteres Float(m,n) – Tamanho fixo de casas decimais Date e Time Date() - Armazenamento de data Time() - Armazenamento de horário Texto Livre Text() - Atributo de texto livre
Tipos de Atributos(caracteres) nome Varchar(60) telefone Varchar(13) sexo Char(1) nota Int(3) salario Float(5,2) dataNascimento Date() horaCadastro Time()
Devemos gravar o dado no banco com máscara ou sem máscara?
Praticar: aluno nome telefone email dataNascimento endereco numero complemento bairro cidade estado cep dataCadastro observacao
O que é uma Entidade Fraca? Entidade Fraca é aquela que para existir depende de uma outra Entidade. Entidade Forte Entidade Fraca
Especialização é uma Entidade derivada de uma Genérica Especialização é uma Entidade derivada de uma Genérica. Uma Entidade genérica pode ser especializada para melhor caracterizar um objeto/registro. Veja o exemplo baixo:
? corrente aquatico terrestre aereo poupanca
NULL Observações: 0 <> null ‘ ’ <> null null X not null Null/Nulo é a possibilidade de um atributo aceitar ausência de valores. Observações: 0 <> null ‘ ’ <> null null X not null
Atributo Null/Not Null nome:varchar(60) not null telFixo:varchar(13) telCelular:varchar(13) null cpf:varchar(14) carteiraHab:varchar(20) dataNascimento:date() nomePai:varchar(60) nomeMae:varchar(60)
A Chave Estrangeira (FK) é utilizada para referenciar registros entre Entidades de um mesmo escopo.
A Chave Estrangeira (FK) é utilizada para referenciar registros entre Entidades de um mesmo escopo.
Sempre que ocorrer um relacionamento entre entidades cuja cardinalidade seja “(M,N)”, é necessário criar uma nova tabela. Veja Exemplo abaixo: (N) (N) consulta
Processo de análise que minimiza redundância de dados e minimiza anomalias nas operações de modificação dos dados. As relações que não satisfazem certas propriedades (formas normais) são sucessivamente decompostas em relações menores de modo a satisfazerem as propriedades pretendidas (Codd 1972).
As principais formas normais são: 1NF – Primeira forma normal 2NF – Segunda forma normal 3NF – Terceira forma normal
Algo que não pode ser dividido Para um esquema relacional estar na primeira forma (1FN), a entidade não deve conter os atributos não atômicos ou as relações aninhadas (só conter os atributos atômicos). (ELMASRI, R. & NAVATHE ) Ex.: enderecoCompleto nomeCompleto noticia carteiraTrabalho ou seja: Atômico é Algo que não pode ser dividido
Para um esquema relacional estar na segunda forma (2FN), as relações que possuam chaves primárias com vários atributos, nenhum atributo externo à chave deve ser funcionalmente dependente de parte da chave primária. (ELMASRI, R. & NAVATHE ) errado
Para um esquema relacional estar na segunda forma (2FN), as relações que possuam chaves primárias com vários atributos, nenhum atributo externo à chave deve ser funcionalmente dependente de parte da chave primária. (ELMASRI, R. & NAVATHE ) certo
Para um esquema relacional estar na terceira forma (3FN), as relações não devem ter atributos que não pertençam a uma chave, funcionalmente determinados por outro atributo que também não pertença a uma chave (ou por um conjunto de atributos não – chave). Isto é, não deve haver dependência transitiva entre um atributo não-chave e uma chave primária. (ELMASRI, R. & NAVATHE ) errado
Para um esquema relacional estar na terceira forma (3FN), as relações não devem ter atributos que não pertençam a uma chave, funcionalmente determinados por outro atributo que também não pertença a uma chave (ou por um conjunto de atributos não – chave). Isto é, não deve haver dependência transitiva entre um atributo não-chave e uma chave primária. (ELMASRI, R. & NAVATHE ) certo
Chave Primária: (PK - Primary Key) é a chave que identifica cada registro dando-lhe unicidade. A chave primária nunca se repetirá. Chave Estrangeira: (FK - Foreign Key) é a chave formada através de um relacionamento com a chave primária de outra tabela. Define um relacionamento entre as tabelas e pode ocorrer repetidas vezes. Caso a chave primária seja composta na origem, a chave estrangeira também o será. Chaves Candidatas: Ocorrem quando em uma relação existe mais de uma combinação de atributos possuindo a propriedade de identificação única. Matrícula, CPF, RG, Titulo Eleitor
codMedico Int NOT NULL AUTO_INCREMENT, nome Varchar(40) NOT NULL, Chaves Candidatas ou Chaves Alternativas (KA – Alternate Key): Ocorrem quando em uma relação existe mais de uma combinação de atributos possuindo a propriedade de identificação única. Matrícula, CPF, RG, Titulo Eleitor Create table medico ( codMedico Int NOT NULL AUTO_INCREMENT, nome Varchar(40) NOT NULL, cpf Char(14) NOT NULL, Primary Key (codMedico)); Alter table medico add unique KA_cpf (cpf);
Chave Simples: Chave definida por apenas 1 atributo. Chave Composta: Chave definida por mais de 1 atributo. Create table cidade ( cidade Varchar(40) NOT NULL, estado Char(2) NOT NULL, populacao Int NOT NULL, Primary Key (cidade,estado));
Create table consulta ( codMedico Int NOT NULL, codPaciente Int NOT NULL, dataHora Datetime NOT NULL, Primary Key (codMedico,codPaciente,dataHora));
Auto Relacionamento (Self Relationship) O Self Relationship é usado quando ocorre o relacionamento de uma tabela com ela mesma. No exemplo abaixo o objetivo é identificar o chefe de um determinado profissional. Create table profissional ( codProfissional Int NOT NULL AUTO_INCREMENT, codProfissionalChefe Int NOT NULL, nome Varchar(40) NOT NULL, email Varchar(60) NOT NULL, Primary Key (codProfissional); Alter table profissional add Foreign Key (codProfissionalChefe) references profissional (codProfissional) on delete restrict on update restrict;
codCargo Int NOT NULL AUTO_INCREMENT, nome Varchar(40) NOT NULL, Código de criação do auto incremento e definição do valor inicial do auto incremento. Create table cargo ( codCargo Int NOT NULL AUTO_INCREMENT, nome Varchar(40) NOT NULL, Primary Key (codCargo))AUTO_INCREMENT = 1000;
cliente funcionario (1,1) (1,1) usuario (0,1) (0,1)
password() – 16 caracteres md5() – 32 caracteres Senha Normal Senha Criptografada com MD5 123456 E10adc3949ba59abbe56e057f20f883e 1859789 79044446c5eb49ce129f7bc0370ca2cf AB1564 B27ebb234978c30459e1cce3c40609c0 yuTRk7893 23bcf705d7fb11ee155ea9aeeb5c15fe G&*/osiusn#@ C293dc308b571573e149ae5b0bcc4f4e Criptografia Unidirecional password() – 16 caracteres md5() – 32 caracteres sha1() – 40 caracteres
Regra de Negócio: O cliente pode ter no máximo 3 endereços, sendo: cobrança, comercial e residencial. (1,N) (1,3) cliente endereco
Criação de Tabelas Atributos Tipos de Dados PK Relacionamento FK Cardinalidade Auto Incremento UNIQUE Alternate Key Null X Not Null Index Imagem de Projeto Database Conversion Geração de SQL Engenharia Reversa