57
Banco de Dados

Apostila Banco de Dados

Embed Size (px)

Citation preview

Page 1: Apostila Banco de Dados

Banco de Dados

Page 2: Apostila Banco de Dados

Escola Contec

Página 2 de 57

SumárioSumário ...............................................................................................................................2 Apresentação.......................................................................................................................4 Conceitos gerais de banco de dados...................................................................................5

Conceito de banco de dados...........................................................................................5 Definindo “dado” e “informação” .....................................................................................6

Informação ..................................................................................................................6 Dado............................................................................................................................6

Sistema de gerenciamento de banco de dados (SGBD) .................................................6 Banco de dados relacional...................................................................................................7

Conceito de banco de dados relacional...........................................................................7 Entidades ou tabelas relacionais.................................................................................7 Estrutura de uma tabela ou entidade...........................................................................7

Identificadores de registros (chaves)...............................................................................8 Chave primária ............................................................................................................8 Chave estrangeira .......................................................................................................9

Modelos de banco de dados..............................................................................................10 Modelo Lógico ...............................................................................................................10 Modelo Conceitual......................................................................................................... 11

Conceitos de modelagem de dados...................................................................................14 Modelo Entidade Relacionamento – MER.....................................................................14

Entendendo os símbolos de um MER .......................................................................14 Entidades ( tabelas) ..............................................................................................14 Atributos ( campos ) ..............................................................................................15 Relacionamentos ..................................................................................................15

Tipos de relacionamento (cardinalidade).......................................................................17 Cardinalidade mínima................................................................................................17 Cardinalidade máxima...............................................................................................17 Cardinalidade um para um (1:1)................................................................................18 Cardinalidade muitos para muitos (N:N)....................................................................19

Normalização de dados .....................................................................................................21 Primeira forma normal (1NF) .........................................................................................21 Segunda forma normal (2NF) ........................................................................................22 Terceira forma normal (3NF)..........................................................................................24

Ferramentas para modelagem de banco de dados ...........................................................26 Case Studio 2 ou Toad Data Modeler ............................................................................26 ERwin ............................................................................................................................27

Sites dos desenvolvedores ................................................................................................29 Ferramentas de banco de dados .......................................................................................30

Microsoft Access............................................................................................................30 Microsoft Sql Server ......................................................................................................33 Oracle Database............................................................................................................37 MySql.............................................................................................................................39 PostgreSQL...................................................................................................................41

SQL - Strutured Query Language .....................................................................................44 Como surgiu o SQL .......................................................................................................44 Padronização SQL ........................................................................................................44 Conjuntos de comandos SQL........................................................................................44

Page 3: Apostila Banco de Dados

Escola Contec

Página 3 de 57

DDL – Data Defination Language..............................................................................45 DML – Data Manipulation Language .........................................................................45 DQL – Data Query Language....................................................................................45 DCL – Data Control Language ..................................................................................45 DTL – Data Transaction Language............................................................................45

Manipulação de dados (DML)............................................................................................47 Inserindo dados em uma tabela ....................................................................................47

Inserindo dados sem especificação de colunas (ou campos) ...................................47 Inserindo dados em colunas especificadas...............................................................48 Inserindo valores NULL (nulo) ...................................................................................49

Atualizando dados existentes ............................................................................................51 Atualizando valores em uma tabela...............................................................................51

Cláusula WHERE ......................................................................................................52 Excluindo dados ............................................................................................................54 Conjunto de instruções DDL..........................................................................................54

Tipo de dados do SQL...............................................................................................54 Criando tabelas .........................................................................................................55 Campos obrigatórios .................................................................................................55 Regras de integridade na criação da tabela ..............................................................56 Alterando a estrutura de dados da tabela..................................................................56 Como definir tabelas relacionadas ............................................................................56

Removendo tabelas de dados .......................................................................................56

Page 4: Apostila Banco de Dados

Escola Contec

Página 4 de 57

Apresentação Estamos em um mundo povoado de informações e muitas delas organizadas e armazenadas, tanto física como eletronicamente. Por vezes isto nos passa despercebido, mas pense por um instante: Nós temos um registro geral(RG), um número de CPF, dados em nossa agenda eletrônica do celular, ficha cadastral em locadoras de vídeo, matrícula escolar e uma imensidade a mais de informações que nos cercam. Como os exemplos citados anteriormente, percebemos que todas elas(ou boa parte delas) são de grande importância e fazem parte de um controle(Sistema). Imagine por exemplo o dono de uma vídeo-locadora ter que memorizar todos os 4583 clientes de sua empresa, com seus respectivos nomes, endereços, telefones, dependentes, títulos locados e tudo mais? Uma tarefa impossível não acha? Para suprir esta necessidade existem os bancos de dados(ou base de dados) que armazenam e gerenciam estas informações. Nesta apostila vamos compreender como os bancos dados funcionam e principalmente como construir(modelar) um banco de dados coeso. Durante nosso estudos vamos nos deparar com uma série de técnicas e conceitos, além de conhecermos algumas ferramentas para a aplicação destas. Um dica: O estudo de banco de dados dentro da área de desenvolvimento de aplicações, é de extrema importância, pois o banco de dados é de grande relevância para um software, seja ele uma aplicação desktop ou serviço WEB. Eu diria que um bom sistema tem 50% de regra de negócios(Software) e 50% de banco de dados. Portanto é bom que se extraia o máximo possível do conteúdo apresentado aqui. Um ótimo estudo para você! Gabriel Otávio

Page 5: Apostila Banco de Dados

Escola Contec

Página 5 de 57

Conceitos gerais de banco de dados Banco de dados é um conceito de armazenamento de informações que necessariamente não precisa estar armazenado em algum dispositivo eletrônico(Um computador por exemplo). Na verdade, um BD(Banco de dados) é uma série de informações armazenadas de forma eficiente. Imagine que você tenha uma agenda(de papel) com os nomes de seus amigos. Os nome são escritos na agenda de acordo com a letra da pessoa, logo o Oswaldo será escrito na letra O e o Ronaldo na letra R da caderneta. O que acabei de exemplificar nada mais é que um banco de dados, os dados estão armazenados de forma organizada para sua manipulação. Portanto o conceito de Banco de Dados é mais antigo que o armazenamento eletrônico, contudo o armazenamento eletrônico hoje é o meio mais eficaz de manipular um BD. Imagine você ao invés de registar seus amigos e indexá-los(classificar) em ordem Alfabética você queira classificá-los por ordem alfabética mas por sobrenome. Uma tarefa um pouco desgastante se sua agendinha tiver uma quantidade considerável de informações. Você teria que rescrevê-la novamente enquanto que em um BD eletrônico, basta um simples comando e pronto: tudo já está classificado por sobrenome. Neste capítulo veremos mais amplamente os conceitos gerais de banco de dados, os tipos de sistemas de gerenciamento de banco de dados e os modelos de banco de dados. Seja bem-vindo!

Conceito de banco de dados Com já foi dito no tópico anterior, vimos que um banco de dados é mais antigo que o formato eletrônico de armazenamento, contudo estamos estudando TI e conseqüentemente devemos nos aprofundar no estudo de banco de dados eletrônico, portanto vamos aprender agora o conceito de banco de dados par este meio. O banco de dados nada mais é que a representação de um modelo real armazenado em arquivos de informações, com estruturas e regras para a manipulação desta estrutura. De forma mais simples podemos dizer que um banco de dados é o arquivo físico de dados armazenado em meio eletrônico(Disco rígido por exemplo), onde encontram-se armazenados os dados e seus relacionamentos. Assim podemos definir que: Banco de dados é um meio de armazenamento de dados e regras em formato físico, armazenado em um dispositivo eletrônico como um disco rígido. Um banco de dados normalmente é utilizado por um(ou vários) sistema de informações. Por exemplo, quando vamos ao supermercado comprar um sabonete, o atendente do caixa passa o produto no leitor ótico e no monitor é apresentado os dados do

Page 6: Apostila Banco de Dados

Escola Contec

Página 6 de 57

produto(nome, preço,etc.). A tela que aposenta os dados na verdade é o Sistema do supermercado (mais conhecido como sistema de frente de loja), mas os dados que foram apresentados nela foram consultados em um banco de dados.

Definindo “dado” e “informação” Agora que já estamos mais entendidos com o conceito de banco de dados, vamos ter um entendimento mais claro do que é um dado e do que é uma informação.

Informação Informação é o valor que será cadastrado em um banco de dados, de forma generalizada podemos dizer a informação é o valor bruto. Um valor mais conceitual como por exemplo, as informações de um cliente ou um produto.

Dado Dado já é o valor derivado da informação, este valor já está lapidado para a manipulação. Por exemplo, dentre as informações de clientes podemos descrever com dados os nome do cliente o endereço, o cpf, o RG, o telefone, a data de cadastro e outros valores. Ou seja, temos a informação já conceitual para a manipulação em um banco de dados.

Sistema de gerenciamento de banco de dados (SGBD) Após o banco de dodos sair do meio físico para o meio eletrônico algumas alterações foram necessárias para sua maior facilidade de uso com por exemplo o conceito de SGBD ou DBMS com alguns autores o nomeiam(DBMS nada mais é que SGBD sem tradução ao português). Antes os dados e suas regras de armazenamentos não tinham uma definição clara, ou seja, tudo era misturado gerando assim uma dependência enorme de linguagem de programação e claro a manutenção de um banco de dados era mais cara, mais demorada e menos prática. Após o conceito de SGBD o que ocorreu basicamente foi uma separação entre dados e regras de armazenamentos dividindo o BD em duas camadas: BD e SGBD. Assim temos os dados(somente as informações) armazenados separadamente das regras de armazenamento. Levando em consideração que um BD é construído para ser utilizado por um programa, este conceito elimina a responsabilidade do programador de saber exatamente como foi criando o BD, basta ao programador saber como os dados foram planejados. A isto damos o nome de abstração de dados. Ou seja, não há necessidade de implementar o

Page 7: Apostila Banco de Dados

Escola Contec

Página 7 de 57

funcionamento das estruturas do banco de dados, muito menos saber como estas foram criadas. É importante lembrar que a aplicação desenvolvida tem suas próprias regras que complementam as regras da estrutura do SGBD. Estas regras são chamadas de regras de negócio.

Banco de dados relacional Em se tratando de banco de dados, existem vários modelos de estruturas como o Banco de dados orientado a objetos o banco de dados e outras metodologias de aplicação organização. Neste apostila abordaremos o modelo de Banco de dados relacional, pois é o mais utilizado no mercado e possui uma grande variedade de ferramentas.

Conceito de banco de dados relacional No modelo de dados relacional os dados são organizados e agrupados em tabelas (relacionais). Estas tabelas guardam estes dados e podem possuir referência a outra tabela (alguns autores usam o termo entidade). Assim o banco todo não passa de uma série de tabelas que se referenciam (sempre que isto for necessário, claro).

Entidades ou tabelas relacionais As tabelas ou entidades são conceitos de “coisas”, que podem ser físicas ou não, ou seja, podemos ter um uma tabela de um banco de dados de vídeo-locadora denominada cliente que representa os clientes da empresa, assim a tabela é o modelo abstrato de uma “coisa” física, real. Em contra partida podemos também ter uma tabela de nome locação que armazena o registro de locações dos cientes. Agora temos uma entidade abstraída de uma “coisa” não física, pois a locação na verdade é o ato de o cliente locar um ou vários títulos. Neste mesmo exemplo temos duas tabelas que necessitam de uma ligação. Perceba que para se fazer uma locação é necessário ter os dados do cliente. Logo os dados do cliente estão na tabela cliente que está relacionado à tabela locação. Isto é um exemplo de banco de dados relacional.

Estrutura de uma tabela ou entidade Vimos que uma tabela é a representação abstrata de um conjunto de dados (“coisa”). Agora vamos ver como uma tabela está estruturada. Uma tabela é composta de um conjunto de campos ou colunas. Um campo é a definição mais a precisa de um dado(nome, endereço, data do cadastro, etc.). O SGBD tem a

Page 8: Apostila Banco de Dados

Escola Contec

Página 8 de 57

capacidade de impor uma camada de regras para o correto preenchimento de valores a um campo. São as regras de validação ou consistência. Após a definição de campos de uma tabela, ou a estruturação da entidade a mesma está apta a receber dados. Os dados são cadastrados em tabelas em linhas onde cada linha representa um conjunto único de dados. As linhas também são denominadas de registros ou tuplas. Para entender melhor observe a ilustração a seguir:

Identificadores de registros (chaves) As tabelas de um banco relacionais podem contar chaves que nada mais são que identificadores de registros. As chaves de uma tabela são responsáveis por manter a integridade de dados de uma tabela e referenciar os relacionamentos entre estas entidades.

Chave primária A chave primária é o identificador de registros de uma tabela. Ela de conter um valor único e obrigatório. Pode ser formada por um ou mais campos (neste caso chama-se chave primária composta). Imagine a seguinte situação. O dono de uma vídeo-locadora cadastra seus clientes e percebe que precisa fazer buscas e filtro dentro do banco de dados. Como por exemplo, listar os clientes inadimplentes ou os melhores clientes da locadora. Para isso ele precisa identificar seus clientes por um campo que tenha um valor único, ou seja, um valor que nunca mais vai se repetir dentro da tabela. Em um primeiro instante logo pensamos no

Colunas Registros

Page 9: Apostila Banco de Dados

Escola Contec

Página 9 de 57

campo nome do cliente, mas devemos considerar o cadastro de homônimos(pessoas com nomes iguais), então temos que pensar em outro dado (neste caso do cliente) que possar ser a chave primária. O CPF seria um ótimo campo para este fim, pois todos clientes devem ter CPF no ato do cadastro (Obrigatório) e todos os CPFs são únciis(Não existem CPFs com números iguais). Muito banco de dados preferem identificar seus registros por campos próprios como Código, ID, Matrícula, etc. Esta técnica de ter um controle próprio para a chave tem duas vantagens: Identifica melhor o registro. A matrícula de um alno por exemplo, poderá ser formada pela seguinte lógica: dia da matrícula, mês e ano da matricula e número seqüencial de atendimento. Assim um aluno de matricula 0702063 foi o cadastrado em 2007 do mês 02 no dia 06 e este aluno foi o terceiro atendimento do dia. Outra vantagem é que o controle fica dentro do sistema e não externo. Imagine uma empresa de locação de carros fazer um grande investimento no desenvolvimento de seu software, onde os veículos são identificados por suas placas e logo após as placas de veículos serem abandonadas pelo controle do DETRAN. A empresa iria arcar com um grande prejuízo pois teria que re-desenvolver boa parte do sistema.

Chave estrangeira A chave estrangeira nada mais é que a referência a uma outra tabela(relacionamento). Vamos supor que neste sistema de vídeo-locadora um cliente pode fazer várias locações, logo as locações devem ser identificadas como pertencentes a este cliente. Para isso deve-se criar uma referência ao cliente. Ou seja, definir que a locação X pertence ao cliente Y. Para isto precisamos fazer um clone da chave primária da tabela “origem”(cliente neste caso) para a tabela “destino” (locação). Veja a seguir a representação da chave estrangeira:

Page 10: Apostila Banco de Dados

Escola Contec

Página 10 de 57

Observe que as locações do cliente 102 são identificadas em uma coluna Código do Cliente da Tabela Locação ou seja a referência da locação nada mais é que a chave estrangeira. O Conceito de chave primária e chave estrangeira é de fundamental importância para a implementação de um banco de dados relacional.

Modelos de banco de dados Os modelos representativos de um banco de dados nada mais é que um esquema(ou diagrama) da representação das informações e atribuições de um banco de dados. Exitem dois modelos de representação gráfica de um banco de dados, o modelo conceitual e o modelo lógico vamos ver as características de cada um

Modelo Lógico O Modelo lógico costuma ser menos utilizado por sua dependência ao tipo de SGBD representado. Ou seja, existe diferença entre modelos de uma estrutura de banco relacional e uma estrutura de banco orientado a objetos ou em rede.

Page 11: Apostila Banco de Dados

Escola Contec

Página 11 de 57

Assim podemos afirmar que o Modelo Lógico é uma representação de um BD que leva em consideração o tipo de banco utilizado (relacional, rede, orientado a objetos...). Como esta apostila aborda o modelo de dados relacional não abordaremos o modelo lógico de representação de dados.

Modelo Conceitual O Modelo conceitual tem por finalidade apresentar somente a estrutura de dados, sendo este independente do tipo de base, seja ela relacional em rede ou orientada a objetos. O Modelo conceitual faz uma representação gráfica do esquema de dados utilzando um modelo gráfico chamado de Modelo Entidade Relacionamento ou MER, alguns autores ainda utilizam o termo Diagrama Entidade Relacionamento ou DER. Veja abaixo uma estrutura de dados representada em um modelo gráfico MER:

Page 12: Apostila Banco de Dados

Escola Contec

Página 12 de 57

Nota: É importante lembrar que o modelo conceitual e MER representam somente a estrutura de dados da entidade (tabela), desconsiderando o conteúdo da mesma. Verifique também o atributo(campo) Código foi grafado no diagrama sem acento, isto ocorre por motivos técnicos, pois a maior parte das ferramentas de banco de dados não permitem acentos, espaços e caracteres especiais. Considerando nosso exemplo como sendo o sistema de locadora, apresentamos anteriormente a entidade cliente tendo relação com a entidade locação

Page 13: Apostila Banco de Dados

Escola Contec

Página 13 de 57

Veja que as chaves primárias das entidades tem uma representação diferenciada ( ● ) e o relacionamento foi representado por uma ligação em forma de linha e um losangolo. Na ponta de ligação entre as entidades temos a letra “n” na entidade Cliente e o número “1” na entidade Locação. Isto representa a cardinalidade, ou o tipo de relação entre as tabelas. Vamos abordar mais a frente este conteúdo. Nota: Alguns autores e ferramentas de modelagem de dados utilizam diagramas com alguma diferença, contudo com a mesma lógica estrutural.

Page 14: Apostila Banco de Dados

Escola Contec

Página 14 de 57

Conceitos de modelagem de dados Agora que sabemos a base tanto sobre entidades (tabelas) e como é feito a representação destas entidades, seus atributos e relacionamentos, vamos estudar como devemos modelar um projeto de dados. A partir de agora vamos nos aprofundar mais em conceitos de análise de dados, dicas e modelos mais complexos de entidade e relacionamento. Estarei disponibilizando algumas ferramentas de modelagem para a aplicação de nosso conteúdo teórico.

Modelo Entidade Relacionamento – MER O Modelo entidade relacionamento como já visto no tópico anterior é a representação gráfica de uma estrutura de dados e seus relacionamentos. Este modelo foi originalmente apresentado por Peter Chen em 1970 com o objetivo de padronizar o desenvolvimento de diagrama de dados. Alguns autores chamam o MER de DER, Diagrama Entidade Relacionamento. Este modelo gráfico se destaca por permitir abstração total de dados, ou seja, somente a estrutura de dados é manipulada, ficando de fora a aplicação e o tipo de banco utilizado. Entretanto a utilização somente de um MER no processo de desenvolvimento de aplicações não é recomendado, pois o fluxo de dados e estado das estapas do processo ficam de fora deste diagrama. Normalmente profissionais de análise e desenvolvimento utilizam o MER em conjunto com outros diagramas, sendo que os diagramas UML (Unified Modeling Language ou Linguagem unificada de modelagem) mais utilizados por sua padronização.

Entendendo os símbolos de um MER Dentro de um diagrama MER temos vários símbolos gráficos, vamos agora estudar cara um destes.

Entidades ( tabelas) As entidades são representadas com um retângulo.

Page 15: Apostila Banco de Dados

Escola Contec

Página 15 de 57

Entidade Cliente

Atributos ( campos ) São representados por um oval, sendo que a chave primária tem o oval totalmente preenchido.

Entidade cliente com seus atributos,

sendo que codigo é o atributo chave primária.

Relacionamentos Os relacionamentos são apresentados por uma linha que liga as entidades, nesta linha é apresentado outro símbolo: um losangolo que representa a ação daquele relacionamento.

Entidade cliente relacionada a entidade locacao.

Page 16: Apostila Banco de Dados

Escola Contec

Página 16 de 57

O losango representa a ação do relacionamento.

Nota: Algumas ferramentas de modelagem não costumam utilizar o símbolo losangolo. Ele é simplesmente subtraído do diagrama. Estes são os símbolos básicos de um MER, no próximo tópicos vamos estudar como definimos os tipos de relacionamentos e a estes símbolos que agora conhecemos outros irão se juntar para formar um diagrama mais preciso.

Page 17: Apostila Banco de Dados

Escola Contec

Página 17 de 57

Tipos de relacionamento (cardinalidade) Para o funcionamento perfeito de um banco de dados relacional é importante saber que devemos impor as entidades os tipos de relacionamentos permitidos. Estas regras de relação também são denominadas cardinalidades.

Cardinalidade mínima A cardinalidade mínima define se o relacionamento é obrigatório entre as entidades. Os símbolos que definem este relacionamento são: 1 ou I - Quando existe a obrigatoriedade de um vínculo entre as entidades. Ο - Quando não existe a obrigatoriedade de vinculo entre as entidades.

Vamos entender melhor estes símbolos analisando o diagrama abaixo:

Levando em consideração nosso exemplo de banco de dados de uma vídeo locadora podemos analisar este diagrama da seguinte maneira de acordo com a cardinalidade mínima: Na relação Cliente – Dependente a cardinalidade mínima não impõe o cadastramento obrigatório de um dependente ao se cadastrar um cliente, já que a cardinalidade é definida com o símbolo Ο (zero).

Na relação Dependente – Cliente a cardinalidade mínima já impõe a existência obrigatória de um cliente para se cadastrar um dependente, uma vez que a cardinalidade foi definida com o símbolo I (um).

Cardinalidade máxima A cardinalidade máxima representa a quantidade máxima de trasações(relacionamentos) que são permitidos entre entidades relacionadas.

Page 18: Apostila Banco de Dados

Escola Contec

Página 18 de 57

Vamos entender melhor a cardinalidade máxima analisando a figura a seguir:

Na figura acima percebemos que agora existe um novo símbolo (veja abaixo) indicando que a quantidade máxima de ocorrências no relacionamento Cliente – Dependente é ilimita (ou n ). Ou seja, um cliente pode possuir n (vários) dependentes.

Tipo n (muitos) ou ilimitado

As cardinalidades mínima e máxima podem ser utilizadas em conjunto no mesmo relacionamento. Veja abaixo:

A figura acima representa um relacionamento com as duas cardinalidades em conjunto. Nele podemos perceber que o relacionamento Dependente – Cliente exige um cliente para o cadastramento de um dependente ( cardinalidade mínima); contudo o relacionamento Cliente – Dependente nos diz que a existência de um dependente para o cadastramento de um cliente não é obrigatório (cardinalidade mínima novamente) e sabemos que um cliente pode cadastrar vários (n) dependentes (cardinalidade máxima). O conceito deste tipo de cardinalidade é do tipo 1:N ou Um para Muitos.

Cardinalidade um para um (1:1)

Page 19: Apostila Banco de Dados

Escola Contec

Página 19 de 57

A cardinalidade um para um ou 1:1 é a imposição do relacionamento de um único registro entre duas entidades relacionadas. Vamos entender melhor: Saindo um pouco de nosso exemplo de vídeo locadora, vamos imaginar que agora temos a necessidade de contruir um banco de dados que representa um condomínio residencial. Neste condomínio, temos a seguinte situação os condôminos guardam seus veículos na garagem privativa do condomínio, contudo cada condomínio tem o direito a uma vaga de garagem. Assim poderíamos representar (abstrair) estas informações em um MER da seguinte maneira.

Neste caso a entidade condomino está em uma relação de um para um com a entidade vaga ou seja: um condômino possui somente uma vaga e uma vaga pertence a somente um condômino.

Cardinalidade muitos para muitos (N:N) O relacionamento de do tipo muitos para muitos ou N:N acontece quando duas entidades possuem vários registros se relacionando com vários registros. Imaginemos agora o nosso sistema de vídeo locadora a seguinte situação: Um cliente pode locar vários títulos e um mesmo título pode ser locado por clientes. Este relacionamento pode ser representado da seguinte maneira:

Uma característica importante da cardinalidade N para N é que ela só existe em nível de abstração, ou projeto. Em nível físico este relacionamento fica impossível de se implementar. Para tanto utilizamos o seguinte: Entre as entidades relacionadas adicionamos uma nova entidade, denominada tecnicamente de entidade associativa com

Page 20: Apostila Banco de Dados

Escola Contec

Página 20 de 57

a função de permitir tal relacionamento. Veja agora o diagrama a seguir que mostra o mesmo relacionamento já no modelo físico de dados.

O relacionamento anterior com a entidade associativa já criada. O nome da entidade associativa deve fazer referência ao relacionamento. Normalmente utiliza-se o nome da ligação (pertence, possui, etc...) , o nome das entidades ( cliente_titulo) ou até um nome mais sugestivo e pautado na realidade como no exemplo no diagrama acima. Estas são as regras básicas pra a criação de um projeto de banco de dados. Com base no que já foi apresentado estamos aptos a modelar e desenvolver bancos de dados, contudo ainda veremos como otimizar um diagrama de dados e veremos também algumas ferramentas que podemos utiliar para a modelagem de dados.

Page 21: Apostila Banco de Dados

Escola Contec

Página 21 de 57

Normalização de dados Normalização de dados é um conjunto de limitações impostas a uma estrutura de dados para que a mesma fique mais concisa e sem falhas estruturais. Inúmeras formas de normalização de dados foram definidas por diversos autores, contudo, em se tratando de banco de dados de modelo relacional, a normalização proposta por Codd é o método mais utilizado e aceitável atualmente no mercado e em meios acadêmicos. A normalização proposta or Codd é formado por um conjunto de três formas básicas (também chamadas de NF). Vale lembrar que a normalização de dados não tem forma de lei, sendo que estas regras por diversos motivos sejam eles estruturais ou técnicos, podem ser ignoradas ou até modificadas de acordo com a visão do profissional ou equipe de modelagem de dados. Podemos dizer que somente a primeira forma normal ou 1NF seria obrigatória, ficando as demais a cargo da visão do profissional de modelagem do banco de dados.

Primeira forma normal (1NF) A primeira forma normal diz que atributos de uma entidade que tem características de armazenamento de vários valores, ou seja, campos poderão assumir mais de um valor para um mesmo registro (também conhecido como atributo(s) multi valorado(s)) devem gerar uma nova entidade (ou ser extraído para outra entidade já existente) de dados relacionada a entidade origem. Vamos analisar a seguinte situação:

E entidade cliente possui os seguintes atributos: Codigo, Nome, CPF, RG e Dependente.

Page 22: Apostila Banco de Dados

Escola Contec

Página 22 de 57

Para aplicar a 1NF nos atributos basta verificar se o mesmo deverá ter mais de um valor para o mesmo registro.

Dica: Faça uma pergunta para o atributo utilizando o nome e propósito da entidade.

Exemplo: Pergunta: Um cliente pode ter mais de um nome? Resposta: Não, o atributo não é multi valorado.

Pergunta: Um cliente pode ter mais de um CPF? Resposta: Não, o atributo não é multi valorado.

Pergunta: Um cliente pode ter mais de um RG? Resposta: Não, o atributo não é multi valorado.

Pergunta: Um cliente pode ter mais de um dependente? Resposta: Sim, o atributo deve gerar uma nova entidade.

Assim teremos o seguinte diagrama após a aplicação da 1NF:

Segunda forma normal (2NF) A segunda forma normal fala sobre a dependência relativa de dados. Mas o que isto significa? Em termos claros podemos dizer que todo atributo de uma entidade que não depender exclusivamente da chave primária, deve gerar uma nova entidade. Vamos entender melhor, quando dizemos que um atributo é dependente exclusivamente da chave primária, devemos entender que a chave primária representa a proópria

Page 23: Apostila Banco de Dados

Escola Contec

Página 23 de 57

entidade em si. Por exemplo, a chave primária codigo da entidade cliente, representa o cliente, logo qualquer atributo que não seja dependente exclusivo do cliente cai na segunda forma normal.

Vamos à pratica para entender melhor, vamos imaginar um sistema que gerencia associados de um determinado plano de saúde. Veja o diagrama a seguir:

Neste diagrama temos o seguintes atributos: Codigo, Nome, CPF, RG, Numero_contrato e Dt_vencimento_contrato. Para identificar quais destes atributos estão na 2NF devemos verificar se o atributo dependente do Cliente para isso basta verificar se o atributo se alterado descaracteriza o cliente, por exemplo, se trocarmos o atributo Nome o cliente será descaracterizado? Sim, o cliente ficaria totalmente descaracterizado, se trocarmos o CPF e o RG? Teríamos o mesmo resultado, pois estes atributos provam que são dependentes da chave primária. Agora vamos verificar o atributo Dt_vencimento_contrato, se trocarmos o valor deste atributo o cliente será descaracterizado? Não, será o mesmo cliente. Já identificamos que este campo pode não ser dependente direto da chave primária. Vamos analisar melhor, Dt_vencimento_contrato depende da chave primária ou do atributo Numero_contrato? Este atributo depende não da chave primária, mas sim de outro atributo. Aí está um campo onde devemos aplicar a 2NF. Com a 2NF aplicada teríamos o seguinte diagrama:

Page 24: Apostila Banco de Dados

Escola Contec

Página 24 de 57

Ao aplicar a 2NF todos os atributos independentes devem ir para uma nova entidade relacionada a entidade de origem. No diagrama acima percebemos que o atributo Dt_vencimento_contrato gerou a entidade Contrato.

Terceira forma normal (3NF) A terceira forma normal utiliza o principio de transitividade, e diz que todo atributo devem depender não transitivamente da chave primária. Mas o que é isso? Transitividade é o que faz o modelo relacional de dados ser tão utilizado no mercado, pois ele permite através de seus relacionamentos transitar de uma entidade a outra sem a necessidade de se recriar determinado atributo.

Vamos entender melhor a 3NF. Veja o diagrama abaixo:

Page 25: Apostila Banco de Dados

Escola Contec

Página 25 de 57

Vimos que existe uma relação entre as entidades Cliente, Cidade e Pedido. Vamos imaginar os seguintes atributos na entidade Cliente e cidade: Cliente: Codigo, Nome, UF, codigo_cidade, nome_cidade Cidade: Codigo e Nome Pedido: Numero, Data, codigo_cliente, codigo_cidade

Analisando melhor os atributos vemos que Pedido tem relação com Cliente e com Cidade, mas a relação com Cidade é desnecessária, pois através da relação da entidade Pedido com a entidade Cliente podemos chegar (transitividade) até a entidade Cidade. Teríamos o seguinte fluxo: Pedido -> Cliente -> Cidade, ou seja o cliente seria a ponte para se chegar a Cidade. Assim, o relacionamento Pedido - Cidade deve ser eliminado.

Este é o principio da 3NF, toda dependência não transitiva deve ser eliminada.

Page 26: Apostila Banco de Dados

Escola Contec

Página 26 de 57

Ferramentas para modelagem de banco de dados Trabalhar com banco de dados exige antes de tudo muiti planejamento e análise, pois o projeto de um bom banco relacional é o sucesso de um ótimo sistema. Algumas ferramentas tem a função ajudar o projetista ou desenvolvedor de BDs a terem uma ferramente eficaz na construção e manipulação de estruturas de dados. Estas ferramentas são deniminadas Ferramentas CASE (Computer Aided Software Engineering) e foram projetadas para manipular bancos em nível de projeto, ou seja, em diagramas e ao mesmo tempo manipular este projeto em nível físico. Linguagem de máquina. Vamos apresentar uma série de ferramentas e suas características. É claro que outras tantas existem e estão a disposição de forma gratuita ou não para os projetistas e empresas de desenvolvimento. Fica a cargo de cada profissional ou equipe estabelecer qual é a melhor ferramenta para determinado projeto.

Case Studio 2 ou Toad Data Modeler O Case studio é um ferramenta case desenvolvida pela empresa Charonware. O Case Studio teve seu nome alterado recentemente para Toad (sapo) Data Modeler. O case Studio permite trabalhar em nível de abstração (diagramas) e tem suporte a maioria dos bancos de dados utilizados no mercado como MySql, PostGre SQL, Oracle e outros. O Case Studio se destaca por ser um software leve, gratuito de poderoso. Veja abaixo algumas telas do software:

Page 27: Apostila Banco de Dados

Escola Contec

Página 27 de 57

Escolhendo o tipo de base de dados

Diagramas (ER) sendo manipulado pela ferramenta

ERwin O ERwin é o software mais conhecido entre profissionais e empresas, trata-se um software completo. Abrange a maioria dos bancos que estão no mercado. Faz engenharia reversa de base de dados e claro: Trabalha com modelo de abstração (diagramas). Trata-se um software que é indispensável a qualquer projetista, por ser amplamente utilizado no mercado. Veja alguma telas do ERwin:

Page 28: Apostila Banco de Dados

Escola Contec

Página 28 de 57

Modelo de dados em diagrama ER

Page 29: Apostila Banco de Dados

Escola Contec

Página 29 de 57

Diagrana gerado pelo ERwin

Sites dos desenvolvedores http://www.ca.com ERwin http://www.casestudio.com Case Studio

Page 30: Apostila Banco de Dados

Escola Contec

Página 30 de 57

Ferramentas de banco de dados Vamos estudar alguns softwares que são utilizados para a construção e gerenciamento do banco de dados.

Microsoft Access O Microsoft Access é um banco de dados relacional para a plataforma Windows. Foi o primeiro banco de dados com Interface gráfica integrado a camada de dados. Sua principal característica é a simplicidade de uso, devido a uma interface simples e interativa. Outra vantagem do Access em relação a outras ferramentas é que no mesmo arquivo, podemos desenvolver a camada de dados(tabelas e relacionamentos) e a camada de aplicação, também chamada de front-end. Para tanto, o Access utiliza Macros programadas de forma não codificada e a linguagem Visual Basic que no Access é denomidada Visual Basic for Applications (VBA). A principal desvantagem do Access é a escalabilidade (crescimento do banco de dados), ou seja, aplicações desenvolvidas em Access tendem a ser pequenas aplicações, como sistemas de departamento ou de pequenas empresas. Pois o Acces não se comporta de maneira eficaz com grande volume de dados e perde muito em desempenho em aplicações em rede. O Access é distribuido junto as versões Professional do Microsoft Office Para mais detalhes acesse http://www.microsoft.com Veja algumas telas do Access:

Page 31: Apostila Banco de Dados

Escola Contec

Página 31 de 57

Tela inicial do Access

Um banco de dados aberto na guia tabelas

Page 32: Apostila Banco de Dados

Escola Contec

Página 32 de 57

Visualização da estrutura de dados e relacionamentos (Diagrama ER)

Um formulário de interface para usuários gerado dentro da própria ferramenta

Page 33: Apostila Banco de Dados

Escola Contec

Página 33 de 57

Ambiente de desenvolvimento de scripts em Visual Basic for Applications

Microsoft Sql Server O MS Sql Server é um sistema de gerenciamento de base de dados relacional da Microsoft voltado para grande volume de dados. O Sql Server, atualmente está na versão 2005 e é dotado de vários recursos. O Software é muito utilizado para o mercado corporativo e sistemas não web. Seu principal concorrente é o Oracle. O Sql tem se destacado no mercado de banco por seu preço reduzido em comparação ao banco Oracle e a grandes parcerias. A produtora de ERPs(sistemas integrados de gestão) SAP, recentemente firmou uma parceria de venda de seu produto integrado ao SQL Server com um diferencial de preço bastante convidativo. O Sql é fornecido em várias versões. Atualmente o SQL possui uma versão gratuita denominada SQL Server Express Edition. Esta versão é muito indicada para pequenas e em alguns casos médias aplicações, pois possui algumas limitações como por exemplo: só roda em um único processador, trabalha com no máximo 1GB de RAM e cada banco de dados não pode ultrapassar 4GB de espaço de armazenamento o que para muitos sistemas é um tamanho inalcançável.

Page 34: Apostila Banco de Dados

Escola Contec

Página 34 de 57

Veja a seguir algumas telas do SQL Server na versão 2008.

Sql Server 2005

Page 35: Apostila Banco de Dados

Escola Contec

Página 35 de 57

Interface de gerenciamento do banco de dados

Esquema de compatibilidade e camadas

Page 36: Apostila Banco de Dados

Escola Contec

Página 36 de 57

Page 37: Apostila Banco de Dados

Escola Contec

Página 37 de 57

Vale lembrar que além da interface padrão do Sql Server outras empresas também distribuem suas próprias ferramentas de gerenciamento do banco de dados, inclusive ferramentas CASE como visto em tópicos anteriores.

Oracle Database O Oracle é um SGBD idealizado por Larry Elisson, Elisson é um visionário e co-fundador da Oracle Cop. O banco de dados Oracle, além de ser pioneiro é considerado o melhor em diversos aspectos por boa parte dos profissionais e empresas. Podemos destacara a confidencialidade e escalabilidade do banco de dados, dentre outros fatores. A Oracle além de distribuir o Banco de dados também oferece um pacote de desenvolvimento de aplicações baseadas no BD. Além do pacote de desenvolvimento foi desenvolvido uma linguagem de programação para o SQL denominada PL/SQL. Outra vantagem que fez do Oracle uma ótima ferramente de dados é o fato de o banco ser multi-plataforma, ou seja, roda em vários sistemas operacionais como Windows, Unix, Linux, etc. Veja algumas telas do banco Oracle:

Page 38: Apostila Banco de Dados

Escola Contec

Página 38 de 57

Interface WEB – Versão Oracle 11g

Interface de gerenciamento – Login

Page 39: Apostila Banco de Dados

Escola Contec

Página 39 de 57

Interface de gerenciamento

MySql O Mysql é um banco de dados relacional e multi-plataforma que inicialmente foi desenvolvido em meados dos anos 80, por dois suecos, David Axmark, Allan Larsson e Michael "Monty" Widenius. Logo após as primeiras versões os MySql adotou o modelo de desenvolvimento aberto, ou seja, o desenvolvimento da ferramenta passou a ter auxilio de programadores de todo o mundo, ficando a MySQL AB (uma empresa constituída para o gerenciar a ferramenta), com o dever de divulgar e distribuir suas versões que contam com versões gratuitas (open sorce) e versões pagas, pois incluem suporte e documentação. Com o advento de linguagens WEB o Mysql rapidamente foi acolhido por desenvolvedores de aplicações neste ambiente. Sendo diversas vezes premiado como melhor banco de dados para ambiente WEB, juntamente com a linguagem PHP. Hoje o Mysql está mais robusto e completo com a versão 5.x.x, outra novidade é que a Sun Microsysten recentemente comprou a Mysql AB numa negociação de 200 bilhões de dolares. A principal característica do Mysql é sua facilidade de uso e sua velocidade. Alcançando marcas e muitas vezes superando marcas de tempo de transações superiores a seus concorrentes como Oracle e Sql-Server. O Mysql não possui uma ferramenta de gerenciamento em ambiente gráfico, contudo várias ferramentas são distribuídas por desenvolvedores e empresa. Veja algumas imagens de interfaces de gerenciamento do Mysql:

Page 40: Apostila Banco de Dados

Escola Contec

Página 40 de 57

MyAdmin – gerenciador web bastante utilizado

Instalação do MySql em ambiente Windows

Page 41: Apostila Banco de Dados

Escola Contec

Página 41 de 57

Interface de gerenciamento da Quest Software denominada Toad

PostgreSQL O PostgreSQL é um sistema aberto e livre de gerenciamento de base de dados relacional, teve como berço a Universidade de XXXX na DFADSS onde o projeto Ingres, deu origem a uma base simplória de dados e a partir dela o projeto foi tomando corpo e conseguindo novos desenvolvedores. Rebatizado de PostgreSQL, hoje o banco de dados é bastante consistente e conta com uma adoção considerável de desenvolvedores e empresas. O PostgreSQL inicialmente contava com versões para ambiente Unix/Linux, a partir da versão 8.x foram liberadas versões para Windows, inclusive com instalador. O PostgreSQL não possui uma interface gráfica única, vários desenvolvedores e empresas construíram ferramentas complementares para incorporar ferramentas de gerenciamento. Veja algumas telas do PostgreSQL:

Page 42: Apostila Banco de Dados

Escola Contec

Página 42 de 57

Ferramenta da sem gerenciando um banco do PostgreSQL

Page 43: Apostila Banco de Dados

Escola Contec

Página 43 de 57

Ferramenta da Microlap para gerenciamento de base de dados PostgreSQL

Page 44: Apostila Banco de Dados

Escola Contec

Página 44 de 57

SQL - Strutured Query Language A quantidade de base de dados que temos no mercado é enorme, muitas bases pertencem a empresas diferentes, e claro, como já vimos, a base de dados é uma camada de uma aplicação. Logo surge uma dúvida: e se fosse necessário trocar esta camada de dados, trocar o banco de dados por uma ferramenta de outro fabricante? Tecnicamente, a troca não seria traumática, pois os o SGBDs utilizam uma linguagem única. O SQL, ou Strutured Query Language (Linguagem estruturada de consultas). Assim a comunicação com o SGBD sempre será via SQL, seja através de comandos inseridos pelo usuário, ou por um software gerenciador (front-end) ou através de uma aplicação. A partir de agora vamos aprofundar nosso estudo nesta linguagem de “programação” para banco de dados.

Como surgiu o SQL O SQL tem como berço os laboratórios da IBM, a estrutura básica de manipulação foi baseada nas teorias de dados relacionais de Codd (já falamos sobre ele em tópicos anteriores, lembra do MER?). Logo, o SQL foi incorporado e melhorado pela Relational Software, futura Oracle Corporation (já ouvimos falar dela também). Com o passar do tempo e adoção do modelo relacional de dados o SQL tornou-se uma linguagem praticamente padrão a qualquer SGBD.

Padronização SQL Como na prática o SQL já estava padronizado, coube a ANSI (Amerfican National Standart Institute), algo semelhante a nossa ABNT (Associação Brasileira de Normas Técnicas). Padronizar o SQL em 1987. A padronização da ANSI foi a base para mais tarde a linguagem ter a padronização ISO (International Standart Institute), e tornar o padrão SQL mundial. Periodicamente o padrão sofre alterações, a última atualização foi o padrão de 2003. Nota: Algumas ferramentas de dados, fazem pequenas alterações no padrão SQL e criam um SQL derivado do ISO ou ANSI SQL.

Conjuntos de comandos SQL O SQL tem uma série de comandos e cláusulas e estes estão classificados em conjuntos. Que são:

Page 45: Apostila Banco de Dados

Escola Contec

Página 45 de 57

DDL – Data Defination Language As instruções DDL manipulam a estrutura de dados de um banco, através dos comandos DDL – SQL podemos criar tabelas, índices, relacionamentos entre tabelas, podemos ainda alterar ou excluir estas estruturas, ou seja, o DDL é utilizado para criar e alterar a estrutura de dados.

DML – Data Manipulation Language As instruções DML manipulam os dados de uma estrutura já criada. Assim, enquanto as instruções DDL criam por exemplo tabelas, as instruções DML manipularam os registros destas tabelas, podendo inserir, alterar ou excluir registros. As instruções DML são as mais utilizadas pois elas é que fazem o banco de dados funcionar.

DQL – Data Query Language a Data Query Language tem somente uma instrução, contudo uma das mais utilizadas. A instrução SELECT é responsavel pelo retorno de uma consulta a uma tabela de dados. Esta instrução é complementada por uma série de cláusulas e parâmetros que veremos mais adiante.

DCL – Data Control Language A DCL ou linguagem de controle de dados é utilzada como uma camada de segurança, onde o usuário precisa ativar ou não esta camada. Este grupo de comandos tem duas instruções: GRANT - Autoriza ao usuário executar ou definir operações. REVOKE - Restringe ou altera as restrições de um usuário.

DTL – Data Transaction Language As instruções DTL (Linguagem de transação de dados) são utilizadas para conferir mais confiabilidade as transações. Estas instruções são essenciais em grandes operações e sistemas com grande volume de dados. A DTL tem basicamente a possibilidade de executar uma transação(ou transações) somente se esta for bem sucedida do começo ao fim. As instruções DTL também tem a possibilidade de descartar transações já efetuadas.

Page 46: Apostila Banco de Dados

Escola Contec

Página 46 de 57

Salvaguardando a base de dados.

Page 47: Apostila Banco de Dados

Escola Contec

Página 47 de 57

Manipulação de dados (DML) A linguagem de manipulação de dados ou DML (data manipulation language) é a parcela do SQL que manipula através de três comandos a entrada, alteração e exclusão de dados em uma ou várias estruturas de dados(tabelas). O DML é de grande utilidade tanto para desenvolvedores de software quando gerenciadores de base de dados. Vamos aprender também um sub-comando do SQL: A cláusla Where que pode ser utilizada tanto do DML quanto DTL (data transaction language).

Inserindo dados em uma tabela O primeiro comando DTL-SQL que estudaremos será a instrução responsável por inserir dados em uma tabela. O comando é denominado INSERT e segue uma sintaxe bem estruturada com duas variações. Vamos verificar o funcionamento das duas:

Inserindo dados sem especificação de colunas (ou campos) INSERT into nome_da_tabela VALUES ('valor1', 'valor2', 100); Vamos entender melhor: Utilizando esta sintaxe a instrução INSERT irá inserir da tabela nome_da_tabela os valores: Valor1, Valor2 e 100. A principal caracteristica desta sintaxe é que os valores ( VALUES) são adicionados na ordem em que os campos estão dispostos da tabela. Vamos entender melhor analisando um pequeno exemplo: Considere a seguinte tabela de dados: Nome: tb_cliente Campos: codigo (Numérico), Nome (Varchar[50]), cidade(varchar[30]), UF(char[2]). Nota: Por hora basta sabermos que o campo código é uma sequencia numérica e nome, cidade e UF são do tipo caracter e estes devem ser inseridos entre aspas. Mas adiante nas instruções DDL-SQL iremos estudar com mais detalhes os tipos de dados do SQL. Agora vamos imaginar que precisamos inserir o seguinte registro a tabela tb_cliente:

Page 48: Apostila Banco de Dados

Escola Contec

Página 48 de 57

Código:1 Nome: Livia Guimarães Delfino Cidade: Colatina UF: ES Neste caso nossa instrução INSERT ficará da seguinte maneira: INSERT into tb_cliente VALUES (1,'Livia Guimarães Delfino' , 'Colatina', 'ES');

Inserindo dados em colunas especificadas Existe uma maneira de se especificar quais colunas (ou campos) receberão os dados inseridos. Esta sinstaxe é muito utilizada em tabelas com muitos campos, onde muitos não são requeiros(de inserção obrigatória). A principal vantagem de se especificar as colunas é que não importa mais a ordem dos campos na tabela, pode-se alterar as posições sem prejudicar um script já criado. Veja a sintaxe da instrução INSERT neste caso: INSERT into nome_da_tabela (coluna1, coluna2) VALUES ('valor1', 'valor2'); Neste caso, após o nome da tabela de dados deve-se especificar quais colunas receberão os dados (VALUES). Nota: A ordem de digitação das colunas deve ser respeitada no momento da digitação dos dados (VALUES). Vamos a um exemplo para entender melhor: Considerando a seguinte tabela de dados: Nome: tb_cliente Campos: codigo (Numérico), Nome (Varchar[50]), cidade(varchar[30]), UF(char[2]). Vamos supor que queremos inserir um registro a esta tabela com os seguintes dados: Codigo:2 Nome: Maria Fernanda UF: ES Veja que neste caso o campo cidade não será utilzado.

Page 49: Apostila Banco de Dados

Escola Contec

Página 49 de 57

A instrução INSERT com colunas especificadas ficará da seguinte maneira: INSERT into tb_cliente (codigo, nome, uf) VALUES (2, 'Maria Fernanda', 'ES'); Perceba que o nome das colunas devem ser as mesmas especificadas na tabela. Tenha muita atenção ao digitar o nome da coluna. Verifique também que a ordem de digitação dos valores deve ser respeitada. Se as colunas foram especificas da ordem: Codigo, Nome e UF os valores devem ser lançados como 2, 'Maria Fernanda' e 'ES'.

Inserindo valores NULL (nulo) Nem toda coluna é de preenchimento obrigatório em uma tabela. Por exemplo, nem todo cliente possui um número de telefone celular, logo esta coluna pode receber em alguns registros valores nulos. Para inserir um valor nulo (NULL em SQL) podemos proceder de duas maneiras: Ignorando a coluna não especificando a mesma em uma instrução com colunas definidas ou inserindo a constante NULL, este segundo caso é mais utilizado quando não utilizamos a instrução INSERT com especificação de colunas. Vamos ver dois Exemplos: Considerando a seguinte estrutura de dados: Nome: tb_cliente Campos: codigo (Numérico), Nome (Varchar[50]), cidade(varchar[30]), UF(char[2]),Tel(char[10]),Cel(char[10]). Onde precisaremos inserir o seguinte registro: Codigo: 3 Nome: Oswaldo Carvalho Cidade: Vitória UF: ES Tel:2733429876 Observe que a coluna (ou campo) Cel não tem valor para este registro. Ignorando o campo em um exemplo de instrução INSERT com colunas especificadas: INSERT int tb_cliente (codigo, nome,cidade, UF, tel) Values (3,'Oswaldo Carvalho','Vitória','ES','2733429876'); Neste caso simplesmente não adicionamos a coluna Cel. Utilizando a constante NULL em um exemplo de instrução INSERT sem colunas

Page 50: Apostila Banco de Dados

Escola Contec

Página 50 de 57

especificadas: INSERT into tb_cliente Values(3,'Oswaldo Carvalho','Vitória','ES',' 2733429876', NULL); Neste caso o campo foi preenchido pela constante NULL que representar um valor nulo para a coluna do registro.

Page 51: Apostila Banco de Dados

Escola Contec

Página 51 de 57

Atualizando dados existentes Dentro do DML, podemos também alterar os valores de um ou vários registros de uma tabela de dados. A instrução de comando utilizada para este fim denomina-se UPDATE e é seguida da cláusula condicional Where. Que abordaremos detalhadamente neste tópico e é utilziada em outras instruções SQL. A instrução UPDATE é bastante utilizada por desenvolvedores de sistemas e administradores de banco de dados.

Atualizando valores em uma tabela A instrução UPDATE tem uma sintaxe bastante simples, contudo muito poderosa e deve-se ter muito cuidado ao se executar a instrução UPDATE principalmente na administração de uma base de dados envolvendo vários registros, uma vez que nem sempre podemos utilizar a restauração de transaçòes (DTS-SQL). Atualizando o valor de uma única coluna A sintaxe da instrução UPDATE é a seguinte: UPDATE nome_da_tabela SET coluna1 = 'novo valor' [Where Condição] Observe que somente uma única coluna é alterada. Vamos a um exemplo: Considere a seguinte estrutura de dados:

Vamos supor que queremos alterar todos os valores da coluna UF de 'ES' para 'MG'.

Page 52: Apostila Banco de Dados

Escola Contec

Página 52 de 57

Neste caso somente precisaremos alterar uma única coluna (UF). Veja como fica a instrução UPDATE neste caso: UPDATE tb_cliente SET UF='ES; Nota: Neste caso não existe a necessidade de uma condição de filtro de dados, portanto a cláusula condicional Where foi removida da instrução UPDATE uma vez que a cláusula Where não é obrigatória.

Cláusula WHERE A cláusula Where que pode livremente ser traduzida como “onde” é uma cláusula não obrigatória utilizada de forma complementar em várias instruções SQL. Ela impõe uma condição de filtro para os registros de uma ou varias tabelas. Para a utilização da cláusula Where é necessário ter um parâmetro de comparação, normalmente uma coluna e um valor de filtro. Por exemplo: para complementar uma instrução SQL, como o UPDATE por exemplo, para todos os clientes da UF='ES' devemos impor esta condição. Veja o exemplo abaixo: UPDATE tb_cliente SET cidade='vitória' Where UF= 'ES' Neste caso o Where impõe um filtro condicional somente aos clientes da UF='ES'. Alé do campo colocamos um comparador lógico e uma expressão de comparação. Os operadores lógicos: = Igualdade <> Diferente > Maior < Menor >= Maior ou igual <= Menor ou igual Podemos ter mais de uma condição Where em uma mesma instrução SQL para tanto devemos utilizar os conjuntores lógicos: and (e) e or (ou). Veja outro exemplo: Neste caso queremos alterar todos os registros de clientes da cidade de Vitória do ES.

Page 53: Apostila Banco de Dados

Escola Contec

Página 53 de 57

A instrução SQL fica da seguinte forma: UPDATE tb_cliente SET cidade='Serra' Where cidade='vitória' and uf='es'; Veja que utilizamos o comparador de igualdade duas vezes e o conjuntor lógico and. Atualizando múltiplas colunas Além de utilizar o UPDATE para atualizar somente uma única coluna podemos também atualizar várias colunas em uma mestra instrução. Esta operação poupa muito trabalho desta forma, não se faz necessário a criação de várias instruções para atualização de dados. Vamos a sintaxe da instrução: UPDATE nome_da_tabela SET coluna1='valor1', coluna2='valor2', coluna3='valor3'; [Where condição]; Perceba que a definição de alteração SET é utilizado somente uma única vez, e as alterações de colunas são separadas pelo caractere “ , “ (vírgula). Vamos a um exemplo: Considere a seguinte estrutura de dados:

Neste exemplo vamos alterar a cidade de todos os registros para Belo Horizonte e todas as UFs para MG: UPDATE tb_cliente SET cidade='Belo Horizonte', UF='MG'; Note que a vírugula separa as alterações da instrução e a clásula condicional Where não tem a necessidade de utilização. Neste próximo exemplo vamos considerar que será necessário altear a cidade para Belo Horizonte e a UF para MG somente do cliente 3 (Oswaldo Carvalho):

Page 54: Apostila Banco de Dados

Escola Contec

Página 54 de 57

UPDATE tb_cliente SET cidade='Belo Horizonte', UF='MG' Where codigo=3 Veja que agora a clausula Where condiciona e impõe a alteração somente ao cliente de codigo = 3 (Oswaldo Carvalho).

Excluindo dados O comando Delete exclui as linhas que satisfazem a uma determinada condição na tabela especifi cada. Se a condição estiver ausente, o efeito é a exclusão de todas as linhas da tabela. O resultado vai ser uma tabela válida, porém vazia. Caso a tabela possua alguma coluna que seja chave estrangeira para outra tabela, e os valores dessa tabela estão sendo usados como referência, a exclusão não poderá ser realizada, pois a exclusão resultará em campos nulos na tabela referenciada. Sintaxe Delete from Nome_Da_Tabela where Condição; Exemplo de utilização da instrução DELETE Delete from Produtos where Descricao_Produto = ‘PERA’;

Conjunto de instruções DDL O principal objetivo dos comandos da linguagem de defi nição de dados (DDL) é possibilitar ao usuário criar as tabelas do seu modelo de banco de dados, bem como os relacionamentos entre as tabelas.

Tipo de dados do SQL Varchar(n) – é uma cadeia de caracteres de tamanho variável, com o tamanho “n” máximo defi nido pelo usuário. Por exem plo: um campo do Tipo Varchar(30) signifi ca que ali podem ser cadastrados, no máximo, 30 símbolos quaisquer, como números e letras; Int – defi ne um tipo inteiro; Numeric(p,d) – é um número de ponto fi xo cuja precisão é defi nida pelo usuário. O número consiste de “p” dígitos e “d” casas decimais. Por exemplo, um campo do tipo Numeric (9,2), tem a seguinte representação: 9999999.99, ou seja, 7 dígitos antes da

Page 55: Apostila Banco de Dados

Escola Contec

Página 55 de 57

vírgula e 2 após a vírgula, totalizando os 9 dígitos; Real – é um número com ponto fl utuante, ou seja, a representação de número real pode mudar de acordo com a representação atual. Como por exemplo: 100.0 é igual a 10.0 E+2; Float(n) - é um número com ponto fl utuante. A precisão é defi nida pelo usuário, em pelo menos “n” dígitos; Date – representa uma data que contém um ano (com quatro dígitos), mês e dia do mês. Por exemplo, a data 23/01/1998 será representada no MySQL como sendo 2005-01-1998; Time – representa horário, em horas, minutos e segundos. Bem, agora que você já conhece os tipos de dados existentes para Linguagem SQL, você conseguirá defi nir as tabelas que farão parte de seu banco de dados, conforme será estudado nas próximas seções.

Criando tabelas A tarefa de criar uma tabela signifi ca especifi car seu nome, o número e o nome de cada coluna e o tipo de dados que será armazenado em cada coluna. Porém, esse processo pode ser mais amplo. A tabela é um conjunto de dados e com isso pode-se especifi car as regras de acesso e uso, as quais recebem o nome de regras de integridade. Uma tabela em SQL é defi nida usando o comando Create Table que possui como sintaxe: create table nome da tabela ( Atributo1 Tipo1, Atributo2 Tipo2, .., AtributoN TipoN, <regras de integridade 1>, <regras de integridade 2>, ..., <regras de integridade n> ); Normalmente, um banco de dados abrange um conjunto de tabelas. Para cada uma delas deve ser executado um comando Create Table para sua defi nição.

Campos obrigatórios

Page 56: Apostila Banco de Dados

Escola Contec

Página 56 de 57

Para defi nir que o campo de uma tabela é obrigatório, deve-se colocar a expressão Not Null na defi nição do mesmo, da seguinte forma: Nome da Coluna Tipo de Dado Not Null

Regras de integridade na criação da tabela A especifi cação Primary Key diz que os atributos Atributo1, Atributo2,..., Atributo N formam a chave primária da tabela. A chave primária corresponde ao campo, ou campos, que não pode de forma alguma ter valores repetidos dentro da tabela; A cláusula check determina que um campo específi co da tabela só será preenchido se a condição P for satisfeita; A cláusula foreing key inclui a relação dos atributos que constituem a chave estrangeira (Atributo1, Atributo2, ..., AtributoN) e à qual da tabelas esses campos fazem referência em outra tabela; Todos os atributos de uma chave primária são declarados implicitamente como not null.

Alterando a estrutura de dados da tabela Para isso, será necessária a utilização do comando em SQL: Alter Table, que possui a seguinte sintaxe: Alter Table Nome_ da_Tabela Operação Nome_ do_ Campo Nova Regra; Existem duas operações para esta instrução de comando: ADD Adiciona um novo campo. MODIFY Altera a estrutura de um campo.

Como definir tabelas relacionadas Para definir uma ou várias chaves estrangeiras devemos utilizar a seguinte sintaxe: Foreign Key (campo_chave_estrangeira) references Alunos (campo_chave_primaria); Dica: Utilize o Foreign Key no fim da instrução Create Table.

Removendo tabelas de dados

Page 57: Apostila Banco de Dados

Escola Contec

Página 57 de 57

Assim como você pode criar novas tabelas para um banco de dados, você também pode removê-las através do comando Drop Table. Sua sintaxe é: Drop Table Nome_da_tabela; Porém, algumas regras devem ser respeitadas para que uma tabela seja removida, ou “dropada”, no jargão de banco de dados. Estas regras são:

uma tabela só pode ser removida se ela não possuir campos considerados como sendo chave estrangeira para outra tabela;

se uma tabela possui como referência uma chave estrangeira para outra

tabela, será preciso primeiro remover as tabelas para as quais são feitas as referências;

uma tabela só pode ser removida se não possuir nenhum dado cadastrado,

caso contrário, primeiro ela deverá ser esvaziada para depois ser removida. Referências bibliográficas JESUS, João Batista de. Ansi SQL 89 92. Axcel Books do Brasil Ltda, 2004. MEDEIROS, M. Oracle 8i: conceitos básicos. Florianópolis: Advanced, 2000. SOARES, W. MySQL : conceitos e aplicações. São Paulo: Érica, 2001. _ _ _