You are on page 1of 37

Apostila de Banco de dados

Bancos de dados, (ou bases de dados), so conjuntos de dados com uma estrutura regular que organizam informao. Um banco de dados normalmente agrupa informaes utilizadas para um mesmo fim. Um banco de dados usualmente mantido e acessado por meio de um software conhecido como Sistema Gerenciador de Banco de Dados (SGBD). Muitas vezes o termo banco de dados usado como sinnimo de SGDB. O modelo de dados mais adotado hoje em dia o modelo relacional, onde as estruturas tm a forma de tabelas, compostas por linhas e colunas. Resumindo, um banco de dados uma coleo de dados relacionados. Entende-se por dado, toda a informao que pode ser armazenada e que apresenta algum significado implcito dentro do contexto ao qual ele se aplica. Por exemplo, num sistema bancrio, uma pessoa identificada pelo seu cpf(cliente). Em um sistema escolar a pessoa identificada pelo seu nmero de matrcula(aluno). Alm disso, os dados que sero armazenados em cada situao podem diferir consideravelmente.

Modelo Relacional
O modelo relacional uma teoria matemtica desenvolvida por Edgar Frank Codd para descrever como as bases de dados devem funcionar. Embora esta teoria seja a base para o software de bases de dados relacionais, muito poucos sistemas de gesto de bases de dados seguem o modelo de forma restrita, e todos tm funcionalidades que violam a teoria, desta forma variando a complexidade e o poder. A discusso se esses bancos de dados merecem ser chamados de relacional ficou esgotada com tempo, com a evoluo dos bancos existentes. De acordo com a arquitetura ANSI / SPARC em trs nveis, os Bancos de dados relacionais consistem de trs componentes: uma coleo de estruturas de dados, formalmente chamadas de relaes, ou informalmente tabelas, compondo o nvel conceitual; uma coleo dos operadores, a lgebra e o clculo relacionais, que constituem a base da linguagem SQL; e uma coleo de restries da integridade, definindo o conjunto consistente de estados de base de dados e de alteraes de estados. As restries de integridade podem ser de quatro tipos:

domnio (ou tipo de dados), atributo, relvar e restries de base de dados.

De acordo com o Princpio de Informao: toda informao tem de ser representada como dados; qualquer tipo de atributo representa relaes entre conjuntos de dados. Nos bancos de dados relacionais os relacionamentos entre as tabelas no so codificados explicitamente na sua definio. Em vez disso, se fazem implicitamente pela presena de atributos chave. As bases de dados relacionais permitem aos utilizadores (incluindo programadores) escreverem consultas (queries), reorganizando e utilizando os dados de forma flexvel e no necessariamente antecipada pelos projetistas originais. Esta flexibilidade especialmente importante em bases de dados que podem ser 1

utilizadas durante dcadas, tornando as bases de dados relacionais muito populares no meio comercial. Um dos pontos fortes do modelo relacional de banco de dados a possibilidade de definio de um conjunto de restries de integridade. Estas definem os conjuntos de estados e mudanas de estado consistentes do banco de dados, determinando os valores que podem e os que no podem ser armazenados.

Aplicaes de bancos de dados


Bancos de dados so usados em muitas aplicaes, enquanto atravessando virtualmente a gama inteira de software de computador. Bancos de dados so o mtodo preferido de armazenamento para aplicaes multiusurias grandes onde a coordenao entre muitos usurios necessria. At mesmo usurios individuais os acham conveniente, entretanto, e muitos programas de correio eletrnico e os organizadores pessoais esto baseado em tecnologia de banco de dados standard. Aplicativo de Banco de Dados Um Aplicativo de Banco de dados um tipo de software exclusivo para gerenciar um banco de dados. Aplicativos de banco de dados abrangem uma vasta variedade de necessidades e objetivos, de pequenas ferramentas como uma agenda, at complexos sistemas empresariais para desempenhar tarefas como a contabilidade. O termo "Aplicativo de Banco de dados" usualmente se refere a softwares que oferecem uma interface para o banco de dados. O software que gerencia os dados geralmente chamado de sistema gerenciador de banco de dados (SGBD) ou (se for embarcado) de "database engine". Exemplos de aplicativos de banco de dados so Microsoft Visual FoxPro, Microsoft Access, dBASE, FileMaker , (em certa medida) HyperCard, MySQL, PostgreSQL, Microsoft SQL Server e Oracle.

Descrio do Banco de dados Acadmico


O banco de dados descrito representado abaixo de um pequeno sistema escolar, onde existem basicamente dois componentes que so os alunos matriculados na instituio, bem como as notas obtidas por eles em todas avaliaes realizadas durante um perodo escolar. Uma vez definido o escopo da aplicao, ou seja, o seu propsito, o prximo passo identificar os elementos que a constituem, e por conseqncia definir todos os dados relevantes para cada item existente. Esses elementos so comumente chamados de entidades, e que por questes de facilidade, so representadas por tabelas.

Matrcula Nome 1 2 3 4 5 Jos da Silva Ana Maria Paulo Simon Carla Beatriz Ana Paula

Srie Oitava Stima Quinta Sexta Oitava

Turma 1 1 1 1 2

Telefone (31) 3666-9090 (21) 1234-4567 (31) 8890-7654 (45) 9946-8989 (62) 7878-0909

Data de Nascimento 05-10-192 12-11-1983 17-04-1984 30-07-1979 22-01-1980 2

Matrcula Nome

Srie

Turma 2

Telefone (35) 8878-0099

Data de Nascimento 06-05-1986

6 Joana Prado Quinta Tabela 1: Definio de ENTIDADE alunos Matrcula 1 2 3 4 5 6 1 2 Data do Teste 25-03-2004 25-03-2004 25-03-2004 25-03-2004 25-03-2004 25-03-2004 18-05-2004 18-05-2004 Ponto 5.5 6 8 10 7.8 4.6 7.2 9.5

6 18-05-2004 10 Tabela 2: Definio de PONTUAES A segunda entidade identificada no problema so as pontuaes obtidas por cada aluno. Vale ressaltar que durante um perodo letivo podero existir vrias avaliaes, geralmente em datas diferentes, onde devero ser armazenados os resultados de todos os alunos para cada um destes testes. A tabela 2 descreve a entidade pontuaes, que serve para o propsito exposto anteriormente. Cada entidade representada por uma tabela, sendo que neste universo de discusso ou modelo, existem apenas duas tabelas e um relacionamento entre elas, j que cada entidade aluno est ligada entidade pontuao. Em aplicaes mais complexas, podero existir inmeras tabelas e relacionamentos de forma a permitir a representao do problema abordado.

Atributos definem uma entidade


Cada entidade, no exemplo alunos e pontuaes, representada por uma tabela, que por sua vez so constitudas de linhas e colunas. Cada coluna representa um fragmento de dado e o conjunto de todas as colunas constitui a entidade propriamente dita. No contexto de banco de dados cada coluna chamada de atributo e uma entidade ser formada por um ou vrios atributos. Um atributo define uma caracterstica da entidade, no exemplo aluno constitudo de seis atributos, que so o nmero de matrcula, nome, a srie que est cursando, a sua turma, o seu telefone residencial e a data de nascimento. O atributo matricula possui um papel importante no modelo servindo como identificador nico para cada aluno. Em um banco de dados caso ocorram registros com valores idnticos no ser possvel determinar um contexto que os identifiquem unicamente. Por isso deve existir uma chave ou atributo que identifique unicamente cada registro. Ao observar a Tabela 1, percebe-se que no h dois alunos cadastrados com o mesmo nmero de matrcula. Portanto, este o atributo chave da entidade, utilizado para a pesquisa de um registro nesta tabela. A entidade pontuaes necessita identificar o aluno, a data da avaliao e a pontuao 3

atingida pelo aluno. Neste caso, como cada aluno identificado unicamente pela sua matrcula, este atributo ser inserido na tabela de pontuaes para permitir associar o aluno nota registrada, conforme visto na Tabela 2. Percebe-se que cada atributo possui um conjunto de valores vlidos e aceitveis, que definido como domnio do atributo. Todas informaes vistas na tabela so textuais, isto , sequncias de letras e nmeros, mas notrio que o conjunto de dados contido em cada coluna diferente umas das outras. No caso de matrcula do aluno, o domnio dos dados o conjunto dos nmeros inteiros positivos, j que para cada aluno atribudo um cdigo numrico que denota a ordem em que este foi matriculado na escola. Ou seja, o texto contido nesta coluna formado por uma combinao de nmeros, portanto no existem letras.

Modelagem de dados
a criao de uma estrutura de dados eletrnica (banco de dados) que representa um conjunto de informaes. Esta estrutura permite ao usurio recuperar dados de forma rpida e eficiente. O objetivo incluir dados em uma estrutura que possibilite transformar os dados originais em vrios tipos de sadas como formulrios, relatrios, etiquetas ou grficos. Essa capacidade de transformar informaes caracteriza as operaes de banco de dados e a chave de sua utilidade. Um Banco de Dados BD, representa uma coleo de dados que possui algum significado e objetiva atender a um conjunto de usurios. Por exemplo, um catlogo telefnico pode ser considerado um BD. Sendo assim, um BD no necessariamente est informatizado. Quando resolvemos informatizar um BD, utilizamos um programa especial para realizar essa tarefa. Tal programa denominado SGBD Sistema Gerenciador de Banco de Dados. Em um SGBD relacional, enxergamos os dados armazenados em uma estrutura chamada tabela. Neste modelo, as tabelas de um BD so relacionadas, permitindo assim que possamos recuperar informaes envolvendo vrias delas. Observe o exemplo abaixo:

Neste caso, a tabela Clientes est relacionada com a tabela Telefones. Note que o cliente Mrcio possui dois telefones: um residencial e um celular. A cliente Luciane possui um telefone celular, Wilkie possui um residencial e Marlos no possui telefone. Entretanto, para que possamos implementar, de forma correta, um BD utilizando algum SGBD, temos que passar por uma fase intermediria e no menos importante chamada modelagem de dados. Quando estamos aprendendo a programar, em geral dividimos esta tarefa em trs fases:

Entendimento do problema; Construo do algoritmo; Implementao (linguagem de programao).

Em se tratando de banco de dados no muito diferente:


Entendimento do problema; Construo do modelo ER entidade e relacionamento; Implementao (SGBD).

Entender determinado problema nem sempre uma tarefa fcil, principalmente se voc no est familiarizado com a rea de atuao de seu cliente. Antes da implementao em um SGBD, precisamos de uma descrio formal da estrutura de um banco de dados, de forma independente do SGBD. Essa descrio formal chamada modelo conceitual. Costumamos representar um modelo conceitual atravs da abordagem entidade relacionamento (ER). Nesta abordagem construmos um diagrama, chamado diagrama entidade-relacionamento. Observe abaixo o diagrama que originou as tabelas Clientes e Telefones:

Entidade pode ser entendida como uma coisa ou algo da realidade modelada onde deseja-se manter informaes no banco de dados (BD). Por exemplo, em um sistema escolar, algumas entidades podem ser os alunos, professores, horrio, disciplinas e avaliaes. Note que uma entidade pode representar tanto objetos concretos (alunos), quanto objetos abstratos (horrio). A entidade forte representada por um retngulo e a entidade fraca por dois retngulos, um dentro do outro, onde contm o nome da entidade. Observe o exemplo abaixo.

Entidade Forte 5

Entidade Fraca

ALUNO

A entidade ALUNO representa todos os estudantes sobre as quais se deseja manter informaes no BD. Quando necessrio especificar um objeto particular (para o exemplo, determinado estudante) usa-se o termo ocorrncia de entidade. Relacionamento um conjunto de associaes entre entidades. O relacionamento representado por um losango. Esse losango ligado por linhas aos retngulos que representam as entidades participantes do relacionamento. O exemplo abaixo possui duas entidades, MDICO e PACIENTE, e um relacionamento chamado CONSULTA.

O modelo acima informa que o BD mantm informaes sobre mdicos, pacientes, alm de um conjunto de associaes (consulta), cada uma ligando um mdico a um paciente. Quando necessrio especificar um relacionamento particular (para o exemplo, determinada consulta) usa-se o termo ocorrncia do relacionamento. Uma ocorrncia de consulta envolve a ocorrncia de determinado mdico e a ocorrncia de determinado paciente. Um relacionamento pode envolver ocorrncias de uma mesma entidade. Neste caso, estamos diante de um auto-relacionamento. Observe o exemplo:

CASAMENTO um relacionamento que envolve duas ocorrncias da entidade PESSOA. Para facilitar o entendimento, em geral costumamos identificar o papel de cada entidade no relacionamento (para o exemplo, marido e esposa).

Cardinalidade do relacionamento Observe o modelo abaixo:

Estamos diante de um relacionamento (possui) entre as entidades EMPREGADO e DEPENDENTE. Considere as seguintes questes:

Um empregado pode no ter dependentes? Um dependente pode ter mais de um empregado associado ? Determinado empregado pode possuir mais de um dependente? Pode existir dependente sem algum empregado associado?

Na realidade, as respostas desses questionamentos dependem do problema sendo modelado. Entretanto, para que possamos expressar essas idias no modelo, necessrio definir uma propriedade importante do relacionamento - sua cardinalidade. A cardinalidade um nmero que expressa o comportamento (nmero de ocorrncias) de determinada entidade associada a uma ocorrncia da entidade em questo atravs do relacionamento. Existem dois tipos de cardinalidade: mnima e mxima. A cardinalidade mxima, expressa o nmero mximo de ocorrncias de determinada entidade, associada a uma ocorrncia da entidade em questo, atravs do relacionamento. A cardinalidade mnima, expressa o nmero mnimo de ocorrncias de determinada entidade associada a uma ocorrncia da entidade em questo atravs do relacionamento. Usaremos a seguinte conveno para expressar a cardinalidade: Nmero (Mnimo, Mximo) Observe as cardinalidades mnima e mxima representadas no modelo abaixo:

Para fazermos a leitura do modelo, partimos de determinada entidade e a cardinalidade correspondente a essa entidade representada no lado oposto. Em nosso exemplo, a cardinalidade (0:N) faz referncia a EMPREGADO, j a cardinalidade (1:1), faz referncia 8

a DEPENDENTE. Isso significa que: Uma ocorrncia de empregado pode no estar associada a uma ocorrncia de dependente ou pode estar associada a vrias ocorrncias dele (determinado empregado pode no possuir dependentes ou pode possuir vrios); Uma ocorrncia de dependente est associada a apenas uma ocorrncia de empregado (determinado dependente possui apenas um empregado responsvel). Observao: Na prtica, para as cardinalidades mximas, costumamos distinguir dois tipos: 1 (um) e N (cardinalidades maiores que 1). J para a as cardinalidades mnimas, costumamos distinguir dois tipos: 0 (zero) e 1 (um). Atributo uma caracterstica relevante associada a cada ocorrncia de entidade ou Relacionamento. Observe no modelo abaixo a notao utilizada para atributos:

Para deixarmos o modelo de entidade e relacionamentos mais preciso, necessrio que haja uma forma de distinguir uma ocorrncia da entidade das demais ocorrncias da mesma entidade. Sendo assim, cada entidade deve possuir um identificador. H vrias formas de identificarmos entidades. Observe o modelo abaixo:

Neste caso, a entidade aluno possui um nico identificador (Matrcula). Em outras palavras, cada aluno deve possuir uma matrcula diferente. Existem situaes onde necessrio mais de um atributo para identificar determinada entidade. Observe:

Imagine uma biblioteca onde os livros ficam armazenados em prateleiras. Estas prateleiras encontram-se organizadas em corredores. Dessa forma, para identificar uma prateleira necessrio conhecer seu nmero, alm do nmero do corredor correspondente. Observe o modelo abaixo:

Aqui, o identificador da entidade dependente composto do atributo NMERO SEQNCIA, alm do empregado ao qual o dependente est relacionado. Neste caso, estamos diante de um relacionamento identificador. O relacionamento identificador identificado por uma linha mais densa. Vimos que o identificador de entidade corresponde a um conjunto de atributos e relacionamentos cujos valores diferenciam cada ocorrncia de entidade. No caso de relacionamentos, em geral a identificao ocorre atravs das ocorrncias das entidades que fazem parte dele. Observe o exemplo:

O modelo mostra que para cada par (analista, projeto) h no mximo um relacionamento de alocao. No entanto, h casos onde pode ser necessrio relacionar ocorrncias de mesmas entidades mais de uma vez. Por exemplo, em um modelo de consultas mdicas, determinado paciente pode realizar consultas mais de uma vez com o mesmo mdico. Neste caso, podemos utilizar um atributo identificador no relacionamento (data/hora).

10

Dia: O Editor de diagrama (Microsoft Visio) para Linux


Apresentao geral

Para executar o Dia, aperte Alt + F2 Digite o comando dia Clique em Executar

11

O download pode ser encontrado em:

http://www.gnome.org/projects/dia/downld.html

Inclusive neste link podemos encontrar verses compiladas para outras plataformas.

Esta ferramenta de fcil utilizao, portanto apresentaremos apenas alguns recursos em funo da simples operacionalidade.

Conhecendo a interface do dia


Na figura abaixo, visualizamos a janela de ferramentas principal:

12

No primeiro bloco encontramos as ferramentas de aes como selecionar, mover, zoom, imagem, linha, circulo e outros.

Selecionar a opo ER(Entidade Relacionamento) 13

Clicando o boto direito sobre a rea de trabalho do diagrama, teremos um menu que nos 14

proporciona diversos recursos de edio do objetos. Na figura abaixo podemos visualizar as opes principais:

No menu principal, podemos salvar nosso diagrama.

15

Iremos salvar como aluno.dia.

16

Exemplo prtico

1. Descrio de um sistema para controle de uma empresa


Para facilitar o entendimento e ilustrar os elementos que definem um diagrama ER, ser abordado um problema relacionado a uma pequena empresa de construo civil. Assim, ser introduzido o escopo do problema, ou seja, o seu propsito e as necessidades que este deve atender. Assim, a partir desta descrio deve-se construir um modelo ER para esta aplicao. 1.1 Descrio de uma empresa de construo civil A empresa de construo civil tem como objetivo projetar e construir obras tais como prdios, casas, pontes, estradas, para citar algumas de suas atividades. Para isto, preciso que a empresa possua pessoas ou funcionrios capazes de desempenhar as diversas tarefas relacionadas a este ramo de negcios. Por exemplo, necessrio que a empresa contenha em seu quadro de funcionrios engenheiros e arquitetos responsveis pelo projeto e clculo da infra-estrutura da obra. Alm disso, necessrio ainda que haja pedreiros e mestres de obras que sero incumbidos de executar o projeto definido pela equipe de engenheiros. Finalmente, devem-se ter profissionais como eletricistas, bombeiros hidrulicos e carpinteiros para que a obra possa ser executada com sucesso. Para facilitar a coordenao dos trabalhos destes profissionais, a empresa organiza as pessoas em equipes de acordo co as suas especialidades. Desta forma, estas equipes so alocadas em uma ou mais obras que estejam sendo desenvolvidas pela empresa de construo civil. Vale ressaltar que para fazer parte de uma equipe a pessoa deve fazer parte do quadro de funcionrios da empresa, e caso um funcionrio seja afastado da 17

empresa, o mesmo deve ser imediatamente retirado da equipe qual ele pertena. Cada equipe possui um gerente, responsvel por coordenar os trabalhos delegados a ela, sendo que este deve ser necessariamente um funcionrio da prpria empresa. preciso salientar que ocorrem situaes onde h mais de uma obra em andamento, simultaneamente. Da, cada obra ter vrias equipes envolvidas, j que vrias habilidades so necessrias para executar a construo da mesma. Existem equipes que participam de vrias obras ao mesmo tempo, j que as suas tarefas no requerem dedicao exclusiva a um projeto. Este o caso dos engenheiros, que podem projetar e acompanhar o desenvolvimento de diversas obras simultaneamente, sem que haja comprometimento na qualidade do seu trabalho ou at mesmo prejuzos para o cronograma de execuo das mesmas. Este um cenrio que descreve uma aplicao real de um sistema de banco de dados. Percebe-se que este apresenta vrias entidades e restries que devem ser respeitadas a fim de que o sistema funcione da forma esperada. Para isto, ser criado como exemplo, um modelo ER que descreva todas as particularidades expostas anteriormente, servindo de base para ilustrar os conceitos que envolvem a modelagem de um banco de dados relacional.

18

Exemplo em UML

Mudar para opo UML

19

20

Instalando o DBDesigner
DBDesigner um programa muito bom para quem trabalha com MySQL. Atravs dele pode-se fazer a modelagem das tabelas, ou seja, represent-las de forma grfica, bem como seus relacionamentos. Depois de feita essa modelagem, possvel conectar-se ao MySQL para sincronizao. Atravs do DBDesigner tambm possvel trabalhar com os dados das tabelas. O DBDesigner 4 pode ser baixando em: http://www.fabforce.net/downloads.php Depois de baixar o arquivo, basta descompact-lo: $ tar zxfs DBDesigner4.0.5.4.tar.gz Entre no diretrio DBDesigner4 e execute o programa: $ ./DBDesigner4 Se tudo correr bem, o DBDesigner j vai ser carregado e voc pode us-lo perfeitamente. Mas infelizmente nem sempre assim. As vezes costumam acontecer alguns erros. No caso do seguinte erro: libborqt-6.9-qt2.3.so: cannot open shared object file: No such file or directory Segundo o erro, no foi encontrada essa biblioteca libborqt-6.9-qt2.3.so. s baixar a biblioteca em: http://prdownloads.sourceforge.net/kylixlibs/kylixlibs3-borqt-3.0-2.tar.gz Depois de baixar o arquivo descompacte: $ tar zxfs kylixlibs3-borqt-3.0-2.tar.gz Entre no diretrio kylixlibs3-borqt e execute o instalador: # ./install.sh Ela foi instalada em /usr/lib/kylix3/libborqt-6.9.0-qt2.3.so. Agora tente executar o DBDesigner, ele deve funcionar normalmente, pois agora pode encontrar a biblioteca.

21

Exemplo no DBDesigner:

22

MySQL
1 Entre no konsole e mude o usurio para root.

2 Entre na pasta onde o MySQL est instalado No meu caso, o mysql foi instalado na pasta usr/bin.

23

3 Visualizando os bancos de dados existentes com o comando: SHOW DATABASES;

4 Excluindo um banco de dados existente com o comando: DROP DATABASE test;

24

5 - Criando um novo banco de dados com o comando: CREATE DATABASE dbTeste;

Foi criado o banco dbTeste, depois foi usando o comando show, para exibir nosso banco j criado. 6 Para usar o banco, digite o comando : USE dbTeste A partir da estamos usando o banco de dados que criamos. Com o comando: SHOW TABLES Exibimos as tabelas do banco de dados. No nosso caso est vazio, pois ainda no criamos nenhuma tabela.

25

7 Criando tabelas com o comando : CREATE TABLE

26

8 Checando as tabelas criadas com o comando: SHOW TABLES;

27

8 Incluindo dados com o comando: INSERT INTO Inserindo dados na tabela cargos.

Visualizando os dados da tabela cargos.

Para visualizar os dados inseridos, usamos o comando SELECT, o qual falaremos mais detalhadamente adiante.

28

Inserindo dados na tabela empresa.

Visualizando os dados da tabela empresa.

29

30

Inserindo dados na tabela equipes.

Observe, que no primeiro INSERT, ns colocamos os nomes das colunas, mas nos demais no colocamos. No necessrio colocar os nomes das colunas, se voc vai inserir a quantidade exata de registro na ordem exata da tabela.

Visualizando os dados da tabela equipes.

31

Inserindo dados na tabela funcionrios.

Visualizando os dados da tabela funcionrios.

Inserindo dados na tabela obras.

Observe que podemos usar aspas simples, ao invs de aspas duplas.

32

Visualizando os dados da tabela obras.

Inserindo dados na tabela obras_tem_equipes.

33

Visualizando os dados da tabela obras_tem_equipes;

9 Alterando dados com o comando: UPDATE

Primeiro exibe os dados da tabela funcionrios antes da alterao; Faz o UPDATE Depois exibe novamente os dados da tabela funcionrios, j com o telefone alterado.

34

10 Excluindo dados com o comando DELETE

11 Comando SELECT:

35

Selecionando registros com o WHERE

Agrupando com o GROUP BY

36

Ordenando com o ORDER BY

37