Banco de Dados PDF
Banco de Dados PDF
Banco de Dados PDF
1.
2.
SQL: ..................................................................................................................................................6
2.1 DDL: .................................................................................................................................................. 7
2.1.1 Create: ................................................................................................................................. 7
2.1.2 USE:...................................................................................................................................... 7
2.1.3 DROP: ................................................................................................................................... 7
2.1.4 SELECT DATABASE() ............................................................................................................. 7
2.1.5 Show Databases: ................................................................................................................. 8
2.1.6 Criando uma tabela: ............................................................................................................ 8
2.1.7 DROP TABLE: ...................................................................................................................... 12
2.1.8 ALTER: ................................................................................................................................ 12
2.2 DML: ............................................................................................................................................... 13
2.2.1 INSERT: .............................................................................................................................. 13
2.2.2 Consultas no SQL: .............................................................................................................. 14
2.2.3 UPDATE: ............................................................................................................................. 14
2.2.4 ELETE: ................................................................................................................................ 15
2.2.5 Comandos para Leitura de Dados: .................................................................................... 16
2.3 Stored Procedured: ........................................................................................................................ 18
2.3.1 Criando uma Stored Procedure: ........................................................................................ 20
1.
Um banco de dados pode ser compreendido como uma coleo de dados que esto relacionados e
so manipulados pelo SGBD (Sistema de Gerenciamento de banco de dados). Um Sistema Gerenciador de
Banco de Dados (SGBD) uma coleo de programas que habilitam usurios para criar e manter um Banco
de Dados. O SGBD um software de finalidade geral que facilita o processo de definio, construo e
manipulao de bancos de dados.
So conceitos de Banco de Dados:
WIEDERHOLD - Um Banco de Dados uma coleo de dados mutuamente relacionados.
CHU - Um Banco de Dados um conjunto de dados relacionados entre si.
DATE - Um Banco de Dados uma coleo de dados operacionais armazenados usados pelos
sistemas de uma determinada aplicao.
KORTH - Um Banco de Dados uma coleo de dados que contm informao de um particular
empreendimento.
ELMASRI & NAVATHE - Um Banco de Dados uma coleo de dados relacionados.
ENGLES - Um Banco de Dados uma coleo de dados operacionais usados pelo sistema de
aplicaes de uma empresa.
1.1
1.1.1
MySQL:
Para manipular o SGBD faz-se necessrio iniciar uma conexo com o mesmo. Essa conexo
estabelece a ligao entre o SGBD e a aplicao que manipular os dados. Vale ressaltar que o SGBD pode
estar em uma mquina colocada em qualquer lugar do planeta, e ainda assim ser acessada remotamente
pela aplicao.
Para estabelecer a conexo precisa-se de um usurio e uma senha para realizar o acesso. Esse
sistema possui um usurio padro chamado root e que no possui senha, no necessrio fornecer uma
senha para efetuar a conexo com o servidor. O usurio root o administrador do Banco de Dados e possui
autorizao para realizar qualquer operao dentro do MySQL. Este diferente do root do Linux, que o
responsvel pela administrao do sistema operacional. Possivelmente o acesso ao Linux durante o curso
no ser feito atravs desse usurio. Porm, como existe o administrador do banco, que por coincidncia
se chama root, ser possvel realizar qualquer operao no MySQL, mesmo no tendo acesso de
administrador no Linux.
Para estabelecer essa conexo, primeiro deve-se executar um terminal no Linux. Nesse ambiente
existem aplicaes grficas, contendo janelas, cones, imagens, etc. Por outro lado existem aplicaes que
no apresentam esses elementos grficos e, portanto, so executadas a partir de um terminal.
1.1.2
Tipos de Dados:
O MySQL apresenta um vasto conjunto de dados que permite a representao das mais variadas
informaes existentes no mundo real. Por exemplo, possvel criar uma coluna para armazenar uma
msica, um vdeo ou at mesmo uma imagem. Alm de dados mais comuns, tais como datas, nmeros,
letras e textos, dentre outros.
Para simplificar a discusso, sero descritos aqui apenas os tipos de dados relevantes para a
soluo do problema proposto no incio do captulo. Portanto, nem todos os tipos de dados existentes no
DBDesigner4, e por consequncia no MySQL, sero descritos aqui. Maiores informaes sobre todos os
tipos
de
dados
existentes
no
MySQL
podem
ser
encontradas
no
site
http://www.mysql.com/documentation.
Os tipos de dados podem ser agrupados em trs grandes grupos que so os textos e datas,
nmeros e horas. A Tabela abaixo apresenta um resumo dos tipos de atributos que sero utilizados no
modelo proposto.
CATEGORIA
TIPO
Integer
Double
Int
Nmeros
Decimal
Texto
Data / hora
Char(x)
Varchar(x)
Date
Time
Datetime
DESCRIO
Nmeros inteiros
Nmeros reais ou ponto-flutuante
Nmeros inteiros
Decimal(t,d)
T = tamanho nmeros com preciso fixa tais como moeda,
D = nmero lembrando que o ponto o separador da de casas decimais
Parte fracionria ou centavos
Texto com tamanho mximo de x caracteres
Data no formato aaaa-mm-dd
Hora no formato hh:mm:ss
Data e hora. Exibido como yyyy-mm-dd hh:mm:ss
Ao inserir uma linha ou registro em uma tabela deve-se informar um valor para cada coluna,
respeitando o tipo de dados definido para aquele atributo. Existem situaes em que o valor a ser colocado
em uma coluna no conhecido no momento da incluso dos dados. Por exemplo, se existir uma coluna
que armazena a data de falecimento dos funcionrios, essa data em geral no conhecida no momento da
incluso do registro.
Para contornar a situao existe um valor especial conhecido como NULL que denota o fato de que
a informao no conhecida. No caso da data de falecimento, pode-se utilizar o valor NULL para os
funcionrios que ainda esto vivos. possvel definir no momento da criao da tabela se as colunas
aceitam ou no este valor especial. Isso feito atravs da clusula NOT NULL, que deve ser colocada nas
colunas que no aceitaro o NULL, lembrando que por padro, qualquer coluna aceita o NULL.
importante lembrar que colunas de qualquer tipo podem receber o valor NULL.
2.
SQL:
uma linguagem procedural fundamentada no modelo relacional que responsvel por manipular
e criar Banco de Dados utilizando um SGBD. A linguagem SQL foi definida no ano de 1974 pela IBM. Sua
primeira verso teve o nome de SEQUEL Structured English Query Language. fundamentada no modelo
relacional.
Um Banco de Dados entendido como uma coleo de tabelas. De fato uma forma de se
organizar as informaes dentro do SGBD, isto , cada aplicao pode ter o seu prprio banco de dados,
onde estaro apenas as tabelas que fazem parte daquele problema.
A linguagem SQL dividida em duas partes: Linguagem para Definio de Dados (DDL Data
Definition Language), e Linguagem para Manipulao de Dados (DML Data Manipulation Language). Na
DDL encontram-se comandos para a criao e alterao de dados, tais como bancos de dados e tabelas,
permitindo, por exemplo, a definio de uma nova tabela ou at mesmo a incluso de uma coluna em uma
tabela j existente. J a DML apresenta os comandos para a insero, alterao, excluso e leitura dos
dados contidos nessas tabelas.
2.1
DDL:
DDL (Data Definition Language) - Linguagem para Definio de Dados contm os comandos para a
criao de Bancos de Dados, tabelas, bem como a alterao e excluso dos mesmos. So exemplos de
comandos DDL:
CREATE DATABASE/SCHEMA, TABLE, VIEW, FUNCTION, INDEX
DROP DATABASE/SCHEMA, TABLE, VIEW, INDEX
TRUNCATE TABLE
ALTER DATABASE/SCHEMA, TABLE, VIEW
MSCK REPAIR TABLE (or ALTER TABLE RECOVER PARTITIONS)
SHOW DATABASES/SCHEMAS, TABLES, TBLPROPERTIES, PARTITIONS, FUNCTIONS, INDEX[ES],
COLUMNS, CREATE TABLE
DESCRIBE DATABASE, table_name, view_name
2.1.1
Create:
O primeiro passo para se trabalhar com um Banco de Dados cri-lo utilizando a seguinte sintaxe:
CREATE DATABASE <nomedobanco>;
Observe o exemplo a seguir:
2.1.2
USE:
USE < nomedobanco> ;
2.1.3
DROP:
SELECT DATABASE()
O comando Select exibe o database atual o qual est se trabalhando. Para exibir o banco unepi, o
qual foi criado anteriormente, basta seguir a sintaxe abaixo:
2.1.5
Show Databases:
Para exibir os Bancos de Dados criados no SGBD, basta seguir o seguinte comando:
SHOW DATABASES ;
2.1.6
Para criar uma tabela imprescindvel identificar, inicialmente, os atributos e seus tipos de dados,
bem como as restries em relao ao valor NULL, isto , se havero colunas com valores indefinidos. Alm
disso, necessrio identificar a chave primria da tabela, que o conjunto de colunas que referenciam de
forma nica cada registro da tabela.
Finalmente, para as tabelas que participam de algum relacionamento necessrio determinar as
chaves estrangeiras e as restries que se aplicam sobre elas. Nesse caso, o objetivo da chave estrangeira
identificar os registros que participam da relao e impor as regras de integridade que regem o
relacionamento. Por exemplo, em um relacionamento entre funcionrios e equipes, deve-se garantir que
no haver um membro da equipe que no esteja cadastrado na tabela de funcionrios. Ou em um
relacionamento entre pais e filhos deve-se garantir que no haver um filho sem um pai.
Para criar a tabela no MySQL desse exemplo utiliza-se o comando CREATE TABLE. Observe a seguir:
CREATE TABLE nome_da_tabela (
Coluna1 TIPO_COLUNA_1,
Coluna 2 TIPO_COLUNA_1,
...
Coluna N TIPO_COLUNA_N,
PRIMARY KEY (colunas),
[FOREIGN KEY (colunas) RESTRIES]
) [ENGINE=tipo];
Um modelo relacional composto por tabelas onde, individualmente, cada uma possui um nome.
Cada tabela formada por linhas e colunas. Uma linha composta por um conjunto de campos ou
atributos (Linha: Tupla, Registro). Cada campo identificado com um nome.
Um BD relacional composto por chaves que servem para identificar e estabelecer relaes entre
linhas de uma tabela. Os tipos de Chaves so:
Chave Primria: uma coluna ou atributo que identifica unicamente cada linha da tabela.
Chave Estrangeira: Coluna ou combinao de colunas que aparecem na chave primria de outra
tabela.
Como descrito na listagem anterior, para criar uma tabela deve-se especificar o nome de cada
coluna ou atributo que a constitui, seus tipos e a sua chave primria. Nota-se que a chave estrangeira
opcional, portanto, aparece entre colchetes ([FOREIGN KEY]).
No MySQL possvel escolher o tipo de tabela a ser criado (ENGINE), nessa apostila ser sempre
utilizado o InnoDB, que possui suporte ao conceito de restries de chaves estrangeiras.
Exemplo:
Describe <nomedatabela>;
10
As demais tabelas do banco curso apresentam relacionamentos entre elas, obedecendo as regras
de integridade definidas pelo modelo lgico da aplicao.
CREATE TABLE funcionarios (
cpf char(20) NOT NULL,
Cargos_codigo int(10) unsigned NOT NULL,
nome char(60) NOT NULL,
nascimento date NOT NULL,
telefone char(20) NOT NULL,
PRIMARY KEY (cpf),
FOREIGN KEY (Cargos_codigo) REFERENCES cargos (codigo))
ENGINE=InnoDB;
CREATE TABLE obras (
codigo int(10) unsigned NOT NULL auto_increment,
Empresa_codigo int(10) unsigned NOT NULL,
nome char(50) NOT NULL,
inicio date NOT NULL,
termino date NOT NULL,
PRIMARY KEY (codigo),
FOREIGN KEY (Empresa_codigo) REFERENCES empresa (codigo) ON DELETE
CASCADE ON UPDATE CASCADE)
ENGINE=InnoDB;
CREATE TABLE obras_tem_equipes (
Obras_codigo int(10) unsigned NOT NULL,
Equipes_codigo int(10) unsigned NOT NULL,
PRIMARY KEY (Obras_codigo,Equipes_codigo),
FOREIGN KEY (Obras_codigo) REFERENCES obras (codigo) ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (Equipes_codigo) REFERENCES equipes (codigo) ON DELETE
CASCADE ON UPDATE CASCADE)
ENGINE=InnoDB;
Percebe-se que nessas tabelas existe, alm da chave primria, a definio de chaves estrangeiras, j
que estas tabelas participam de relacionamentos. No caso da tabela de funcionrios, os registros desta
esto associados aos registros existentes na tabela de cargos. Ou seja, todo funcionrio tem um cargo,
onde esta relao salientada pela coluna Cargos_codigo da tabela de funcionrios.
Uma chave estrangeira nada mais que a chave primria de uma tabela colocada em outra tabela
para identificar a relao entre elas. Para cri-la deve-se indicar qual o conjunto de colunas que a compe,
bem como a tabela e coluna que ela referencia.
No exemplo tem-se FOREIGN KEY (Cargos_codigo) REFERENCES cargos (codigo). Significa dizer que
os valores armazenados na coluna Cargos_codigo da tabela de funcionrios, deve ser um valor contido na
coluna cdigo da tabela de cargos. Dessa forma, o SGBD assegura que nenhum funcionrio ter um cargo
que no esteja cadastrado na tabela de cargos.
Existe ainda a situao onde uma alterao ou excluso de um cargo pode levar a uma
inconsistncia de dados na tabela de funcionrios. No caso de uma remoo ou modificao de um cargo
para o qual existam funcionrios cadastrados, deve-se garantir que o funcionrio no ficar com um cargo
invlido.
Para isso, foram especificadas as restries de chave estrangeira ON UPDATE CASCADE e ON
DELETE RESTRICT. Isto , quando o cdigo de um cargo for alterado o SGBD propagar automaticamente a
modificao para todos os funcionrios que estejam cadastrados com esse cargo (CASCADE). J no caso da
remoo, o sistema no permitir a excluso de cargos que apresentem funcionrios associados a ele
(RESTRICT). Vale ressaltar que a opo CASCADE ou RESTRICT pode ser aplicada s clusulas UPDATE e
DELETE, de acordo com a restrio imposta pelo modelo.
11
Para ilustrar a utilizao das clusulas RESTRICT e CASCADE, considere um cadastro de funcionrios
e os seus dependentes ou filhos. Se o CPF do funcionrio, que a chave primria for alterado necessrio
alterar o CPF na tabela de filhos, pois ao contrrio, a relao entre as duas entidades se perderia, j que o
filho estaria associado com um CPF de um funcionrio inexistente. Dessa forma, pode-se inibir a alterao
do CPF do pai durante um UPDATE, empregando a clusula RESTRICT. Pode-se tambm, possibilitar a
alterao automtica do CPF em ambas as tabelas atravs do CASCADE.
O mesmo raciocnio se aplicaria no momento da excluso de um funcionrio, isto , no comando
DELETE. Ao excluir um funcionrio no se pode manter os registros e seus eventuais dependentes, pois
dessa forma teramos registros rfos na tabela de dependentes. Portanto, pode-se inibir a remoo dos
funcionrios que tenham filhos com o RESTRICT, ou forar a excluso dos filhos com a opo CASCADE.
Todo esse mecanismo visa manuteno da consistncia das informaes.
Uma nica tabela pode conter mais de uma chave estrangeira, dependendo de como esto
organizados os relacionamentos entre elas. Isto o que ocorre no caso da tabela obras_tem_equipes, que
se relaciona com as tabelas obras e equipes, simultaneamente. Por isso apresenta duas chaves
estrangeiras, referenciando a chave primria de cada tabela. O grande benefcio das chaves estrangeiras
o fato de que o prprio SGBD assegura que as restries de integridade pertinentes ao modelo sero
aplicadas, mesmo que o usurio do banco desconhea as regras.
2.1.7
DROP TABLE:
Para remover uma tabela, utiliza-se o comando DROP TABLE conforme sintaxe abaixo:
2.1.8
ALTER:
Para contemplar essa situao seria necessria a incluso de uma nova coluna do tipo data tabela
de funcionrios, previamente criada. Em outro cenrio pode-se remover uma coluna, alterar o seu nome,
ou at mesmo o tipo de dados que ela armazena. Imaginando que o nome do funcionrio tenha sido
definido inicialmente com tamanho mximo de 15 caracteres ou letras, e surgiu um novo funcionrio com
um nome extenso e que requer mais que 15 caracteres para ser armazenado. Neste caso, o tipo do dado
dever ser alterado para satisfazer esta nova condio. O comando para modificar a estrutura de tabelas
o ALTER TABLE, que pode ser utilizado para os propsitos apresentados anteriormente.
Para a utilizao do comando ALTER TABLE, observe a sintaxe abaixo:
12
DML:
A segunda parte da SQL que se refere manipulao de dados, conhecida como DML (Data
Manipulation Language), significa Linguagem para Manipulao de Dados. Essa linguagem permite
basicamente a insero, alterao, excluso e leitura das informaes mantidas nas diversas tabelas de um
Banco de Dados. Vale ressaltar que a DML apresenta comandos para a escrita e alterao de dados, bem
como para a leitura de informaes. Desse modo, inicialmente sero discutidos os comandos para a escrita
de dados, permitindo preencher o Banco de Dados, e posteriormente, ser apresentado o comando para
ler as informaes previamente armazenadas.
2.2.1
INSERT:
O comando INSERT consiste em informar o nome da tabela que se deseja inserir os dados, uma lista
com o nome das colunas dessa tabela para as quais sero informados os dados, e finalmente, os dados para
cada coluna informada anteriormente, deve coincidir com o nmero de valores informados. Caso contrrio,
o sistema emitir uma mensagem de erro e no executar a insero. Para incluir dados utiliza-se o
comando INSERT, cuja sintaxe :
INSERT INTO nome_data_tabela (lista_de_colunas) VALUES (lista_de_valores)
Exemplos:
INSERT INTO `empresa` VALUES (1,'Empresa de banco LTDA',
'888.888.8888-0001/88', '(31)3333-4444');
INSERT INTO `empresa` VALUES (2,'Empresa do curso LTDA',
'999.999.9999-0001/88', '(31)4444-55555');
INSERT INTO equipes (codigo, nome) VALUES (1, 'Equipe engenheiro');
INSERT INTO equipes (codigo, nome) VALUES (2, 'Equipe pedreiros');
INSERT INTO equipes (codigo, nome) VALUES (3, 'Equipe arquitetos');
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone,Codigo_equipe) VALUES
('111.111.111-11', 1, '1970-10-12', 'Jos de Alencar', '(31)3333-3333', 1);
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES
('222.222.222-22', 3, '1967-11-21', 'Paulo Goulart', '(31)4444-44444', 2);
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES
('333.333.333-33', 3, '1987-11-21', 'Antnio Pereira','', 2);
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES
('444.444.444-44', 3, '1975-12-10', 'Carlos de Nbrega, '(31)5555-5544', 2);
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe)
VALUES ('555.555.555-55', 2, '1977-06-23', 'Maria de Souza Melo, '(31)7777-5544', 3);
13
2.2.2
Consultas no SQL:
2.2.3
UPDATE:
Existem situaes em que h necessidade de modificar uma informao armazenada na tabela, por
exemplo, considera-se a alterao de telefone de um determinado funcionrio, ou ainda a mudana na
data de trmino de uma determinada obra.
O UPDATE permite fazer atualizaes dos valores dos atributos das nossas tabelas. No nosso
exemplo inserimos na tabela a cliente cujo nome Marina Pereira. Para mudar o nome da cliente
utilizaremos o UPDATE.
Sintaxe:
UPDATE tabela
SET atributo=novo_valor
Where atributo =valor_antigo
14
Exemplo:
2.2.4
ELETE:
Finalmente, os dados armazenados em uma base de dados podem ser excludos por vrias razes.
Por exemplo, a sada de um funcionrio da empresa deve eliminar o registro dele da tabela de funcionrios.
Outra situao seria a sada de uma equipe da execuo de uma determinada obra, isto , o registro que
relata esse fato deve ser eliminado da tabela Obras_tem_equipes. Para a excluso de linhas de uma tabela
utiliza-se o comando DELETE, cuja sintaxe :
15
2.2.5
A consulta em Bancos de Dados efetuada atravs do comando SELECT. Uma sintaxe simplificada
para esse comando :
SELECT lista-de-dados
FROM lista-de-tabelas
WHERE condio-de-seleo
Onde:
lista-de-dados = refere-se s colunas que existiro no conjunto resposta da consulta.
lista-de-tabelas = refere-se s tabelas que sero utilizadas como fonte de dados para a
consulta.
condio-de-seleo = ser utilizada para a seleo de linhas da(s) tabela(s) consultada(s).
O uso de * (asterisco) aps a clusula SELECT implica dizer que alteraes na estrutura de uma
tabela podem modificar o resultado da consulta; por exemplo, se uma nova coluna includa em uma
tabela, o resultado da consulta ir incluir a nova coluna.
Para selecionar todas as linhas da tabela alunos:
Figura 12 Seleciona todos os dados da tabela aluno onde o nome esteja igual Marina Pereira
SELECT lista_de_colunas
FROM nome_da_tabela
WHERE critrio_de_seleo
GROUP BY lista_de_colunas
HAVING critrio_de_seleo_no_resultado
ORDER BY lista_de_colunas
Clusulas adicionais:
INTO: especifica uma nova tabela que conter o resultado da consulta;
ORDER BY: classifica o resultado da consulta;
16
GROUP BY: agrupa as linhas das consultas com base nos valores de uma ou mais colunas;
HAVING: especifica as condies usadas para filtrar agrupamento de dados no resultado da
consulta. S deve ser usado com o GROUP BY.
Quando se realiza uma seleo, os dados recuperados no esto ordenados. O SQL prev a clusula
ORDER BY para realizar uma ordenao dos dados selecionados.
DESCRIO
retorna a mdia dos valores da coluna
se item for uma coluna, ser retornado o nmero de valores no NULL nessa
coluna.
Se a palavra-chave DISTINCT for colocada na frente do nome da coluna, ser
17
MIN(coluna)
MAX(coluna)
SDT(coluna)
SDTDEV(coluna)
SUM(coluna)
retornado
o
nmero
de
valores
distintos
nessa
coluna.
Se for passado COUNT(*), ser retornado o nmero total de registros
independente de quantos tenham valor NULL.
retorna o valor mnimo da coluna
retorna o valor mximo da coluna
retorna o desvio padro dos valores da coluna
o mesmo que SDT(coluna)
retorna a soma dos valores da coluna
DESCRIO
Testa se dois valores so iguais
Testa se um valor maior que outro
Testa se um valor menor que outro
Testa se um valor menor ou igual a outro
Testa se dois valores so diferentes
Testa se um campo no est vazio
Testa se um campo est vazio(nulo, ou seja, nada foi inserido nele, nem um espao em
branco)
Testa se um valor est entre um valor mnimo(inclusive) e um valor mximo (inclusive)
Testa se um valor pertence a um conjunto
Testa se um valor no pertence a um conjunto
Testa se um valor corresponde a um padro (% equivale ao conhecido *, o curinga)
Testa se um valor no corresponde a um padro ( _ equivale ao curinga que
corresponde a um caracter)
Testa se um valor corresponde a uma expresso regular
Para especificar mais de uma condio para a pesquisa use as palavras and e or:
Se quiser selecionar registros que atendam a CONDIO1 e a CONDIO2, faa assim:
select CAMPOS
from TABELA
where CONDIO1 and CONDIO2;
Se quiser selecionar registros que atendam a CONDIO1 ou a CONDIO2, faa assim:
select CAMPOS
from TABELA
where CONDIO1 or CONDIO2;
2.3
Stored Procedured:
Para a elaborao de um sistema baseado em um Banco de Dados relacional preciso passar por
vrias etapas a fim de se determinar qual a estrutura final do mesmo. Primeiramente, foram apresentadas
as questes ligadas modelagem de dados. Nessa etapa foram definidas as entidades que compem o
sistema, bem como os seus atributos e as regras de integridade que se aplicam aos dados. O produto final
da etapa de modelagem o modelo lgico do Banco de Dados conhecido como modelo EntidadeRelacionamento, ou somente modelo ER. Essa uma forma de representar o Banco de Dados graficamente
permitindo a documentao do sistema.
18
19
2.3.1
Sintaxe:
20