Sei sulla pagina 1di 184

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS RELACIONAL

Charles Emerson Machado charles.machado@prof.sc.senac.br @charlesemachado

DADO - o valor do campo quando armazenado no Banco de Dados. Ex. O valor do campo "nome do cliente" para quem est fazendo a entrada de dados. CONTEDO DO CAMPO - o valor do campo armazenado no Banco de Dados. Ex. O valor do campo "nome do cliente" sem ser, momentaneamente, utilizado, armazenado na Base de Dados. INFORMAO - o valor que este campo representa para as atividades da empresa. Ex. Resposta a uma consulta. Qual os nomes do clientes localizados no Rio de Janeiro? MODELOS DE BANCO DE DADOS - Modelo Relacional, Modelo Hierrquico e Modelo em Rede. Representa a estrutura fsica no qual o armazenamento dos dados foram projetados. O modelo identifica a estrutura interna de recuperao e armazenamento dos dados no qual o SGBD foi projetado.

O que um banco de dados?

Uma coleo de dados relacionados referentes a um mesmo assunto e organizados de maneira til com o propsito de servir de base para que o usurio recupere informaes, tire concluses e tome decises.

Bancos de Dados comearam a ser utilizados por volta dos anos 60 e em 70 E.F. Codd da IBM publicou o artigo Um Modelo Relacional de Dados para Grandes Bancos de Dados Compartilhados estabelecendo princpios sobre gerncia de banco de dados, surgindo ento a linguagem SQL (Structured Query Language ou Linguagem de Consulta Estruturada) inicialmente chamada de SEQUEL (Structured English Query Language). Conhea mais o trabalho do Dr. Codd em www.informatik.uni-trier.de/%7Eley/db/about/codd.html

Dcada de 70 Muitas discusses a respeito do valor da competio entre os sistemas enquanto a teoria de banco de dados conduz ao objetivo final de projeto de pesquisa. Dois principais prottipos de sistema relacional foram desenvolvidos entre 1974 e 1977 e demonstram um timo exemplo de como a teoria conduz a boas prticas. Ingres: Desenvolvido pela UCB. Que no final das contas serviu como base para Ingres Corp., Sybase, MS SQL Server, Britton-Lee, Wang PACE. Este sistema utilizava QUEL como linguagem de consulta; System R: Desenvolvido pela IBM San Jose e serviu de base para o IBM SQL/DS, IBM DB2, Oracle, todas os BD da HP, Tandem's Non-Stop SQL. Este sistema utilizava SEQUEL como linguagem de consulta. O termo Sistema de Gerenciamento de Banco de Dados Relacional (SGBDR RDBMS em ingls) foi definido durante este perodo.

1976
O Dr. Peter Chen (visite bit.csc.lsu.edu/~chen/chen.html prope o modelo Entidade-Relacionamento (ER) para projetos de banco de dados dando uma nova e importante percepo dos conceitos de modelos de dados. Assim como as linguagens de alto nvel, a modelagem ER possibilita ao projetista concentrar-se apenas na utilizao dos dados, sem se preocupar com estrutura lgica de tabelas.

VANTAGENS DO BANCO DE DADOS 1 - REDUO OU ELIMINAO DE REDUNDNCIAS - Possibilita a eliminao de dados privativos de cada sistema. Os dados, que eventualmente so comuns a mais de um sistema, so compartilhados por eles, permitindo o acesso a uma nica informao sendo consultada por vrios sistemas.

2 - ELIMINAO DE INCONSISTNCIAS - Atravs do armazenamento da informao em um nico local com acesso descentralizado e, sendo compartilhada vrios sistemas, os usurios estaro utilizando uma informao confivel. A inconsistncia ocorre quando um mesmo campo tem valores diferentes em sistemas diferentes. Exemplo, o estado civil de uma pessoa solteiro em um sistema e casado em outro. Isto ocorre porque esta pessoa atualizou o campo em um sistema e no o atualizou em outro. Quando o dado armazenado em um nico local e compartilhado pelos sistemas, este problema no ocorre.

3 - COMPARTILHAMENTO DOS DADOS - Permite a utilizao simultnea e segura de um dado, por mais de uma aplicao ou usurio, independente da operao que esteja sendo realizada. Deve ser observada apenas o processo de atualizao concorrente, para no gerar erros de processamento (atualizar simultaneamente o mesmo campo do mesmo registro). Os aplicativos so por natureza multiusurio.

4 - RESTRIES DE SEGURANA - Define para cada usurio o nvel de acesso a ele concedido (leitura, leitura e gravao ou sem acesso) ao arquivo e/ou campo. Este recurso impede que pessoas no autorizadas utilizem ou atualizem um determinado arquivo ou campo.

10

5 - PADRONIZAO DOS DADOS - Permite que os campos armazenados na base de dados sejam padronizados segundo um determinado formato de armazenamento (padronizao de tabela, contedo de campos, etc) e ao nome de variveis seguindo critrios padres pr-estabelecido pela empresa. Ex. Para o campo "Sexo" somente ser permitido armazenamento dos contedos "M" ou "F".

11

6 - MANUTENO DE INTEGRIDADE - Exige que o contedo dos dados armazenadas no Banco de Dados possuam valores coerentes ao objetivo do campo, no permitindo que valores absurdos sejam cadastrados. Exemplo: Um funcionrio que faa no ms 500 horas extras, ou um aluno que tenha nascido no ano de 1860.

12

7 - EVITAR NECESSIDADES CONFLITANTES - Representa a capacidade que o administrador de Banco de Dados deve ter para solucionar "prioridades sempre altas" de todos os sistemas, tendo ele que avaliar a real necessidade de cada sistema para a empresa para priorizar a sua implantao.

13

8 - INDEPENDNCIA DOS DADOS - Representa a forma fsica de armazenamento dos dados no Banco de Dados e a recuperao das informaes pelos programas de aplicao. Esta recuperao dever ser totalmente independente da maneira com que os dados esto fisicamente armazenados. Quando um programa retira ou inclui dados o SGBD compacta-os para que haja um menor consumo de espao no disco. Este conhecimento do formato de armazenamento do campo totalmente transparente para o usurio.

14

Modelos de Bancos de Dados Os tipos ou modelos de banco de dados podem ser divididos de acordo com as estruturas de dados e os operadores que apresentam ao usurio. O modelo mais utilizado atualmente o relacional, pois atravs dele os dados podem ser percebidos pelo usurio como tabelas e os operadores disposio do usurio podem gerar novas tabelas a partir das tabelas antigas. Os sistemas que antecedem o modelo relacional so chamados de prrelacionais, so eles: hierrquicos e de rede. So modelos considerados hbito e possuem uma caracterstica comum, todos eles expem ponteiros para o usurio; mais recentemente foi criado o modelo orientado a objetos que um sistema em que a unidade de armazenamento o objeto.

15

Um modelo de dados uma estrutura de referncia para organizar dados, todo SGBD deve suportar um modelo que permita uma representao dos dados de uma realidade. O esquema conceitual de uma aplicao o resultado da adequao dos requisitos de dados desta aplicao ao modelo de dados do SGBD. Todo modelo de dados deve suportar, no mnimo, a especificao de entidades e relacionamentos.

16

Modelo Hierrquico Surgiu na dcada de 60, organizava dados em uma estrutura de Bancos de Dados Hierrquicos. So baseados em registros compostos por diversos campos e so organizados em forma de rvore e no em formato de tabelas. Os registros possuem sub-registros e assim sucessivamente, formando uma ramificao semelhante a uma rvore. Dois registros so unidos por um elo, um ascendente e outro descendente.

17

Modelo de Redes

Utilizado principalmente no final da dcada de 60 e durante a dcada de 70, organizava dados em uma estrutura formada por vrias listas, que definia uma confusa rede de ligaes (estrutura similar a um grafo direcionado). Este tipo de gerenciador de Banco de Dados parecido com o Modelo Hierrquico, porm, cada registro filho pode ser ligado a mais de um registro pai, possibilitando a formao de ligaes mais complexas, porque no h a restrio a um s tipo de relacionamento que vigora.

18

Modelo Relacional

Este modelo utilizado por quase todos os atuais fabricantes de Banco de Dados do mundo. Criado por Edgar Frank Codd, pesquisador da IBM e definido na dcada de 70, considerado at hoje uma das maiores inovaes tcnicas do sculo XX. o modelo de dados dominante no mercado atualmente, organiza dados em um conjunto de relaes (tabelas), alem disso o mais fcil de ser descrito e entendido. O Modelo Relacional consagrou se como o primeiro modelo de dados para aplicaes comerciais. Os primeiros sistemas de Banco de Dados tiveram por base, o modelo de rede e modelo hierrquico, esses dois modelos antigos esto mais prximos da implementao no nvel fsico que no modelo relacional.

19

No mercado existem outros tipos de sistemas, porm h um pr - domnio dos SGBDs relacionais, principalmente fora das plataformas de grande porte, nestes ambientes esto gradativamente substituindo o SGBD de outras abordagens (Hierrquica, Rede, por exemplo). Banco de Dados Relacional um grupo de dados percebido pelos usurios como um conjunto de tabelas. [DATE, 2000] A terminologia relao foi utilizada na estrutura original devido ao fato de que os sistemas relacionais baseiam se num conjunto fundamental de idias tericas conhecidas como modelo relacional. Essa terminologia a mais comum na rea acadmica. A terminologia tabela mais comum na prtica e nos produtos comerciais. Uma relao vista como uma tabela, onde as colunas indicam os campos e as linhas as ocorrncias (valores). Relacionamentos entre relaes so estabelecidos por igualdade de valor de campos.

20

O que um Banco de dados Relacional? Num banco de dados relacional os dados so armazenados em forma de tabelas. Cada tabela e constituda por linhas horizontais chamadas tuplas e verticais, chamadas colunas ou atributos. Voc pode identificar cada tabela, dando-lhes nomes nicos, e o banco de dados usa esses nomes para acessar as tabelas. Os objetos vitais em um banco relacional so entidades, chaves e relacionamentos. Entidades que representam conceitos do mundo real que pode ser claramente identificados, tais como casas, objetos, eventos e pessoas. Atributos identificam ou descrevem uma entidade.

21

ndice:

O ndice serve para prover um acesso mais rpido a linhas das tabelas. O funcionamento de um ndice muito simples. mais ou menos como um ndice ao final de um livro, os principais assuntos esto no ndice em ordem alfabtica. Localiza-se ali o assunto, verifica-se o nmero da pgina em que tratado e vai diretamente a essa pgina, sem precisar busc-lo sequencialmente nas pginas. Isso tambm acontece com o ndice de uma tabela.
Os valores indexados so armazenados em um objeto do banco de dados em ordem, o que permite ao gerenciador do banco de dados pesquisar primeiro no ndice, para depois buscar na tabela.

22

Chave Candidata: Como normalmente uma entidade apresenta mais de um atributo, existe a possibilidade de que alguns deles preencham os requisitos indispensveis para se tornarem a chave primria da entidade. Chave Primria (Primary Key): um atributo, ou um conjunto de atributos, que identificam uma nica ocorrncia de um registro em uma entidade, de tal maneira, que no existam dois registros na tabela com o mesmo valor de chave primria. Os campos que a compem so de preenchimento obrigatrio.

23

Caractersticas da chave primria:

Toda tabela deve possuir uma chave primria. Deve armazenar um valor nico para cada registro. Pode ser simples ou composta. de preenchimento obrigatrio. Deve ter um valor estvel, que no se altere ao longo do tempo. Menor extenso possvel. De preferncia campos numricos inteiros.

24

Chave Composta: Se um atributo, isoladamente, no consegue individualizar uma ocorrncia, um conjunto de atributos deve ser utilizado com esta finalidade. Chave Estrangeira (Foreign Key): a chave primria herdada de uma entidade.

25

A seguir um resumo sobre os objetos de um banco de dados:

Tabelas -> uma tabela consiste de linhas e colunas. E usada para armazenar dados em banco de dados relacional. Cada tabela armazena informaes sobre os tipos de objetos modelados pelo banco de dados.

26

Views -> Uma View ajuda a encapsular uma consulta em uma entidade relacional e facilita a viso de um dado de uma ou mais tabelas em um banco de dados.

ndices -> Num banco de dados relacional um ndice oferece rpido acesso ao dado de uma tabela baseado no valor de chave. ndices tambm podem reforar a unicidade nas linhas de uma tabela. A chave primaria de uma tabela e automaticamente indexada. Na pesquisa de um texto completo, um ndice de texto completo armazena informao sobre palavras significantes e a locao delas em uma dada coluna.

27

Funes -> Uma funo e um pedao de cdigo que opera como uma nica unidade lgica. Uma funo pode retornar tanto uma tabela quanto um valor escalar. Qualquer cdigo que deve executar a lgica incorporada em uma funo pode chamar a funo, em vez de repetir a funo lgica.

Procedimentos (Procedures) -> Um procedimento e uma coleo de padres T-SQL pre-compilados que so executados e retornam os parmetros do usurio. Voc pode usar uma procedure temporria ou permanente.

28

Gatilho (Trigger) -> Um gatilho e uma stored procedure (procedimento armazenado) que e executada quando um dado em uma tabela especifica e modificado. Voc pode criar triggers para impor integridade referencial entre os dados relacionados logicamente em diferentes tabelas. Referential integrity: tambm conhecido como "integridade referencial", esse recurso consiste em restries ou regras existentes para uma correta insero de dados, por exemplo, para impedir que uma tabela seja preenchida sem que isso ocorra em outra. Schemas: recurso que permite cruzar informaes em um mesmo banco de dados, mas em estruturas diferentes.

29

1979 A Relational Software (Oracle) concebe o SQL, em seguida ANSI (America National Standards Institute) e ISO (International Standards Organization) iniciam o processo de padronizao da linguagem.

1986 Surge a primeira verso padronizada pela ANSI o SQL-86.


1987 ISO adota o mesmo padro da ANSI. 1989 SQL-89, segunda verso do padro. 1992 A terceira verso do padro, SQL-92, a mais utilizada atualmente. 1999 Padro mais recente, o SQL3, objeto-relacional exigindo maior complexidade de implementao.

30

SQL Criada em meados dos anos 70, firmou-se como a linguagem padro para os bancos de dados relacionais por ser de fcil utilizao, no requerendo profundos conhecimentos tcnicos de seus usurios. constituda de um conjunto de instrues que possuem a capacidade de manipular dados, definirem estruturas de dados e especificar restries de segurana e integridade. No uma linguagem autnoma, uma sublinguagem que depende de outras para desenvolvimento de aplicaes.

31

COMPONENTES DA SQL

DDL (Data Definition Language) Linguagem de Definio de Dados o conjunto de declaraes que fornecem meios para a definio e modificao das estruturas do banco de dados. Exemplos:
Comando ALTER DATABASE ALTER FUNCTION ALTER PROCEDURE ALTER TABLE ALTER VIEW CREATE DATABASE CREATE FUNCTION CREATE INDEX CREATE PROCEDURE CREATE TABLE 32 CREATE TRIGGER CREATE VIEW DROP DATABASE DROP FUNCTION DROP INDEX DROP PROCEDURE DROP TABLE DROP TRIGGER DROP VIEW RENAME TABLE

DML (Data Manipulation Language) Linguagem de Manipulao de Dados A DML permite que os acessos e as manipulaes sejam realizados de forma mais simples dentro do modelo de dados utilizado. Exemplos: INSERT UPDATE DELETE DQL (Data Query Language) Linguagem de Consulta de Dados Permite extrair dados do banco de dados SELECT

33

DCL (Data Control Language) Linguagem de Controle de Dados Refere-se ao conjunto de instrues que permitem a implementao de determinados nveis de acesso e privilgios, garantindo a segurana do banco de dados. Exemplos: GRANT REVOKE

34

Em 1988 a Microsoft lanou sua primeira verso do SQL Server. Ela foi desenvolvida para a plataforma OS/2 juntamente com a Microsoft e a Sybase. Durante os anos 90 a Microsoft iniciou o desenvolvimento de uma verso para a plataforma NT. Enquanto o SQL Server estava sendo desenvolvido a Microsoft decidiu que ele deveria ser uma camada encapsulada sobre o sistema operacional NT.

35

Em 1992 a Microsoft assumiu a responsabilidade maior sobre o futuro do SQL Server para o NT. Em 1993 o Windows NT 3.1 e o SQL Server 4.2 para NT foram lanados. A filosofia da Microsoft em combinar um banco de alta performance com uma interface fcil de usar mostrou-se um sucesso. Microsoft rapidamente tornou-se o segundo mais popular vendedor de softwares de bancos de dados relacionais.

36

Em 1994 a Microsoft e a Sybase formalmente encerraram sua parceria. Em 1995 a Microsoft lanou a verso 6.0 do SQL Server. Esse lanamento foi uma das maiores rescritas da tecnologia SQL Server. A verso 6.0 aumentou a performance substancialmente provendo mecanismos internos de replicao e administrao centralizada.

37

Em 1996 a Microsoft lanou a verso 6.5 do SQL Server. Essa verso trouxe melhoras significativas para a tecnologia e disponibilizou diversas novas funcionalidades. Em 1997 a Microsoft lanou a verso Enterprise do SQL 6.5. Em 1998 a Microsoft lanou a verso 7 do SQL Server o qual foi completamente rescrito.

38

Em 2000 a Microsoft lanou o SQL Server 2000. O SQL Server 2000 o lanamento mais importante do SQL Server at o momento. Essa verso foi construda sobre o framework do SQL Server 7.0. De acordo com o time de desenvolvimento do SQL Server essas mudanas foram desenvolvidas para tornar essa tecnologia mais nova pelos prximos 10 anos. 2003 - O SQL Server 2000 ganha a sua verso em 64-bit podendo acessar maiores quantidades de memria. Infelizmente o time teve de escolher e optou por lanar o SQL Server 2000 apenas para o Itanium.

39

2005 - lanado o SQL Server 2005 (com o codinome Yukon) com grande integrao a plataforma .NET. O SQL Server d mais um passo em direo s grandes plataformas corporativas. A Microsoft exibe alguns grandes casos de sucesso (como a Xerox que consegue realizar at 7.000.000 de transaes dirias utilizando o SQL Server 2005 e a Bovespa que a bolsa de valores do Brasil). 2007 - A Microsoft divulga em uma feira mundial de Business Intelligence o lanamento do SQL Server 2008 previsto para

40

2008. O principal slogan "ir um pouco alm do relacional". Novas funcionalidades como tipos de dados geogrficos, controle de carga por usurio, etc esto previstas...

41

PostgreSQL um sistema gerenciador de banco de dados objeto relacional (SGBDOR), desenvolvido como projeto de cdigo aberto.

42

Caractersticas

Hoje, o PostgreSQL um dos SGBDs (Sistema Gerenciador de Bancos de Dados) de cdigo aberto mais avanados, contando com recursos como: Consultas complexas Chaves estrangeiras Integridade transacional Controle de concorrncia multi-verso Suporte ao modelo hbrido objeto-relacional

43

Gatilhos Vises Linguagem Procedural em vrias linguagens (PL/pgSQL, PL/Python, PL/Java, PL/Perl) para Procedimentos armazenados Indexao por texto Estrutura para guardar dados Georeferenciados PostGIS

44

O PostgreSQL um dos resultados de uma ampla evoluo que se iniciou com o projeto Ingres, desenvolvido na Universidade de Berkeley, Califrnia. O lder do projeto, Michael Stonebraker, um dos pioneiros dos bancos de dados relacionais, deixou a universidade em 1982 para comercializar o Ingres, porm retornou a ela logo em seguida. Aps seu retorno a Berkeley, em 1985, Stonebraker comeou um projeto psIngres com o objetivo de resolver problemas com o modelo de banco de dados relacional. O principal problema era a incapacidade do modelo relacional compreender tipos (atualmente, chamados de objetos), ou seja, combinaes de dados simples que formam uma nica unidade. 45

O projeto resultante, chamado Postgres, era orientado a introduzir a menor quantidade possvel de funcionalidades para completar o suporte a tipos. Estas funcionalidades incluam a habilidade de definir tipos, mas tambm a habilidade de descrever relaes - as quais at este momento eram amplamente utilizadas, mas completamente mantidas pelo usurio. No Postgres, o banco de dados "compreendia" as relaes e podia obter informaes de tabelas relacionadas utilizando regras.

46

A Oracle foi fundada em agosto de 1977, inicialmente foi chamada de Software Development Labs (SDL), uma empresa de consultoria que contava com Bob Miner (presidente), Ed Oates e Bruce Scott (engenheiros de software) no seu primeiro projeto. Larry Ellison, um dos grandes nomes da Oracle, trabalhava na empresa para a qual a SDL prestava a consultoria. Este Bruce Scott, o Scott de scott/tiger (Tiger era o nome do gato da sua filha), usado at hoje nos schemas de exemplo do sistema gerenciador de banco de dados (RDBMS) desenvolvido pela empresa.

47

Antes de formar a Oracle, Bob Miner foi gerente de Larry Ellison em um projeto da CIA, apelidado de Oracle. Ed Oates e Bruce Scott fizeram 90% do trabalho de dois anos (desse projeto de consultoria), no primeiro ano, de modo que tiveram o ano seguinte para trabalhar no Oracle. Ed Oates terminou os outros 10% no ano seguinte, enquanto Bob e Scott comearam a escrever o banco de dados Oracle. Quando concluram o trabalho decidiram ento, que queriam ser uma empresa de produto, em vez de uma empresa de consultoria. Mas Larry no estava interessado nisso. Ele estava acompanhando o que a IBM estava fazendo e descobriu um trabalho sobre o System/R baseado no trabalho de 1970 de Codd sobre bancos de dados relacionais.

48

Ele descrevia a linguagem SQL, que na poca era chamada SEQUEL/2. Larry levou o trabalho a Bob e Scott e perguntou se eles poderiam montar isso. Acharam que seria muito fcil e assim comearam. Scott tinha 24 anos na poca, Bob era 15 anos mais velho e Larry era 10 anos mais velho que Sccott. Scott deixou a Oracle em 1982, depois de aproximadamente cinco anos e meio trabalhando l. Quando saiu, eles tinham terminado a verso 3 do banco de dados. Cerca de metade do cdigo era dele e metade de Bob. Parte do cdigo do analisador no banco de dados atual ainda pode ser de Scott. Bruce Scott falou de um dia que marcou a sua vida: a conferncia dos primeiros usurios do Oracle. Essa foi uma conferncia de clientes que organizaram. Aconteceu em 1982, e reuniu entre de 25 e 50 pessoas. Foi assim que isso comeou a pegar. Fabricante: Oracle Corporation

49

Linha do tempo do RDBMS Oracle 1977 Larry Ellison, Bob Miner, Ed Oates e Bruce Scott formam a SDL. Larry e Bob foram parceiros em um projeto da CIA apelidado de Oracle. Bob e Bruce comeam a trabalhar no banco de dados. 1978 A CIA o primeiro cliente, embora o produto ainda no tenha sido lanado comercialmente. A SDL muda seu nome para Relational Software Inc. (RSI). 1979 A RSI lana sua primeira verso comercial, a verso 2 do banco de dados escrito em linguagem Assembler. No foi lanada uma verso 1 por medo de as pessoas no comprarem uma primeira verso de software. A primeira verso comercial do software vendida Base da Fora Area americana. Esse o primeiro RDBMS comercial no mercado.

50

1981 A primeira ferramenta, Interactive Application Facility (IAF), que um predecessor da futura ferramenta SQL*Forms do Oracle, criada. 1982 A RSI muda seu nome para Oracle Systems Corporation (OSC) e depois simplifica o nome para Oracle Corporation. 1983 A verso 3, escrita em linguagem C (que a torna portvel) lanada. Bob Miner escreve a metade, enquanto tambm d suporte V2 baseada em Assembler, e Bruce Scott escreve a outra metade. o primeiro RDBMS de 32 bits. 1984 A verso 4 lanada. Primeiro banco de dados com coerncia de leitura. Oracle portado para o Personal Computer (PC). 1985 Verses 5 e 5.1 so lanadas, primeiro banco de dados de servidor paralelo no VMS/VAX.

51

1986 O Oracle Client/Server introduzido; primeiro banco de dados cliente/servidor. 1987 Oracle a maior empresa de DBMS. Iniciado o grupo Oracle Applications. Primeiro banco de dados SMP (multiprocessamento simtrico) introduzido. Implementada a primeira aplicao cliente/servidor em produo executando o Oracle. 1988 Lanado o Oracle V6. Primeiro bloqueio em nvel de linha. Primeiro backup de banco de dados a quente (on-line). Introduo da linguagem procedural de consulta da Oracle - PL/SQL. 1992 Lanado o Oracle V7. 1993 Introduzidas ferramentas GUI de desenvolvimento cliente/servidor do Oracle. Oracle Applications passou para cliente/servidor.

52

1994 Bob Miner morre de cncer. 1995 Primeiro banco de dados de 64 bits. 1996 Lanado o Oracle7.3. 1997 O Oracle 8 apresentado. O Oracle Application Server apresentado, assim como aplicaes para a Web. Oracle o primeiro banco de dados para Web. Ferramentas Oracle BI, como Discoverer, so introduzidas para data warehousing. Ferramentas possuem suporte nativo para Java.

53

1998 Primeiro grande RDBMS (Oracle 8) portado para o Linux. Oracle o primeiro banco de dados com suporte para Java. 1999 Lanado o Oracle 8i. Integra Java/XML nas ferramentas de desenvolvimento. Oracle o primeiro banco de dados com suporte nativo para XML. 2000 Lanado o Oracle9i Application Server, tornando-se o primeiro banco de dados com cache na camada intermediria. Lanado o EBusiness Suite, banco de dados sem fio com OracleMobile, Oracle9i Application Server Wireless e Internet File System (IFS).

54

2001 Lanado o Oracle9i (9.1). Oracle o primeiro banco de dados com Real Application Clusters (RAC). 2002 Lanado o Oracle9i Release 2 (9.2). 2003 Lanado o Oracle 10g banco de preparado para o Grid Computing. 2007 Previso de lanamento do Oracle 11g.

55

A Sybase, uma empresa do SAP, cria a tecnologia que proporciona a empresa sem fio para os clientes e parceiros atravs do fornecimento de infraestrutura corporativa e mvel e solues de software de desenvolvimento e integrao. Os dados mais importantes do mundo nas reas de comrcio, finanas, governo, sade e defesa so executados nos produtos Sybase. Veja a seguir uma breve cronologia das principais conquistas no decorrer de duas dcadas como empresa lder em tecnologia.

56

1984 A Sybase foi fundada por Mark Hoffman e Bob Epstein na residncia do Sr. Epstein, em Berkeley, Califrnia. 1988 A Sybase a primeira no mercado a disponibilizar um banco de dados relacional cliente/servidor, fornecendo ao Projeto Genoma Humano (Human Genome Project) as licenas para a primeira gerao de bancos de dados relacionais cliente/servidor. 1990 A Sybase a primeira a oferecer a tecnologia aberta de replicao.

57

1994 A Sybase considerada lder em tecnologia aberta de middleware. 1995 A Sybase lder em ferramentas de desenvolvimento cliente/servidor com o PowerBuilder. 1998 A Sybase iAnywhere distribui mais de 5 milhes de licenas do SQL Anywhere. 1999 A Sybase lder de mercado em mercados de capitais, oferecendo uma sute de aplicativos destinados a servios bancrios e de corretagem on-line.

58

Maio de 2000 A iAnywhere Solutions estabelecida como subsidiria da Sybase. Nov A Sybase a primeira a oferecer um servidor de aplicativo J2EE. 2001 A Sybase iAnywhere a lder do mercado de banco de dados mvel pelo quinto ano consecutivo. Maio de 2002

A Sybase iAnywhere conquista o prmio Mobility Award for Best Database. Julho A Financial Fusion Inc. classificada pela Celent Communications como a nmero um em soluo de operaes bancrias pela Internet pelo segundo ano consecutivo. Julho A Sybase supera todos os outros servidores de aplicativos com resultados recorde no benchmark independente da ECperf.
59

O MySQL foi criado na Sucia por dois suecos e um finlands: David Axmark, Allan Larsson e Michael "Monty" Widenius, que tm trabalhado juntos desde a dcada de 1980. Hoje seu desenvolvimento e manuteno empregam aproximadamente 400 profissionais no mundo inteiro, e mais de mil contribuem testando o software, integrando-o a outros produtos, e escrevendo a respeito dele.

60

No dia 16 de Janeiro de 2008, a MySQL AB, desenvolvedora do MySQL foi adquirida pela Sun Microsystems, por US$ 1 bilho, um preo jamais visto no setor de licenas livres. No dia 20 de Abril de 2009 a Oracle compra a Sun Microsystems e todos o seus produtos, incluindo o MySQL. Aps investigaes da Comisso Europeia sobre a aquisio para evitar formao de monoplios no mercado a compra foi autorizada e hoje a Sun faz parte da Oracle.

61

Caractersticas Portabilidade (suporta praticamente qualquer plataforma atual); Compatibilidade (existem drivers ODBC, JDBC e .NET e mdulos de interface para diversas linguagens de programao, como Delphi, Java, C/C++, C#, Visual Basic, Python, Perl, PHP, ASP e Ruby) Excelente desempenho e estabilidade; Pouco exigente quanto a recursos de hardware; Facilidade de uso; um Software Livre com base na GPL;

62

Contempla a utilizao de vrios Storage Engines como MyISAM, InnoDB, Falcon, BDB, Archive, Federated, CSV, Solid Suporta controle transacional; Suporta Triggers; Suporta Cursors (Non-Scrollable e Non-Updatable); Suporta Stored Procedures e Functions; Replicao facilmente configurvel; Interfaces grficas (MySQL Toolkit) de fcil utilizao cedidos pela MySQL Inc.

63

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS RELACIONAL


Charles Emerson Machado charles.machado@prof.sc.senac.br @charlesemachado

64

Falhas no entendimento de um sistema ocorrem devido a falhas nos seus eventos. A histria do desenvolvimento de um sistema de balano.

65

Falha no entendimento do sistema devido a uma provvel falta de feedback

Estrutura de dados

Programa funcionando Plano Especificao de requisitos Projeto Listagem

Especificao de testes

66

Modelos de Dados Um modelo de Dados um conjunto de conceitos formais utilizados para a definio de BD (descrio do dados, das relaes entre eles, da semntica de dados e das restries entre eles). A caracterstica bsica de um modelo de dados, como o prprio termo explicita, que ele corresponde a uma abstrao da realidade. A distncia existente entre a maneira na qual as entidades existem na realidade e a maneira como estas entidades so representadas internamente nos computadores levaram ao surgimento de modelos de dados em diferentes nveis de abstrao. A Modelagem de dados o processo de abstrao onde somente os elementos essenciais da realidade so enfatizados para a aplicao em questo, descartando-se os elementos no essenciais. O principal objetivo da modelagem de dados transmitir e apresentar uma representao nica, no redundante e resumida dos dados de uma determinada aplicao.

67

Os modelos de dados so classificados em conceituais, lgicos e fsicos de acordo com os conceitos que utilizam para representar os dados. Modelos Conceituais
O objetivo da modelagem conceitual descrever as informaes contidas em uma realidade, as quais estaro armazenadas em um BD. uma descrio alto nvel, mas que tem a preocupao de captar e retratar toda a realidade de uma organizao. So modelos mais abstratos que utilizam conceitos como objetos, propriedades dos objetos e a relao entre eles para representar os dados, estruturados independentemente das restries de implementao. O modelo mais utilizado na modelagem conceitual o Modelo Entidade-Relacionamento.

68

MODELO ENTIDADE RELACIONAMENTO

Relacionamento

"Um modelo conceitual ( o Modelo Entidade Relacionamento um tipo) ; um modelo (lgico) detalhado que captura a estrutura dos dados organizacional enquanto sendo independente de qualquer sistema de gerenciamento de base de dados ... " McFadden & Hoffer, p. 87

69

Diagrama Entidade-Relacionamento A estrutura lgica geral de um banco de dados pode ser expressa graficamente por um Diagrama Entidade-Relacionamento. Componentes do Diagrama E-R (Peter Chen): - Retngulos: representam conjuntos-entidade - Elipses: representam atributos - Losangos: representam conjuntos-relacionamento - Linhas: ligam atributos a conjuntos-entidade e conjuntos-entidade a conjuntos-relacionamento

70

Entidades e Conjuntos-Entidade

Entidade: uma representao abstrata de um objeto do mundo real Ex.: O fornecedor Pedro, com cdigo F1
Conjuntos-Entidade: grupo de entidades que possui caractersticas semelhantes Ex.: Conjunto-entidade Fornecedor

71

Atributos (campos)
Atributo: Elemento de dado que contm informao que descreve uma entidade Ex.:

Atributo Monovalorado: assume um nico valor para cada elemento do conjunto-entidade Ex.: Nome Atributo Composto: formado por um ou mais sub-atributos Ex.: Endereo

72

Atributo Multivalorado: uma nica entidade tem diversos valores para este atributo (seu nome sempre representado no plural) Ex.: Dependentes

Atributo Determinante: identifica cada entidade de um conjunto-entidade (tambm conhecido com atributo chave) Ex.: Cod_Func Domnio de um Atributo: conjunto de valores permitidos para o atributo Ex.: Sexo {M, F}

73

Relacionamentos Relacionamento: estrutura que indica a associao de elementos de duas ou mais entidades.

Atributo de Relacionamento: depende de todos os conjuntos-entidade associados entre si.

74

Modelo Conceitual

75

Modelos Lgicos

Tm seu incio a partir do modelo conceitual. Descreve as estrutura que estaro contidas no BD, mas sem considerar, ainda, nenhuma caracterstica especfica de um SGBD, resultando em um esquema lgico de dados sob uma das seguintes abordagens: modelo relacional, modelo de redes e modelo hierrquico. So modelos mais prximos da implementao e utilizam conceitos como registros para representar os dados.

76

Modelo Lgico

77

Modelos Fsicos

Parte do modelo lgico e descreve as estruturas fsicas de armazenamento de dados, tais como, tamanho dos campos, ndices, formas de acesso, etc. Descrevem como os dados so armazenados fisicamente.

78

/*============================================================== */ /* DBMS name: MySQL 5.0 */ /* Created on: 19/9/2011 00:49:19 */ /*============================================================== */ drop table if exists BAIRRO;

drop table if exists FUNCIONARIO;


drop table if exists PESSOA;

79

/*=======================================================*/ /* Table: BAIRRO */ /*=======================================================*/ create table BAIRRO ( BAI_CODIGO int not null, BAI_NOME varchar(20) not null, primary key (BAI_CODIGO) );

80

/*===============================================*/ /* Table: FUNCIONARIO */ /*===============================================*/ create table FUNCIONARIO ( FUN_CODIGO int not null, BAI_CODIGO int not null, FUN_NUMERO varchar(10), FUN_COMPLEMENTO varchar(10), FUN_CEP char(9), FUN_CPF char(11), FUN_RG varchar(18), primary key (FUN_CODIGO) );

81

/*======================================================*/ /* Table: PESSOA */ /*======================================================*/ create table PESSOA ( PES_CODIGO int not null, BAI_CODIGO int not null, PES_NUMERO varchar(10), PES_COMPLEMENTO varchar(10), PES_CEP char(9), PES_CPF char(11), PES_RG varchar(18), PES_FONERES char(16), primary key (PES_CODIGO) );

82

alter table FUNCIONARIO add constraint FK_BAIRRO_DO_FUNCIONARIO foreign key (BAI_CODIGO) references BAIRRO (BAI_CODIGO) on delete restrict on update restrict;

alter table PESSOA add constraint FK_BAIRRO_DA_PESSOA foreign key (BAI_CODIGO) references BAIRRO (BAI_CODIGO) on delete restrict on update restrict;

83

Exerccio - Modelagem

Construa o modelo Entidades-Relacionamentos a partir da seguinte descrio do sistema: Pretende-se criar uma base de dados que permita gerir uma parte da informao de uma clinica de sade. Fundamentalmente a base de dados dever guardar a informao relativa aos doentes que frequentam a clnica (nome, morada, telefone e numero de beneficirio) e dos mdicos que l trabalham (nome, morada, contacto e especialidade). Para alm disso o sistema dever registar as marcaes de consultas de cada paciente para um determinado mdico sabendo que esse mdico s pratica uma determinada especialidade.

84

MySQL Query Browser

O MySQL Query Browser uma ferramenta grfica fornecida pela MySQL AB para criar, executar e otimizar solicitaes SQL em um ambiente grfico. Assim como o MySQL Administrator foi criado para administrar um servidor MySQL, o MySQL Query Browser foi criado para auxiliar voc a selecionar e analisar dados armazenados dentro de um Banco de Dados MySQL. Enquanto todas as solicitaes executadas no MySQL Query Browser tambm podem ser executadas pela linha de comando utilizando-se o utilitrio mysql, o MySQL Query Browser permite a execuo e edio dos dados de maneira grfica, que mais intuitiva para o usurio.

85

86

Procedimentos

Instalar um pacote como o XAMPP ou qualquer outro que habilite o MYSQL. O prprio site da MYSQL disponibiliza o banco. O pacote MYSQL TOOLS, dispem da traduo para nosso idioma do: MYSQL ADMINISTRATOR MYSQL QUERY BROWSER MYSQL MIGRATION TOOLKIT O aplicativo WORKBENCH 5.2 CE, possui funes para modelar dados e um editor de script em SQL.

87

Os arquivos que compem o banco de dados ficam armazenados na sub pasta DATA.

88

Lista de arquivos criados para um banco de dados para a ENGENHARIA DE ARMAZENAMENTO MYISAM.
O ndice armazenado em um arquivo com extenso .MYI (MYIndex).

Os dados so armazenados em um arquivo com a extenso .MYD (MYData).


O MySQL armazena suas informaes de dicionrios de dados de tabelas em arquivos .frm no diretrio de banco de dados. Mas todo tabela do tipo InnoDB tambm tem sua prpria entrada no dicionrios de dados interno do InnoDB dentro da tablespace. Quando o MySQL apaga uma tabela ou um banco de dados, ele tem que deletar o(s) arquivo(s) .frm e a entrada correspondente dentro do dicionrio de dados do InnoDB. Esta a razo pela qual voc no pode mover tabelas InnoDB entre banco de dados simplesmente movendo os arquivos .frm e porque DROP DATABASE no funcionava em tabelas do tipo InnoDB em verses do MySQL anteriores a 3.23.43.

89

TIPO DE DADOS

O MySQL permite o armazenamento em diversos tipos de dados. importante conhece-los para conseguirmos criar nossas tabelas de forma correta e otimizada para o tipo de dados que ela armazenar. Podemos agrupar o tipos da seguinte forma: Numricos Strings (textos) Temporais

90

Espao de armazenamento

O que esse espao de armazenamento? Espao em disco que cada valor de um determinado tipo ir ocupar. O somatrio de bytes de todas as colunas de um registro (tupla ou linha) pode nos auxiliar na projeo de crescimento do nosso banco. Ex: Usar tipo INT para campo de usurio ativo ( 1 ativo , 0 inativo) Desperdcio de espao.

91

O TIPO NUMRICO
Pode ser utilizado no tratamento de valores numricos inteiros ou reais. Esto disponveis os seguintes tipos:

SMALLINT [(tamanho)] Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de valores inteiros curtos entre a faixa de valores de 32.768 at 32.767. O parmetro tamanho opcional e permite estabelecer o tamanho mximo do valor a ser exibido, podendo ser um valor mximo 255;
INTEGER [(tamanho)] Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de valores inteiros longos entre a faixa de valores de 2.147.483.648 at 2.147.483.647. O parmetro tamanho opcional e permite estabelecer o tamanho mximo do valor a ser exibido, podendo ser um valor mximo 255;

92

DECIMAL[(tamanho[,decimal])] Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de valores com ponto flutuante. O parmetro tamanho opcional e permite estabelecer o tamanho mximo do valor a ser exibido, podendo ser um valor mximo 255. Se omitido, o tamanho assumido 10. O parmetro opcional decimal permite estabelecer o tamanho mximo de casas decimais a ser exibido, podendo, ser um valor mximo de 30; NUMERIC[(tamanho[,decimal])] Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de valores com ponto flutuante, sendo semelhante ao tipo DECIMAL; DOUBLE PRECISION[(tamanho.decimal)] Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de valores com ponto de dupla preciso. O parmetro tamanho deve estar entre 25 e 53 para estabelecer o tamanho mximo. O parmetro opcional decima permite estabelecer o tamanho mximo de casas decimais a ser exibido, podendo ser um valor mximo de 30.

93

FLOAT Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de valores com ponto flutuante com sete dgitos de preciso decimais. Este tipo permite trabalhar com valores na faixa de 3,4 * 10-38 at 3,4 * 1038 ;

94

O TIPO TEMPORAL

Pode ser utilizado no tratamento de valores relacionados a data e horrio. Esto disponveis os seguintes tipos:
DATE Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de uma data de calendrio no formato AAAA-MM-DD (formato ANSI). O intervalo aceito depende da ferramenta de gerenciamento de banco de dados em uso. TIME Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de uma informao relacionada a um determinado horrio.

95

DATE: Uma data. A faixa suportada entre '1000-01-01' e '9999-12-31'. Formato 'AAAA-MM-DD TIME: Uma hora. A faixa entre '-838:59:59' e '838:59:59'. Formato 'HH:MM:SS DATETIME: Um combinao de hora e data. A faixa suportada entre '1000-01-01 00:00:00' e '9999-12-31 23:59:59'. YEAR[(2|4)]: Um ano no formato de 2 ou 4 digitos (padro so 4 digitos)

96

TIMESTAMP: Similiar ao datetime com algumas particularidades. Formato: 'AAAA-MM-DD HH:MM:SS'. Padro NOT NULL. No insert e update ele atualizado automaticamente.

97

O TIPO LITERAL O Tipo Literal pode ser para a recepo de valores baseados em cadeias de caracteres(strings dados alfanumricos delimitados por aspas ou apstrofos). Esto disponveis os seguintes tipos: CHAR(tamanho) Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de seqncias de caracteres de tamanho fixo que estejam limitadas at 255 caracteres de comprimento. O parmetro tamanho determina o valor mximo em caracteres que pode conter a seqncia;

98

VARCHAR(tamanho) Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de seqncias de caracteres de tamanho varivel que estejam limitadas at 255 caracteres de comprimento. A diferena entre este tipo e o CHAR que neste caso, os espaos em branco excedentes do lado direito da seqncia de caracteres no utilizados so automaticamente desprezados. O parmetro tamanho determina o valor mximo em caracteres que pode conter a seqncia .

99

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS RELACIONAL


Charles Emerson Machado charles.machado@prof.sc.senac.br @charlesemachado

100

ESTRUTURAS DE ARQUIVOS

ARQUIVO SEQENCIAL
Nos arquivos seqenciais a ordem lgica e fsica dos registros armazenados a mesma. Os registros podem estar dispostos seguindo a seqncia determinada por uma chave primria (chamada chave de ordenao), ou podem estar dispostos aleatoriamente.
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Numero 1000 1050 1075 1100 1150 1180 1250 1270 1300 1325 1340 1360 1400 1450 Nome ADEMAR AFONSO CARLOS CESAR DARCI EBER ENIO FLAVIO IVAN MIGUEL MARIA RAMON SANDRA TATIANA Idade 25 27 28 30 23 22 27 28 30 34 35 32 29 30 Salario 600 700 500 1000 1500 2000 750 600 700 1000 1500 2000 700 500

101

INSERO DE UM REGISTRO

Se o arquivo no est ordenado, o registro pode ser simplesmente inserido aps o ltimo registro armazenado. Se o arquivo est ordenado, normalmente adotado o seguinte procedimento: Dado um arquivo base B, construdo um arquivo de transaes T, que contem os registros a serem inseridos, ordenado pela mesma chave que o arquivo B. Os arquivos B e T so ento intercalados, gerando o arquivo A, que a verso atualizada de B.

102

# 0 1 2 3 4 5 6 7 8 9 10 11 12 13

Arquivo B Num Nome 1000 ADEMAR 1050 AFONSO 1075 CARLOS 1100 CESAR 1150 DARCI 1180 EBER 1250 ENIO 1270 FLAVIO 1300 IVAN 1325 MIGUEL 1340 MARIA 1360 RAMON 1400 SANDRA 1450 TATIANA

Idade 25 27 28 30 23 22 27 28 30 34 35 32 29 30

# 0 1 2 3 4

Num 1070 1120 1280 1310 1420

Arquivo T Nome ANGELA CLAUDIA IARA LUIS SONIA

Idade 25 27 28 30 23

# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Arquivo A Num Nome 1000 ADEMAR 1050 AFONSO 1070 ANGELA 1075 CARLOS 1100 CESAR 1120 CLAUDIA 1150 DARCI 1180 EBER 1250 ENIO 1270 FLAVIO 1280 IARA 1300 IVAN 1310 LUIS 1325 MIGUEL 1340 MARIA 1360 RAMON 1400 SANDRA 1420 SONIA 1450 TATIANA

Idade 25 27 25 28 30 27 23 22 27 28 28 30 30 34 35 32 29 23 30

103

ARQUIVO INDEXADO

O arquivo indexado aquele em que os registros so acessados atravs de um ou mais ndices, no havendo qualquer compromisso com a ordem em que os registros esto armazenados. Podem existir tantos ndices quantas forem as chaves de acesso aos registros. As entradas no ndice so ordenadas pelo valor das chaves de acesso, sendo cada uma delas constituda por um par (chave do registro, endereo do registro).

104

ndice Num 1000 1050 1070 1075 1100 1200 1250 1275 1300 1310 1400 1430 1470 1510 1520 1530 1590 1605 1650 1700 1710 1730 1740 1745 1800 1905 2010 End. 1 13 2 16 22 3 10 19 4 14 5 17 23 6 11 20 7 15 8 18 24 9 12 21 25 26 0 # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Num 2010 1000 1070 1200 1300 1400 1510 1590 1650 1730 1250 1520 1740 1050 1310 1605 1075 1430 1700 1275 1530 1745 1100 1470 1710 1800 1905

Arquivo Nome WILSON ADEMAR ANGELA CLAUDIA DIOGO EDISON FLAVIO HELENA IVAN MIGUEL CRISTIE GENARO RAMON AFONSO ELBER IARA CARLOS EDMUNDO LUIS DARCI GERSON SANDRA CESAR ENIO MARIA SONIA TATIANA

Idade 26 32 28 25 24 22 30 26 32 28 25 24 22 30 26 32 28 26 32 26 26 32 28 25 24 22 30

Salrio 1000 250 300 750 400 1500 250 300 750 400 1500 750 400 1500 250 300 750 400 1500 750 400 400 1500 750 400 750 400

105

ABSTRAO DE DADOS
Um propsito central de um SGBD proporcionar aos usurios uma viso abstrata dos dados, isto , o sistema esconde certos detalhes de como os dados so armazenados ou mantidos. No entanto, os dados precisam ser recuperados eficientemente. A preocupao com a eficincia leva a concepo de estruturas de dados complexas para representao dos dados no BD. Porm, uma vez que SGBD so freqentemente usados por pessoas sem treinamento na rea de computao, esta complexidade precisa ser escondida dos usurios. Isto conseguido definindo-se diversos nveis de abstrao pelos quais o BD pode ser visto:

106

NVEL FSICO: o nvel mais baixo de abstrao, no qual se descreve como os dados so armazenados. Estruturas complexas, de baixo nvel, so descritas em detalhe. NVEL CONCEITUAL: o nvel que descreve quais os dados so realmente armazenados no BD e quais os relacionamentos existentes entre eles. Este nvel descreve o BD como um pequeno nmero de estruturas relativamente simples. Muito embora a implementao de estruturas simples no nvel conceitual possa envolver estruturas complexas no nvel fsico, o usurio do nvel conceitual no precisa saber disto.

NVEL VISO: Este o nvel mais alto de abstrao, no qual se expe apenas parte do BD. Na maioria das vezes os usurios no esto preocupados com todas as informaes do BD e sim com apenas parte delas (Vises dos Usurios)

107

INDEPENDNCIA DE DADOS

Independncia de dados a nvel fsico: a capacidade de se modificar o modelo fsico, sem precisar reescrever os programas de aplicao.
Independncia dados a nvel lgico: a capacidade de se modificar o esquema lgico, sem a necessidade de reescrever os programas de aplicao. Modificaes no nvel lgico so necessrias sempre que a estrutura lgica do BD for alterada. Em alguns casos a recompilao pode ser requerida.

108

FASES DO PROJETO DE BD

CONSTRUIR

MODELO CONCEITUAL

Modelo de alto nvel, independente da implementao Etapa de levantamento de dados Uso de uma tcnica de modelagem de dados Abstrao do ambiente de hardware/software CONSTRUIR O MODELO LGICO Modelo implementvel, dependente do tipo de SGBD a ser usado Considera as necessidades de processamento Considera as caractersticas e restries do SGBD Etapa de normalizao dos dados

109

CONSTRUIR O MODELO FSICO

Modelo implementvel, com mtodos de acesso e estrutura fsica Considera necessidades de desempenho Considera as caractersticas e restries do SGBD Dependente das caractersticas de hardware/software AVALIAR
O

MODELO FSICO

Avaliar o desempenho das aplicaes Avaliar os caminhos de acesso aos dados e estruturas utilizadas IMPLEMENTAR O BD Etapa de carga (load) dos dados Gerar as interfaces com outras aplicaes 110

MODELAGEM DE DADOS

CONCEITOS
Abstrao: processo mental atravs do qual selecionamos determinadas propriedades ou caractersticas dos objetos e exclumos outras, consideradas menos relevantes para o problema sendo analisado. Modelo: uma abstrao, uma representao simplificada, de uma parcela do mundo real, composta por objetos reais. Modelagem: atividade atravs da qual se cria um modelo. Modelo de dados: Um modelo de dados uma descrio das informaes que devem ser armazenadas em um banco de dados, ou seja, a descrio formal da estrutura de BD (descrio dos dados, dos relacionamentos entre os dados, da semntica e das restries impostas aos dados). 111

REQUISITOS PARA MODELAGEM DE DADOS

Entender a realidade em questo, identificando os objetos que compe a parte da realidade que vai ser modelada.. Representar formalmente a realidade analisada, construindo um modelo de dados. Estruturar o modelo obtido e adequ-lo ao SGBD a ser usado, transformando o modelo conceitual em modelo lgico.

112

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS RELACIONAL


Charles Emerson Machado charles.machado@prof.sc.senac.br @charlesemachado

113

Aps conectar ao banco de dados, execute os comandos abaixo para: SHOW DATABASES; - Listar todos os BDs criados. SELECT VERSION(); - Verificar a verso do MYSQL.

SELECT USER(); - Usurio conectado ao BD.

114

COMANDOS DDL

DEFINIO DE DADOS CREATE DATABASE [IF NOT EXISTS] nome_bd Banco de dados no MySQL so implementados como diretrios contendo arquivos que correspondem a tabelas no banco de dados. Por no haver tabelas em um banco de dados quando ele criado, a instruo CREATE DATABASE apenas cria um diretrio sob o diretrio de dados do MySQL.

115

NOMES DE BANCO DE DADOS, TABELA, INDICE, COLUNA E ALIAS Nomes de banco de dados, tabela, ndice, coluna e apelidos seguem todos as mesmas regras no MySQL. Note que as regras foram alteradas a partir do MySQL verso 3.23.6, quando introduzimos aspas em identificadores (nomes banco de dados, tabela e coluna) com `. " funcionar tambm para citar identificadores se voc executar no modo ANSI.
Identificador Tamanho mximo (bytes) Caracteres permitidos Banco de dados 64 Qualquer caractere que permitido em um nome de diretrio exceto / ou .. Tabela 64 Qualquer caractere permitido em um nome de arquivo, exceto / ou .. Coluna 64 Todos os caracteres. Alias 255 Todos os caracteres.

116

DROP DATABASE

DROP DATABASE [IF EXISTS] nome_bd DROP DATABASE deleta todos as tabelas no banco de dados e deleta o banco de dados. Se voc fizer um DROP DATABASE em um banco de dados ligado simbolicamente, o link e o banco de dados original so deletados. Tenha cuidado com este comando! DROP DATABASE retorna o nmero de arquivos que foram removidos do diretrio de banco de dados. Para tabelas MyISAM, isto trs vezes o mero de tabelas, pois cada tabela corresponde a um arquivo .MYD, um arquivo .MYI e um arquivo .frm.

117

O comando DROP DATABASE remove do diretrio de banco de dados dado todos os arquivos com a seguinte extenso: Ext .BAK .ISM .MYI Ext .DAT .ISM .db Ext Ext .HSH .ISD .MRG .MYD .frm

Todos os subdiretrios que consistem de 2 dgitos (diretrios RAID) tambm so removidos.

118

CREATE TABLE
O comando CREATE TABLE permite criar e definir a estrutura de uma tabela(arquivo) definido as colunas (campos) e as chaves primrias e estrangeiras existentes. Sua sintaxe :

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nome_tabela [(definio_create,...)] [table_options] [select_statement] Ou
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nome_tabela [(]LIKE nome_antigo_tabela[)];

119

Onde: nome-tabela - Representa o nome da tabela que ser criada. Definio_create nome-coluna - Representa o nome da coluna que ser criada. A definio das colunas de uma tabela feita relacionando-as uma aps a outra. tipo-do-dado - Define o tipo e tamanho dos campos definidos para a tabela. Os tipos de dados

120

ALTER TABLE

ALTER TABLE lhe permite alterar a estrutura da tabela existente. Por exemplo, voc pode adicionar ou deletar colunas, criar ou remover ndices, alterar o tipo de coluna existentes, ou renomear coluna ou tabelas.

ALTER [IGNORE] TABLE nome_tbl especificao_alter

121

especificao_alter:

ADD [COLUMN] | ADD INDEX [nome_indice] (index_nome_col,...) | ADD [CONSTRAINT [symbol]] PRIMARY KEY (index_col_name,...) | ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...)

122

[definio_referncia] | ALTER [COLUMN] nome_col {SET DEFAULT literal | DROP DEFAULT} | MODIFY [COLUMN] definio_create [FIRST | AFTER nome_coluna] | DROP [COLUMN] nome_col | DROP PRIMARY KEY | DROP INDEX nome_indice | DISABLE KEYS | ENABLE KEYS | RENAME [TO] nome_nova_tbl | ORDER BY col | CHARACTER SET character_set_name [COLLATE collation_name] | table_options

123

RENAME TABLE

A renomeao feita automicamente, o que significa que nenhuma outra thread pode acessar qualquer uma das tabelas enquanto a renomeao est sendo executada.

RENAME TABLE tabela_antiga TO tabela_backup;

124

DROP TABLE

DROP TABLE remove uma ou mais tabelas. Todos os dados e definies de tabela so removidos, assim tenha cuidado com este comando!

DROP TABLE [IF EXISTS] nome_tabela;

125

COMANDOS DML

INSERT INSERT insere novos registros em uma tabela existente. A forma INSERT ... VALUES da instruo insere registros baseado em valores especificados explicitamente.

INSERT [INTO] nome_tabela [(nome_coluna,...)] VALUES ((expresso | DEFAULT),...)

126

nome_tabela a tabela na qual as linhas sero inseridas. A lista de nome das colunas ou a clusula SET indica para quais colunas a instruo especifica valor: Se voc no especificar a lista de colunas para INSERT ... VALUES ou INSERT ... SELECT, os valores para todas as colunas na tabela devem ser fornecidos na lista VALUES() ou pelo SELECT. Se voc no souber a ordem das colunas nas tabelas, use DESCRIBE nome_tabela para descobrir. Qualquer coluna que no tiver o valor fornecido explicitamente assumir o seu valor padro. Por exemplo, se voc especificar uma lista de colunas que no definem todas as colunas na tabela, s colunas no definidas sero atribudos o seu valor padro.

127

UPDATE

UPDATE atualiza uma coluna em registros de tabelas existentes com novos valores. A clusula SET indica quais colunas modificar e os valores que devem ser dados. A clusula WHERE, se dada, especifica quais linhas devem ser atualizadas. Seno todas as linhas so atualizadas. UPDATE nome_tabela SET nome_coluna1=expr1 [, nome_coluna2=expr2 ...] [WHERE definio_where]

128

DELETE

DELETE deleta linhas de nome_tabela que satisfaam a condio dada por definio_where, e retorna o nmero de registros deletados. DELETE FROM table_name [WHERE definio_where]

129

DQL

Sintaxe SELECT

SELECT utilizado para retornar registros selecionados de uma ou mais tabelas. Cada expresso_select indica as colunas que voc deseja recuperar. SELECT tanbm pode ser utilizado para retornar registros calculados sem referncia a nenhuma tabela.
Por exemplo: mysql> SELECT 1 + 1; -> 2 Uma expresso SELECT pode utilizar um alias usando AS nome_alias. O alias usado como o nome da coluna da expresso e pode ser usado com clusulas ORDER BY ou HAVING.

130

A clusula FROM table_references indica a tabela de onde os registros sero retornados. Se voc indicar mais de uma tabela, voc estar realizando uma join. Na clusula WHERE, voc pode usar qualquer uma das funes suportadas pelo MySQL. As otimizaes WHERE so colocadas aqui na parte da SELECT porque normalmente elas so usadas com SELECT, mas as mesmas otimizaes aplicam-se para WHERE em instrues DELETE e UPDATE. A clusula HAVING pode se referir a qualquer coluna ou alias definido na expresso_select. Ele aplicado no final, pouco antes dos itens serem enviados ao cliente, sem otimizao. LIMIT aplicada depois de HAVING.) estar na clusula WHERE.

131

Se voc utiliza GROUP BY, os registros de sada sero ordenados de acordo com o GROUP BY como se voc tivesse um ORDER BY sobre todos os campos no GROUP BY. O MySQL tem expandido a clusula GROUP BY para que voc tambm possa especificar ASC e DESC depois das colunas chamadas na clusula As opes DISTINCT, DISTINCTROW e ALL especificam quando registros duplicados devem ser retornados. O padro (ALL), todos os registros coincidentes so retornados. DISTINCT e DISTINCTROW so sinnimos e espcificam que registros duplicados no conjunto de resultados devem ser remopvidos.

132

SELECT [DISTINCT] expresso_select,... AS alias [FROM tabelas_ref AS alias [WHERE definio_where] [GROUP BY {inteiro_sem_sinal | nome_col | formula} [ASC | DESC], ... [HAVING where_definition] [ORDER BY {inteiro_sem_sinal | nome_coluna | formula} [ASC | DESC], ...]

WHERE - determina quais as linhas devero ser retornadas. A clusula where tambm conhecida por critrio.

133

OPERADORES DE COMPARAO
= Igual > Maior < Menor >= Maior ou igual <= Menor ou igual <> ou != Diferente ou no igual LIKE Parecido O smbolo de % usado para no considerar determinadas partes da pesquisa no atributo.

134

OPERADORES AND E OR
Operador AND E = somente retornar os dados quando as condies forem todas satisfeitas Operador OR OU = retorna dados assim que qualquer das condies for satisfeita

135

OPERADORES DE AGREGAO

MIN Retorna o menor valor MAX Retorna o maior valor COUNT Retorna a quantidade de valores AVG Retorna a mdia dos valores SUM Retorna a soma dos valores

136

OPERADORES IN, BETWEEN, NOT IN E NOT BETWEEN

IN = para testar se um valor est dentro de um determinado conjunto de valores. Pode utilizar o operador IN em conjunto com o operador NOT (formando a expresso NOT IN). BETWEEN = para testar se um valor est entre uma determinada faixa de valores. NOT IN Este operador, ao contrrio do IN, permite obter como resultado o valor de uma coluna que no pertence a uma determinada lista de elementos. NOT BETWEEN O operador NOT BETWEEN, ao contrrio do anteriormente descrito, permite consultar os valores que no se encontram em uma determinada faixa.

137

OPERADOR HAVING O operador HAVING dever ser utilizado em conjunto com a declarao SELECT e sua funo ser a de estabelecer um critrio extra de agrupamento ou seleo de valores, quando utilizando-se a clusula GROUP BY. Pode-se entender a declarao HAVING como sendo uma clusula WHERE para a declarao GROUP BY. SELECT descricao, unidades=sum(qtdade) FROM produto, venda WHERE produto.cod = venda.produto GROUP BY descricao HAVING sum(qtdade) > 12

138

OPERADOR DISTINCT
O operador DISTINCT possibilita que uma consulta retorne valores nicos, sem repeties, para a coluna de dados.Este operador deve ser utilizado em conjunto com a declarao SELECT.

SELECT DISTINCT (coluna) FROM tabela WHERE condio

139

DESCRIBE SHOW COLUMNS FROM

DESCRIBE um atalho para SHOW COLUMNS FROM. Lista a estrutura de uma tabela.

140

MySQL INNODB - Introduo e principais caractersticas

Conhecer a arquitetura do MySQL de fundamental importncia para entendermos o que um "Storage Engine", sendo assim, antes de qualquer conceituao, vejamos como so e onde ficam as "Engenharias de Armazenamento". Daqui por diante, trataremos os "Storage Engines" pela sua traduo, Engenharia de Armazenamento.

141

A arquitetura interna do MySQL provida de duas camadas principais, a primeira camada, que a camada de parser e otimizao de consultas SQL e a segunda que onde esto conectadas as Engenharias de Armazenamento de forma modular. Assim como o INNODB, existem outras Engenharias como MyISAM, FEDERATED, MERGE, MEMORY, BDB, ARCHIVE, CSV, EXAMPLES, BLACKHOLE e a novidade do MySQL 6.0, a FALCON, cada qual com suas caractersticas prprias. A Figura 01 ilustra as camadas citadas e outros componentes participantes

142

143

As Engenharias de Armazenamento funcionam como plugins, que so, mediante a alguma configurao, adicionados ao servidor MySQL que apresenta uma estrutura 100% modular. So estas engenharias que gerenciam diretamente os arquivos no disco. Cada tabela que criada utilizando a Engenharia de Armazenamento INNODB, armazena no diretrio do banco de dados, sob o diretrio de dados (datadir), um arquivo .frm, este por sua vez armazena a estrutura da tabela. Os dados e os ndices ficam localizados em um tablespace sobre o datadir. O INNODB tem um tablespace padro de nome ibdata que utilizado para armazenar ndices e dados de todas as tabelas de todos os bancos de dados contidos em um servidor MySQL. Podemos tambm, configurar tablespaces em locais personalizados do filesystem ou utilizar um tablespace para cada tabela criada.

144

Principais Caractersticas do INNODB

INNODB d suporte transaes e totalmente adequada s propriedades ACID. O multi-versionamento utilizado para garantir o isolamento de uma transao em relao outra; INNODB prov auto_recovery aps um crash ou queda no servidor onde o MySQL roda; INNODB tem suporte a integridade referencial, ou seja, tem suporte a criao de FOREIGN KEY, incluindo cascateamentos em DELETE e UPDATE. As propriedades de integridade referencial suportados pelo INNODB so: { RESTRICT | CASCADE | SET NULL | NO ACTION }

145

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS RELACIONAL


Charles Emerson Machado charles.machado@prof.sc.senac.br @charlesemachado

146

Reviso com exerccios dos comandos da 4 Aula

147

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS RELACIONAL


Charles Emerson Machado charles.machado@prof.sc.senac.br @charlesemachado

148

PROJETO DE BANCO DE DADOS: CLINICA MDICA


Competncias: Analisar e aplicar o resultado da modelagem de dados; Habilidades: Implementar as estruturas modeladas usando banco de dados; Bases Tecnolgicas: Administrao de banco de dados; Ambientes/ferramentas de gerenciamento de bancos de dados.

SITUAO Pretende-se criar uma base de dados que permita gerir uma parte da informao de uma clinica de sade. Fundamentalmente a base de dados dever guardar a informao relativa aos doentes que frequentam a clnica (nome, morada, telefone e numero de beneficirio) e dos mdicos que l trabalham (nome,morada,contacto e especialidade). Para alm disso o sistema dever registar as marcaes de consultas de cada paciente para um determinado mdico sabendo que esse mdico s pratica uma determinada especialidade.

149

MODELO DE NEGCIO: CLINICA MDICA

O mdico que atende na clnica previamente cadastrado pelo nmero do CRM, (composto por 5 dgitos numricos obrigatrios, deve ser um dado nico e obrigatrio para cada registro de mdico na clnica), pelo nome (campo indexado obrigatrio para todos os registros), pelo endereo (completo), por um nmero de celular (sem DDD) e pelo CPF (campo obrigatrio e no repetido composto por 11 dgitos numricos obrigatrios). Cada mdico pode consultar um ou mais pacientes. Cada consulta registrar a data (10/01/08), a hora (08:00), o valor da consulta, o diagnstico completo e se foi pedido exame ou no.

150

Os pacientes consultados na clinica so identificados pelo nome (campo ndice obrigatrio para todos os registros), endereo, telefone (com DDD) e CPF, (campo ndice no repetido composto por 11 dgitos numricos obrigatrios ATENO pode existir pacientes sem CPF). Um paciente deve ser consultado por um ou mais mdicos. As especialidades registram apenas a especialidade (Clinica Geral, Pediatria, Ortopedia, etc. Dado obrigatrio para cada registro de especialidade e que no pode ser repetido), atendida na clinica. Um mdico deve ter uma e somente uma especialidade. Enquanto uma especialidade pode ser relacionada a um ou mais mdicos.

151

Um paciente pode ser um e somente um paciente privado, isto , possui convnio mdico com algum plano de sade. Os pacientes privados so registrados pelo nome do plano (Golden Cross, Unimed, etc. campo indexado e que permite repetio), pelo Nmero do Contrato (dado indexado alfanumrico obrigatrio que pode ser repetido, de 8 dgitos obrigatrios), e se o paciente Titular do plano de sade (sim ou no). Um paciente privado deve ser um e somente um paciente na clnica. OBS: Campos com mais de sete caracteres no sero usados como chave primria. Campos criados como identificadores nicos (chave primria) sero controlados automaticamente pelo sistema, campos nativos NO sero preenchidos automaticamente. Os dados da especialidade e do medico so de responsabilidade da diretoria do hospital, enquanto os dados do paciente e da consulta so da competncia do atendimento.

152

153

154

155

MODELO ENTIDADE - RELACIONAMENTO O objetivo da modelagem de dados possibilitar a apresentao de uma viso nica e no redundante dos dados de uma aplicao. No desenvolvimento da aplicao de um BD, o modelo EntidadeRelacionamento (MER) o mais utilizado para representao e entendimento dos dados que compe a essncia de um sistema de informao. O MER representa as informaes do universo sendo modelado como objetos, denominados entidades, e representa as relaes entre as informaes como sendo relaes entre esses objetos, denominadas relacionamentos. O Projeto Conceitual do BD, utilizando o MER pode ser representado graficamente pelo DER (Diagrama Entidade-Relacionamento).

156

ENTIDADES E CONJUNTO DE ENTIDADES

Uma entidade um objeto que existe no universo sendo modelado e distinguvel dos demais objetos. Um grupo de entidades que possuem caractersticas semelhantes formam um conjunto de entidades. Em um conjunto de entidades so representadas a princpio, todos os elementos do mundo real referidos pelo conjunto. Para evitar a redundncia, cada objeto do mundo real deve ser representado preferencialmente por uma nica entidade de um nico conjunto de entidades.
Representao grfica no DER

Um conjunto de entidades representado por um retngulo com seu nome dentro. O nome deve ser um substantivo no singular.

157

Exemplo: suponha uma empresa onde trabalham vrios empregados. Joo da Silva e Carla Gomes so empregados dessa empresa. So entidades o conjunto de todos os empregados da empresa, formando um conjunto de entidades Chamado Empregado. Representao grfica :

158

REPRESENTAO GRFICA NO DER

O atributo pode ser representado por uma elipse com seu nome dentro desta. A elipse deve estar ligada ao conjunto de entidades a qual pertence o atributo atravs de uma linha simples. Os atributos simples e os monovalorados so representados por uma elipse simples. Os atributos multivalorados so representados por uma elipse dupla e os derivados por uma elipse pontilhada. Voltando ao exemplo da empresa, quais informaes sobre os empregados so importantes para os nossos propsitos? Informaes como nmero de matrcula, nome, endereo, salrio, sexo, data de nascimento, etc.

159

CHAVES DO CONJUNTO DE ENTIDADES

Precisamos especificar como distinguir cada entidade de um conjunto de entidades usando seus atributos. Uma chave candidata de um conjunto de entidades um conjunto de um ou mais atributos, que juntos permitem identificar unicamente cada entidade. Uma chave candidata deve ser um conjunto minimal de atributos, isto , no devem possuir subconjuntos que tambm so chaves candidatas. Um conjunto de entidades pode possuir vrias chaves candidatas. Uma chave primria de um conjunto de entidades uma chave candidata escolhida como principal mecanismo de identificao das entidades do conjunto de entidades.

160

Representao grfica no DER

Os atributos que formam a chave primria tm seu nome sublinhado. No exemplo da empresa cada empregado pode ser identificado unicamente pelo seu nmero de matrcula, pois no existem dois empregado com o mesmo nmero. Assim, o atributo nmero de matrcula pode se tornar a chave primria da entidade Empregado.

161

RELACIONAMENTO E CONJUNTO DE RELACIONAMENTOS Precisamos representar tambm as relaes que existem entre as entidades. Estas relaes so representadas pelos relacionamentos. Um relacionamento uma associao entre duas ou mais entidades. Um conjunto de relacionamentos corresponde a um grupo de relacionamentos do mesmo tipo. Assim, um relacionamento binrio associa duas entidades, um relacionamento ternrio associa trs entidades e assim sucessivamente. Considere novamente o exemplo da empresa. Existem vrios projetos desenvolvidos pela empresa. Esses projetos so entidades do conjunto de todos os projetos da empresa, formando um conjunto de entidades chamado Projeto. Os empregados trabalham nesses projetos, logo existe uma relao trabalha_em entre os conjuntos de entidades Empregado e Projeto (Empregado trabalha_em Projeto).

162

Representao grfica no DER Um conjunto de relacionamentos representado por um losango, com o nome do conjunto dentro, ligado por linhas aos conjuntos de entidades que ele associa. O nome deve ser um substantivo no singular ou um verbo na 3 pessoa do singular (mais apropriado).

163

Atributos dos Conjuntos de Relacionamentos Um conjunto de relacionamentos pode possuir atributos que descrevem a associao das entidades. Voltando ao exemplo, cada empregado trabalha um certo nmero de horas em um determinado projeto. Logo, o nmero de horas trabalhadas por um Empregado em um Projeto um atributo do relacionamento trabalha_em.

Representao grfica no DER


Atributos de conjunto de relacionamentos so representados tal como atributos de conjuntos de entidades, porm so ligados por linhas ao losango.

164

165

Propriedades de Relacionamentos O MER permite representarmos algumas restries sobre dados, e regras que existem no universo que est sendo modelado e que os dados do BD devem obedecer.

Cardinalidade dos Conjuntos de Relacionamentos

166

A cardinalidade de um conjunto de relacionamentos expressa o nmero de entidades de um conjunto de entidades E1 que podem estar associadas a uma entidade do outro conjunto de entidades E2, atravs daquele conjunto de relacionamentos R. Para um conjunto de relacionamentos binrios a cardinalidade pode ser:

167

um para um (1:1): uma entidade de E1 pode estar associada no mximo a uma entidade de E2 atravs de R; e uma entidade de E2 pode estar associada a no mximo uma entidade de E1, atravs de R. Ex.: Um vendedor ocupa um nico escritrio e um escritrio pode ser ocupado por um nico vendedor.

168

um para muitos (1:N): uma entidade de E1 pode estar associada a vrias entidades E2; e uma entidade de E2 pode estar associada no mximo uma entidade de E1. Ex. Um vendedor atende muitos clientes. Porm, cada cliente tem um vendedor especfico.

169

muitos para um (N:1): uma entidade de E1 pode estar associada a no mximo uma entidade de E2; e uma entidade de E2 pode estar associada a vrias entidades de E1.

170

muitos para muitos (N:N) : uma entidade de E1 pode estar associada a vrias entidades de E2; e uma entidade de E2 pode estar associada a vrias entidades de E1. Ex.: Um vendedor atende muitos clientes, e um cliente pode ser atendido por diversos vendedores.

Na prtica, o relacionamento n:n dividido em duas relaes 1:n e uma nova entidade criada para representar o relacionamento.

171

172

CHAVES DAS RELAES

Uma chave candidata de uma relao o menor conjunto possvel de atributos que identificam unicamente uma tupla da relao. Uma relao pode ter vrias chaves candidatas. Uma chave primria (Primary Key - PK) de uma relao uma chave candidata escolhida como a principal forma de identificao das tuplas. As demais candidatas so chaves secundrias. A chave primria que faz parte dos atributos de uma relao chamada de chave estrangeira (Foreign Key - FK).

173

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS RELACIONAL


Charles Emerson Machado charles.machado@prof.sc.senac.br @charlesemachado

174

EXERCCIOS SOBRE CRIAO DE TABELAS E SELECT

175

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS RELACIONAL


Charles Emerson Machado charles.machado@prof.sc.senac.br @charlesemachado

176

REVISO DE CONCEITOS
CHAVE PRIMRIA Chaves primrias (em ingls Primary Keys ou PK) sob o ponto de vista de um banco de dados relacional, referem-se aos conjuntos de um ou mais campos, cujos valores, considerando a combinao de valores de todos os campos da tupla, nunca se repetem e que podem ser usadas como um ndice para os demais campos da tabela do banco de dados. Em chaves primrias, no pode haver valores nulos nem repetio de tuplas.

177

CHAVE PRIMRIA Simplificando, quando a chave primria simples, ou seja, formada por um nico campo da tabela, esse campo no pode ter dois ou mais registros de mesmo valor, e tambm no pode conter nenhum registro nulo. Se a chave primria composta, ou seja, formada por mais de um campo, os valores de cada campo podem se repetir, mas no a combinao desses valores. Exemplo: a tabela 'Livros_Autores' tem como chave primria (cod_livro, cod_autor). Podem existir nessa tabela os registros: (5, 9), (5, 10), (4, 9), (9, 5)

Mas no podem existir dois registros (5, 9).

178

CHAVE PRIMRIA Podemos inserir uma chave primria durante ou aps a criao da tabela. Com a tabela j criada, o campo que escolhermos para ser a chave primria deve ter a opo NOT NULL adicionada. Na definio de chave primria, usamos o comando ALTER TABLE para inserirmos e excluirmos uma primary key.

179

CHAVE ESTRANGEIRA - CHAVE SECUNDRIA O conceito de Chave estrangeira ou Chave secundria em uso de banco de dados se refere ao tipo de relacionamento entre as tabelas de dados do banco de dados. Uma chave estrangeira chamada quando h o relacionamento entre duas tabelas. Sempre em chave estrangeira vai haver relacionamentos entre tabelas, por exemplo, se uma tabela que tem uma chave primria de outra tabela.

180

CHAVE ESTRANGEIRA - CHAVE SECUNDRIA Uma chave externa ou estrangeira um atributo ou uma combinao de atributos numa relao R2, cujos valores so necessrios para equivaler chave primria de uma relao R1. Uma chave estrangeira um campo, que aponta para a chave primria de outra tabela ou da mesma tabela. Ou seja, passa a existir uma relao entre tuplas de duas tabelas ou de uma nica tabela. A finalidade da chave estrangeira garantir a integridade dos dados referenciais, pois apenas sero permitidos valores que supostamente vo aparecer na base de dados. Esse tipo de atributo no permite excluso, modificao e/ou insero de dados em tabelas que estejam dependentes umas das outras("foreign key"), o que requer modificadores especiais, como cascade, por exemplo. Isso tambm exige uma maior ateno do administrador da base de dados, quanto prpria manipulao dos dados.

181

RELACIONAMENTOS Um relacionamento, do Modelo de Entidades e Relacionamentos traduzido para a criao de atributos com chaves externas do Modelo Relacional. Esta traduo feita ligando-se um campo de uma tabela X com um campo de uma tabela Y, por meio da incluso do campo chave da tabela Y como um campo (conhecido como chave estrangeira) da tabela X. Por meio das chaves estrangeiras, possvel implementar restries nos SGBDR. Existem alguns tipos de relacionamentos possveis no MER:

182

RELACIONAMENTOS Um para um (1 para 1) - indica que as tabelas tm relao unvoca entre si. Voc escolhe qual tabela vai receber a chave estrangeira; Um para muitos (1 para N) - a chave primria 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 tm entre si relao n..n, necessrio criar uma nova tabela com as chaves primrias das tabelas envolvidas, ficando assim uma chave composta, ou seja, formada por diversos campos-chave de outras tabelas. A relao ento se reduz para uma relao 1..n, sendo que o lado n ficar com a nova tabela criada.

183

RELACIONAMENTOS Os relacionamentos 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.

184

Potrebbero piacerti anche