Técnicas e Linguagens para Banco de Dados I Prof. Eduardo Ribeiro www.eduardo.trisolution.com.br eduardo@ trisolution.com.br Introdução – Banco de Dados Dados x Informações Dados = É um elemento que mantém a sua forma bruta (texto, imagens, sons, vídeos, etc.) Informações = Significado dos dados para um determinado usuário! (Dados compilados e processados) Conceitos Sistema de Bancos de Dados: É um software com recursos específicos para facilitar a manipulação das informações dos bancos de dados e o desenvolvimento de programas aplicativos (Oracle, SQLServer, Paradox, Access, DBase). Possui quatro componentes principais: o o o o Dados Hardware Software Usuários Componentes de um Sistema de BD Linguagem de Banco de Dados SQL (Structured Query Language – Linguagem de consulta estruturada) é uma linguagem usada para a consulta, atualização, criação e gerenciamento de banco de dados relacionais. É um método para selecionar determinados registros de um banco de dados, seguindo um critério especificado a sua escolha. O SQL é considerado uma linguagem padrão para o gerenciamento de banco de dados relacionais. Linguagem de Banco de Dados Alguns Tipos de Dados o o o o o o Char; VarChar; Integer; Float; Decimais; Datas; Linguagens de Definição e Manipulação de Dados Exemplo de SQL: CREATE TABLE cliente ( nome VARCHAR(50), cidade VARCHAR(35), rua VARCHAR(30) ) TABLE cliente João Curitiba Albino Sartori Maria Marília Av Republica Segurança em Banco de Dados Os bancos de dados são utilizados para armazenar diversos tipos de informações, desde dados sobre uma conta de e-mail até dados importantes da Receita Federal. Para tal existem diversos tipos, os quais variam em complexidade e sobretudo em segurança. Fonte: http://pt.wikipedia.org Meios de Proteger as Informações Armazenadas num Banco de Dados Criptografia o São técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário, o que a torna difícil de ser lida por alguém não autorizado. Assim sendo, só o receptor da mensagem pode ler a informação com facilidade. MD5 o Foi desenvolvido em 1991 por Ronald Rivest para suceder ao MD4 que tinha alguns problemas de segurança. Por ser um algoritmo unidirecional, uma hash md5 não pode ser transformada novamente no texto que lhe deu origem. O método de verificação é, então, feito pela comparação das duas hash (uma da base de dados, e a outra da tentativa de login). Eduardo = MD5( 364a440226e1b575411a0e324e712d17 ) eduardo = MD5( 6d6354ece40846bf7fca65dfabd5d9d4 ) Meios de Proteger as Informações Armazenadas num Banco de Dados Senhas o É uma palavra ou uma ação secreta previamente convencionada entre duas partes como forma de reconhecimento. Backup o Em informática, cópia de segurança é a cópia de dados dum dispositivo de armazenamento a outro para que possam ser restaurados em caso da perda dos dados originais, o que pode envolver apagamentos acidentais ou corrupção de dados. Modelo Relacional O modelo de dados relacional apresenta o banco de dados como uma coleção de tabelas. O conceito de tabela, embora seja simples e intuitivo, apresenta uma forte correspondência com o conceito matemático de uma relação. Um banco de dados relacional consiste de uma coleção de relações, cada uma das quais associada a um nome único. Modelo Relacional Chave Primária: a chave primária de uma relação é o atributo ou coleção de atributos que identifica univocamente uma dada tupla (linha). Por exemplo, um dado código identifica uma única linha (um vendedor específico). Assim, COD-VEND é a chave primária da relação VENDEDOR. Modelo Relacional Chave primária simples, é formada por um único campo da tabela, esse campo não pode ter dois ou mais registros de mesmo valor, e também não pode conter nenhum registro nulo. Chave primária composta, formada por mais de um campo, os valores de cada campo podem se repetir, mas não a combinação desses valores. Exemplo: a tabela 'Livros_Autores' tem como chave primária (cod_livro, cod_autor). Podem existir nessa tabela os registros: (5, 9), (5, 10), (4, 9), (9, 5) Mas não podem existir dois registros (5, 9). Fonte: http://pt.wikipedia.org Modelo Relacional Chave Estrangeira: a noção de chave estrangeira oferece um mecanismo para especificar explicitamente relacionamentos entre duas relações diferentes. Consiste em incluir a chave primária de uma relação como atributo da outra. Entidades / Atributos Entidades: têm existência própria. Exemplo: Aluno, Cliente, Produto. Atributos: os atributos da entidade Aluno são: Número da matrícula Nome Endereço Data nascimento Tipos de Relacionamentos Possíveis no MER Um para um (1 para 1) - indica que as tabelas têm relação unívoca entre si. Você escolhe qual tabela vai receber a chave estrangeira; Um para muitos (1 para N) - a chave primária da tabela que tem o lado 1 vai para a tabela do lado N. No lado N ela é chamada de chave estrangeira; Muitos para muitos (N para N) - quando tabelas têm entre si relação n..n, é necessário criar uma nova tabela com as chaves primárias das tabelas envolvidas, ficando assim uma chave composta, ou seja, formada por diversos campos-chave de outras tabelas. A relação então se reduz para uma relação 1..n, sendo que o lado n ficará com a nova tabela criada. Os relacionamento 1 para 1 e 1 para N podem ser mapeados diretamente em chaves estrangeiras nas tabelas originais. Já o relacionamento N para N exige o uso de uma tabela auxiliar. Fonte: http://pt.wikipedia.org/wiki/Banco_de_dados_relacional Tipos de Relacionamentos Possíveis no MER Modelagem de dados Modelagem de dados ou modelagem de banco de dados envolve uma série de aplicações teóricas e práticas, visando construir um modelo de dados consistente, não redundante e perfeitamente aplicável em qualquer SGBD moderno. A modelagem de dados está dividida em: Modelo conceitual Modelo lógico Modelo físico Modelo conceitual A modelagem conceitual é a forma mais natural dos fatos e estão mais próximas da realidade do ambiente do cliente. No modelo conceitual o cliente deverá ser envolvido a fim de obter o levantamento de dados que darão suporte à construção de todo o modelo. Modelo Físico / Modelo Lógico O modelo lógico já leva em conta algumas limitações e implementa recursos como adequação de padrão e nomenclatura. Define as chaves primárias e estrangeiras. deve ser criado levando em conta os exemplos de modelagem de dados criados no modelo conceitual. * = Muitos Modelo Físico / Modelo Lógico No modelo físico fazemos a modelagem física do modelo de banco de dados. Leva-se em conta as limitações impostas pelo SGBD escolhido e deve ser criado sempre com base nos exemplos de modelagem de dados produzidos no item anterior, modelo lógico. Modelo Relacional Representação Simplificada: uma estrutura de tabela pode ter a seguinte representação simplificada: NOME-DA-TABELA=(LISTA-DE-ATRIBUTOS) Nessa representação grifa-se a chave primária da relação para destacá-la. Exemplo: CLIENTE(COD-CLI, NOME-CLI, ENDEREÇO, LIM-CRED, CODVEND) VENDEDOR(COD-VEND, NOME-VEND, COMISSAO, CPF_VEND) Modelo Relacional CLIENTE(COD-CLI, NOME-CLI, ENDEREÇO, LIM-CRED, COD-VEND) VENDEDOR(COD-VEND, NOME-VEND, COMISSAO, CPF_VEND) COD-VEND 45852 57658 74253 COD-CLI 2584 3245 1256 5740 NOME-VEND SERGIO MARCOS JOAO COMISSAO 10 15 10 CPF_VEND 254.425.658-58 156.426.810-15 104.081.741-62 NOME-CLI BAR X RESTAURANTE Y BAR Z ENDERECO R. DAS BROMELIAS, 45 R. DAS ROSAS, 94 R. DAS ORQUIDEAS, 2 CANTINA W R. DAS VIOLETAS, 34 LIM-CRED COD-VEND 5600 45852 4200 57658 9800 45852 7500 74253 Diagrama de Entidade Relacionamento (DER) COD_FUNCIONARIO ID_SETOR NOME DESCRICAO SALARIO SETOR 1 N FUNCIONARIO SETOR FUNCIONARIO * ID_SETOR DESCRICAO * COD_FUNCIONARIO NOME SALARIO CPF ID_SETOR (FK) SETOR (ID_SETOR, DESCRICAO) FUNCIONARIO (COD_FUNCIONARIO, NOME, SALARIO, CPF, ID_SETOR) Modelo Relacional SETOR (ID_SETOR, DESCRICAO) FUNCIONARIO (COD_FUNCIONARIO, NOME, SALARIO, ID_SETOR) SETOR PK (Chave Primária) Campo Tipo Tamanho Nulo PK_SETOR ID_SETOR NUMBER (3) N DESCRICAO VARCHAR2 (30) N FK (Chave Estrangeira) CK (Regra de Validação) CK_SETOR_DESCRICAO (DESCRICAO <> ‘’) FUNCIONARIO PK Campo Tipo Tamanho Nulo NUMBER (5) N NOME VARCHAR2 (50) N SALARIO NUMBER (8,2) S CPF CHAR (11) N ID_SETOR NUMBER (3) S PK_FUNCIONARIO COD_FUNCIONARIO AK_FUNC_CPF FK CK CK_FUNC_SALARIO (SALARIO > 0) FK_FUNC_SETOR Diagrama de Entidade Relacionamento (DER) ID_CARGO COD_FUNCIONARIO NOME FUNCIONARIO DESCRICAO DATA_INICIO N FUNCAO M CARGO FUNCIONARIO FUNCAO CARGO * COD_FUNCIONARIO NOME * COD_FUNCIONARIO (FK) * ID_CARGO (FK) DATA_INICIO * ID_CARGO DESCRICAO FUNCIONARIO (COD_FUNCIONARIO, NOME) CARGO (ID_CARGO, DESCRICAO) FUNCAO (COD_FUNCIONARIO, ID_CARGO, DATA_INICIO) Modelo Relacional FUNCIONARIO (COD_FUNCIONARIO, NOME) CARGO (ID_CARGO, DESCRICAO) FUNCAO (COD_FUNCIONARIO, ID_CARGO, DATA_INICIO) FUNCIONARIO PK Campo PK_FUNCIONARIO COD_FUNCIONARIO NOME Tipo Tamanho Nulo NUMBER (5) N VARCHAR2 (50) N FK CK FK CK CK CARGO PK Campo Tipo Tamanho Nulo PK_CARGO ID_CARGO NUMBER (3) N DESCRICAO VARCHAR2 (30) N FUNCAO PK Campo Tipo Tamanho Nulo FK PK_FUNCAO COD_FUNCIONARIO NUMBER (5) N FK_FUNCAO_FUNCIONARIO PK_FUNCAO ID_CARGO NUMBER (3) N FK_FUNCAO_CARGO DATA_INICIO DATE N Diagrama de Entidade Relacionamento (DER) ID_HOMEM COD_MULHER NOME NOME MULHER 1 1 CASAMENTO HOMEM FUNCIONARIO CARGO * COD_MULHER NOME * ID_HOMEM NOME COD_MULHER (FK) MULHER(COD_ MULHER, NOME) HOMEM(ID_CARGO, NOME, COD_MULHER) Administração do Modelo de Dados Manutenção da Documentação do Projeto Lógico (Modelo) e Físico (Esquema) do Banco de dados Métodos de Atualização: Engenharia Direta (Geração do Esquema) Engenharia Reversa Comparação Modelo x Esquema (Sincronização) Utilização de Ferramentas Case Administração do Modelo de Dados Engenharia Direta (Geração de Esquema) Entidade_X Esquema Físico Entidade_Y Modelo Relacional Administração do Modelo de Dados Engenharia Reversa Entidade_X Esquema Físico Entidade_Y Modelo Relacional Administração do Modelo de Dados Comparação Modelo x Esquema (Sincronização) Entidade_X Esquema Físico Entidade_Y Modelo Relacional Administração do Modelo de Dados Ferramentas Case Dr. Case (www.squadra.com.br) ER/Studio (www.embarcadero.com) DB-MAIN (www.db-main.be) DBDesigner (www.fabforce.net/dbdesigner4) ER-WIN (www.ca.com/us/products/product.aspx?id=260) Exercício: Modelo conceitual, Modelo Lógico e Modelo Físico. Cadastro de Pessoa Nome Endereço Telefone Data Nascimento Estado Cidade CEP CPF RG Ocupação Sexo Estado civil Complemento Email Telefone Comercial Celular Ramal FAX