Академический Документы
Профессиональный Документы
Культура Документы
Sidney de Castro
1
Faculdade de Engenharia Celso Daniel - FAENG
Grupo de estudos Tecnologia WEB - Engenharia da Computação
sidcast@gmail.com
Sumário
2 Algebra Relacional 5
2.1 Definições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Normalização de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 Exercı́cio Resolvido - Normalização de Dados . . . . . . . . . . . . . . 8
2.5 Exercı́cio sobre Normalização de Dados . . . . . . . . . . . . . . . . . . 10
2.6 Relação Entre Entidades . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6.1 Relação Hierárquica . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6.2 Relação Simétrica . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6.3 Relação Recursiva . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Modelagem de Dado 13
3.1 Dado ou Processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Diagrama de Entidade e Relacionamento DER . . . . . . . . . . . . . . . 15
3.3 Validação do DER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5 Introdução ao SQL 20
5.1 Origem e Evolução da SQL . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.2 Palavras-chaves em SQL . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2.1 DML - Linguagem de Manipulação de Dados . . . . . . . . . . . 21
5.2.2 DDL - Linguagem de Definição de Dados . . . . . . . . . . . . . 21
5.2.3 DCL - Linguagem de Controle de Dados . . . . . . . . . . . . . 21
5.2.4 DTL - Linguagem de Transação de Dados . . . . . . . . . . . . . 22
5.2.5 DQL - Linguagem de Consulta de Dados . . . . . . . . . . . . . 22
6 ANEXOS 25
1. Sistema de Gerenciamento de banco de dados
Banco de dados (ou base de dados), é um conjunto de registros dispostos em estrutura
regular que possibilita a reorganização dos mesmos e produção de informação. Os bancos
de dados relacionais representam a principal ferramenta de armazenamento e recuperação
de informação que existe nos dias de hoje. Um banco de dados normalmente agrupa
registros utilizáveis para um mesmo fim. A forma de se organizar estes dados em uma
base é pode ser definida como uma álgebra relacional.
Os Bancos de dados relacionais (BDR) surgiram em meados da década de 1970.
Porém, apenas alguns anos mais tarde as empresas passaram a utilizá-los no lugar de
arquivos planos (do inglês flat file), bancos de dados hierárquicos e em rede.
Em 1987, Edgar Frank Codd [Codd 1987], criador do modelo relacional, publicou
um artigo onde definia 12 regras para que um Sistema Gerenciador de Banco de Dados
(SGBD) fosse considerado relacional:
1. Regra Fundamental:
Um SGBD relacional deve gerenciar seus dados usando apenas suas capacidades
relacionais
2. Regra da informação:
Toda informação deve ser representada de uma única forma, como dados em uma
tabela
3. Regra da garantia de acesso:
Todo dado (valor atômico) pode ser acessado logicamente (e unicamente) usando
o nome da tabela, o valor da chave primária da linha e o nome da coluna.
4. Tratamento sistemático de valores nulos:
Os valores nulos (diferente do zero, da string vazia, da string de caracteres em
brancos e outros valores não nulos) existem para representar dados não existentes
de forma sistemática e independente do tipo de dado.
5. Catálogo dinâmico on-line baseado no modelo relacional:
A descrição do banco de dados é representada no nı́vel lógico como dados or-
dinários (isso é, em tabelas), permitindo que usuários autorizados apliquem as
mesmas formas de manipular dados aplicada aos dados comuns ao consultá-las.
6. Regra da sub-linguagem compreensiva:
Um sistema relacional pode suportar várias linguagens e formas de uso, porém
deve possuir ao menos uma linguagem com sintaxe bem definida e expressa por
cadeia de caracteres e com habilidade de apoiar a definição de dados, a definição
de visões, a manipulação de dados, as restrições de integridade, a autorização e a
fronteira de transações.
7. Regra da atualização de visões:
Toda visão que for teoricamente atualizável será também atualizável pelo sistema.
8. Inserção, atualização e eliminação de alto nı́vel:
A capacidade de manipular a relação base ou relações derivadas como um opera-
dor único não se aplica apenas a recuperação de dados, mas também a inserção,
alteração e eliminação de dados.
9. Independência dos dados fı́sicos:
Programas de aplicação ou atividades de terminal permanecem logicamente inal-
teradas quaisquer que sejam as modificações na representação de armazenagem
ou métodos de acesso internos.
10. Independência lógica de dados:
Programas de aplicação ou atividades de terminal permanecem logicamente inal-
teradas quaisquer que sejam as mudanças de informação que permitam teorica-
mente a não alteração das tabelas base.
11. Independência de integridade:
As relações de integridade especı́ficas de um banco de dados relacional devem ser
definidas em uma sub-linguagem de dados e armazenadas no próprio banco (e não
em programas).
12. Independência de distribuição:
A linguagem de manipulação de dados deve possibilitar que as aplicações
permaneçam inalteradas estejam os dados centralizados ou distribuı́dos fisica-
mente.
13. Regra da Não-subversão:
Não deve ser possı́vel subverter ou ignorar as regras de integridade e restrições
definidas.
Os Bancos de Dados Relacionais foram desenvolvidos para prover acesso facili-
tado aos dados, possibilitando que os usuários utilizassem uma grande variedade de abor-
dagens no tratamento das informações. Pois, enquanto em um banco de dados hierárquico
os usuários precisam definir as questões de negócios de maneira especı́fica, iniciando pela
raiz do mesmo, nos Bancos de Dados Relacionais os usuários podem fazer perguntas re-
lacionadas aos negócios através de vários pontos. A linguagem padrão dos Bancos de
Dados Relacionais é a Structured Query Language, ou simplesmente SQL, como é
mais conhecida.
Podemos verificar no link a seguir um comparação entre os atuais banco relacio-
nais: http://en.wikipedia.org/wiki/Comparison of relational database management systems
Vamos recordar dos componentes que um software deve apresentar:
• A interface gráfica garante (GUI) a definição dos processos a que se aplica esta
parte do sistema.
• As regras de negócio são os algoritmos que escrevemos
• Os dados são armazenados em um repositório externo que pode ser compartilhado
por várias pessoas.
2.1. Definições
Vamos definir os elementos gráficos e suas funcionalidades:
• Entidades - Objeto do mundo real do qual desejamos quardar alguma informação.
Ex: Carro, Aluno, MovimentaçãoDeEstoque.
• Atributo - É uma caracterı́stica da Entidade.
Ex Carro.cor, Carro.ano, Aluno.nome.
• Linha da Tabela - É o conjunto de atributos que definem uma ocorrência (objeto
do mundo real).
• Valor do Atributo - É o valor que o atributo assume para cada linha da tabela.
• Chave da Entidade É o atributo cujo valor não se repete para nenhuma outra
ocorrencia dentro de uma entidade.
• Tipo do Atributo - É o domı́nio de dado que o atributo assume, ou seja, quais
valores podem ser atribuı́dos a este atributo
Ex:
Double - para valores em ponto flutuante
Integer - para valores inteiros
String/VarChar(n) - para cadeia de caracter.
• Chave Estrangeira - É o atributo que está presente na entidade e não é chave,
existe com a finalidade de permitir o relacionamento entre esta entidade e outra
onde este atributo é chave.
2.2. Funções
A álgebra relacional é uma forma de cálculo sobre conjuntos ou relações. Há seis
operações fundamentais na álgebra relacional. Estas operações são: seleção, projeção,
renomear, produto cartesiano, união e diferença entre conjuntos. Todas essas
operações produzem uma nova relação como seu resultado. Em adição às operações
fundamentais há outras de uso comum que são frequentemente utilizadas: interseção de
conjuntos, junção natural, divisão e junção theta.
Uma aplicação prática da álgebra relacional é na execução de consultas a bancos
de dados relacionais. Por essa razão, foram criadas novas operações, denominadas es-
tendidas, que são: Eliminação de duplicatas, ordenação, agrupamento e agregação
e junção externa. As álgebras relacionais recebiam pouca atenção até a publicação do
modelo relacional de dados [Codd 1970]. Codd propôs tal álgebra como uma base para
linguagens de consulta em banco de dados.
Como em qualquer álgebra, alguns operadores são primitivos e os outros, que são
descritos em termos dos primitivos e definidos como derivados. É útil que a escolha dos
operadores paralelos primitivos faça uso dos operadores lógicos primitivos. Os seis ope-
radores primitivos de Codd na álgebra são o de seleção, projeção, produto cartesiano,
união, diferença e renomeação. Estes seis operadores são fundamentais no sentido de
que nenhum deles pode ser omitido sem perder poder expressivo.
• Projeção - Escolha dos atributos que serão listados.
Ex: Na figura 3(b) vemos o resultado de P(Aluno.nome), que é a projeção da
tabela aluno
• Seleção - É a restição das linha que serão apresentadas por algum critério cuja o
resultado verdadeiro da expressão satisfaça. Uma expressão faz uso dos operado-
res relacionais (¿, ≥, ¡, ≤, =, 6= ).
Ex: Selecionar os alunos da computação.
P(Aluno.nome,Aluno.disciplina;S(Aluno(Aluno.disciplina=’computacão’))
(a) Identificação das Entidades (b) Definição das Chaves das Entidades
Na prática podemos definir uma relação como sendo a junção natural (ver figura 5)entre
duas entidades. Verifica-se que a ligação ocorre com a identificação de dois atributos um
em cada entidade. Geralmente o atributo é chave na primeira entidade e chave estrangeira
na segunda entidade, se a situação é esta, então está definida a relação de hierarquia entra
as entidades. Esta relação de hierarquia pode ser comparada a relação de parentesco entre
pai e filho, um pai tem diversos filhos (onde o atributo é chave estrangeira) mas um filho
apenas um pai (onde o atributo é chave).
Usando o programa DBDesignerr podemos observar na figura 10 uma
representação da relação Hierárquica existente entre as entidades PROFESSOR e
ALUNO. Nesta representação deixamos o programa definir chaves e criar a relação sem
interferir. O programa decidiu criar os atributos PROFESSOR idPROFESSOR e definiu
com FK (FOREIGN KEY ou Chave Estrangeira).
Para diferenciar o nome da entidade dos atributos usamos letra maiúscula para
entidade e as regras de nomeação da UML para os atributos.
Na conexão da relação entre as entidade encontramos seu nome (Rel 01) e um
losango com um lado sem preenchimento e outro preenchido. Do lado sem o preenchi-
mento interpretamos com sendo de cardinalidade1 igual a 1 e do outro lado como sendo
n.
Supondo que em duas entidades apresentes possuam uma relação com cardinalidade n
em ambas as entidades e esta relação é dado por atributos chaves dos dois lados. Isto
define uma relação de simetria entre as entidades. Um exemplo desta situação é o caso
1
Cardinalidade para a teoria dos conjunto é a quantidade de ocorrências de elementos no conjunto
do FONECEDOR (que fornece produtos) e o PRODUTO (que pode ser fornecido por
diversos fornecedores), verifique esta situação na figura 11.
Ao criarmos as duas relação percebemos que um Fornecedor só produzirá um
produto e ao contrário a situação é a mesma, um Produto será comprado de um único
fornecedor 2 .
2
procure verificar esta afirmação fazendo um exemplo e colocando dados nas duas entidades
3. Modelagem de Dado
Um software é uma das poucas maneiras possı́vel de capturar e usar o conhecimento de
alguém colocando este conhecimento a serviço de outro. Poderı́amos pensar em livros ou
nas escolas, mas a capacidade de interação do software é algo muito superior.
Um software é composto basicamente por três elementos: Os algoritmos; A inter-
face com o usuário; A base de dado. Com o algoritmo pretendemos capturar o comporta-
mento, com a interface temos a oportunidade de definir a ordem em as coisas acontecem
e com os dados temos a memória e relacionamos com as etapas anteriores.
A Engenharia de Software é a ciência da computação aplicada na transformação
do computador em uma ferramenta de trabalho para os seus utillizadores.
Segundo Pressman [Presman 2005], as práticas de engeharia de software se inten-
sificam com o agravamento dos problemas relativos ao software.
• A sofisticaçãodos dos problemas ultrapassam nossa capacidade de construir
softwares que extraiam o potencial oferecido pelo hardware.
• Nossa capacida de construir software de qualidade não pode acompanhar a de-
manda por novas aplicações.
• Nossa capacidade de manter os softwares existentes foi ameaçada por projetos
ruins e recursos inadequados.
Observa-se nestas considerações que a Engenharia de Software trata intimamente
das limitações humanas em criar software.
Em nossa disciplina Banco de Dados vamos focar nas questões relativas ao arma-
zenamento e recuperação de dados.
01-Requisito: CADASTRO
• O gerente faz o cadastramento do cliente.
• O gerente faz o cadastramento do produto.
• O gerente faz o cadastramento do funcionário.
• O gerente faz o cadastramento do fornecedor.
02-Requisito: SERVIÇO
0n-Requisito: GESTÃO
Em todo sistema comercial a gestão e do negócio é a parte mais impor-
tante e o motivo da implantação do sistema logo é neste momento que
devemos apresentar o maior nı́vel de detalhes. Devemos explicar até onde
vai a automação que se pretende fazer.
Para atender aos requisitos o modelo deve estar apto a suportar a implementação
de funcionalidades para responder as perguntas:
1. Qual é o volume total de gasolina vendida no perı́odo?
2. Qual é o volume vendido por bomba no dia perı́odo
3. Lista de vendas por funcionário por dia.
4. Etc.
Então usando nosso conhecimento de álgebra relacional vamos responder:
1. Listar:
Da tabela VENDACOMBUSTIVEL
Projeção(Seleção.(dataVenda=perı́odo),Valor
P Total)
.......... lista.precoV enda ∗ litros
Resultado
V alorT otal = 2, 5 ∗ 20 + 2, 5 ∗ 40 + 1, 8 ∗ 50
2. Para cada BOMBA lista:
..........Da tabela VENDACOMBUSTIVEL
..........Projeção(Seleção(dataVenda=perı́odo),Bomba,Valor
P Total)
.................... lista.precoV enda ∗ litros
Resultado
Bomba1 = 2, 5 ∗ 20 + 2, 5 ∗ 40 + 1, 8 ∗ 50
Bomba2 = 1, 82 ∗ 30
BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode ser
usado para marcar o começo de uma transação de banco de dados que pode ser comple-
tada ou não. COMMIT envia todos os dados das mudanças permanentemente. ROLL-
BACK faz com que as mudanças nos dados existentes desde que o último COMMIT ou
ROLLBACK sejam descartadas. COMMIT e ROLLBACK interagem com áreas de con-
trole como transação e locação. Ambos terminam qualquer transação aberta e liberam
qualquer cadeado ligado a dados. Na ausência de um BEGIN WORK ou uma declaração
semelhante, a semântica de SQL é dependente da implementação.
Embora tenha apenas um comando, a DQL é a parte da SQL mais utilizada. O comando
SELECT permite ao usuário especificar uma consulta (query) como uma descrição do re-
sultado desejado. Esse comando é composto de várias cláusulas e opções, possibilitando
elaborar consultas das mais simples às mais elaboradas. As cláusulas são condições de
modificação utilizadas para definir os dados que deseja selecionar ou modificar em uma
consulta.
Cláusulas
• FROM - Utilizada para especificar a tabela que se vai selecionar os registros.
• WHERE - Utilizada para especificar as condições que devem reunir os registros
que serão selecionados.
• GROUP BY - Utilizada para separar os registros selecionados em grupos es-
pecı́ficos.
• HAVING - Utilizada para expressar a condição que deve satisfazer cada grupo.
• ORDER BY - Utilizada para ordenar os registros selecionados com uma ordem
especifica.
• DISTINCT - Utilizada para selecionar dados sem repetição.
Operadores Lógicos
• AND - E lógico. Avalia as condições e devolve um valor verdadeiro caso ambos
sejam corretos.
• OR - OU lógico. Avalia as condições e devolve um valor verdadeiro se algum for
correto.
• NOT - Negação lógica. Devolve o valor contrário da expressão.
Operadores Relacionais
• < - Menor que
• > - Maior que
• <> - Diferente de
• <= - Menor ou Igual a
• >= - Maior ou Igual a
• = - Igual a
• BETWEEN - Utilizado para especificar um intervalo de valores.
• LIKE - Permite a utilização de expressões regulares simples.
Funções de Agregação
• AVG - Utilizada para calcular a media dos valores de um campo determinado.
• COUNT - Utilizada para devolver o número de registros da seleção.
• SUM - Utilizada para devolver a soma de todos os valores de um campo determi-
nado.
• MAX - Utilizada para devolver o valor mais alto de um campo especificado.
• MIN - Utilizada para devolver o valor mais baixo de um campo especificado.
Referências
Codd, E. F. (1970). A relational model of data for large shared data banks. Commun.
ACM, 13(6):377–387.
Codd, E. F. (1987). More commentary on missing information in relational databases
(applicable and inapplicable information). 16(1):42–50.
Presman, R. S. (2005). Engenharia de Software. Makron Books, São Paulo.
6. ANEXOS
Código SQL para a criação de tabelas gerado automaticamente pelo DBDesignerr .