2. Objetivos
• Compreender os conceitos fundamentais e as
tecnologias de banco de dados;
• Construir um modelo de dados relacional;
• Elaborar o projeto lógico do banco de dados;
• Utilizar as regras de normalização;
• Manipular dados usando álgebra relacional;
• Compreender a linguagem de consulta a
dados estruturados (SQL).
3. Introdução
• O modelo de dados relacional introduzido
por E. F. Codd (1970) possui fundamentação
matemática na Teoria dos Conjuntos.
• As colunas de uma tabela são coleções de
registros, isto é, conjuntos de dados.
• A linguagem de consulta SQL é baseada na
álgebra relacional, que provê operações para
a manipulação de conjuntos de dados que
são baseadas nas operações sobre conjuntos.
4. Introdução (2)
• As restrições de integridade e normalização
são baseadas em lógica proposicional, que é
uma formalização alternativa aos conjuntos.
• Além do modelo relacional, outros modelos
de dados (NoSQL) também são baseados na
Teoria dos Conjuntos.
• Além da Teoria dos Conjuntos, a Teoria das
Categorias, que lhe é complementar, serve
como formalismo para modelos relacionais.
6. Teoria dos Conjuntos
• Conjunto é qualquer coleção não ordenada
de objetos, que são chamados de elementos
ou membros de um conjunto, que podem ser
outros conjuntos.
• A Teoria dos Conjuntos trata das operações e
propriedades aplicáveis aos conjuntos, e das
relações com os seus elementos.
• É considerada a fundação da matemática.
7. Conceito de Relação
• Uma relação descreve como os objetos (i.e.,
conjuntos e seus elementos) são relacionados
entre si. Exemplos de relações binárias:
• Pertinência (o C) de um objeto (o), quer seja
elemento ou outro conjunto, num conjunto (C).
• Igualdade (A = B) de dois conjuntos.
• Inclusão de dois conjuntos, i.e., A é subconjunto
de B (A B), ou B é superconjunto de A (B A),
ou ainda, A B x (x A x B).
8. Conceito de Operação
• Uma operação é a transformação de um ou
mais conjuntos na forma de novo conjunto.
Exemplos de operações binárias:
• União (A B)
• Interseção (A B)
• Diferença (A - B ou AB) – todos os membros de
A que não são membros de B.
• Produto (A × B) – os pares ordenados (a, b).
• Potência (A*) – todos os possíveis subconjuntos
dos elementos de A, inclusive o vazio ().
9. Operação de Diferença
• Complemento (Ac) é a operação unária que
retorna os elementos no conjunto universo U
que não pertencem ao conjunto dado (A).
• Diferença ou Complemento Relativo (A - B,
ou A B) – retorna os elementos de A que
não pertencem à B, i.e., = { x B : x A }.
• Propriedades:
• A - B B - A (não comutativa)
• (A - B) - C = A - (B - C) (associativa)
10. Operação de Diferença Simétrica
• Diferença Simétrica (A Ɵ B, A B, ou A B) –
todos os elementos de A e B que não estão
na interseção de ambos, (A B) – (A B), ou
a união das diferenças, (A – B) (B-A).
• Operador XOR: A B = {x : (x A) (x B)}.
• Propriedades:
• A B = B A (comutativa)
• (A B) C = A (B C) (associativa)
• A (B C) = (A B) (A C) ( é distributiva)
11. Conceito de Classe
• Classe é qualquer coleção de objetos, ou de
elementos de conjunto, que compartilham
uma propriedade ou atributo comum.
• Uma classe é um conjunto quando é membro
de alguma outra classe, ou classe própria
quando não é membro de nenhuma classe.
• Classes próprias são "grandes demais" para
serem conjuntos (e.g., a classe de todos os
conjuntos, ou de todos os números ordinais).
12. Diferença entre Classe e Conjunto
• As classes são frequentemente usadas como
generalizações dos conjuntos. No entanto,
classes não são necessariamente conjuntos.
• Uma classe é uma coleção mais geral do que
um conjunto, pois pode incluir conjuntos e
outros objetos matemáticos.
• Os conjuntos podem ser elementos de outros
conjuntos, classes não podem ser elementos
de conjuntos nem de outras classes.
14. Lógica Proposicional
• A Lógica Proposicional, Lógica de Zero-Ordem
ou Lógica Sentencial, é um sistema formal de
raciocínio dedutivo por meio da manipulação
de proposições (ou afirmações) que podem
ser verdadeiras ou falsas, mas não ambas.
• Proposições são combinadas e manipuladas
usando conectivos (ou operadores lógicos),
que permitem criar proposições compostas a
partir de proposições elementares.
15. Operadores Lógicos
• Conjunção (^): combina duas proposições em
uma resultante que só é verdadeira quando
ambas forem verdadeiras.
• Disjunção (v): combina duas proposições em
uma resultante que é verdadeira quando pelo
menos uma das duas é verdadeira.
• Negação (¬): inverte o valor de verdade de
uma proposição (i.e., se é verdade, a negação
é falsa, e vice-versa).
16. Operadores Lógicos (2)
• Implicação (→): combina duas proposições
em uma resultante que é falsa só quando a
primeira proposição é verdadeira e a segunda
é falsa. Nos outros casos, é verdadeira.
• Bi-implicação, se e somente se, ou equivale a
(↔): combina duas proposições em uma
resultante que é verdadeira quando ambas
têm o mesmo valor (verdadeiras ou falsas).
18. Consequências Lógicas
• Tautologia: toda proposição composta que é
sempre verdadeira, independentemente dos
valores de verdade de suas proposições simples.
• Contradição: toda proposição composta que é
sempre falsa, independentemente dos valores
de verdade de suas proposições simples.
• Contingência: toda proposição composta que o
seu valor de verdade depende dos valores das
proposições simples que a compõem.
19. Lógica de Predicados
• A Lógica de Predicados, Lógica de Primeira
Ordem, ou Lógica Quantificacional, é um
sistema lógico mais expressivo e complexo
em comparação à Lógica Proposicional.
• Os termos sujeito, predicado e objeto são
utilizados para descrever a estrutura de uma
afirmação ou proposição.
• Esses termos são emprestados da gramática e
da análise de sentenças na linguística e são
usados de maneira semelhante na lógica.
20. Sujeito
• O sujeito é o termo ou entidade sobre a qual
uma afirmação é feita.
• Na lógica, o sujeito é representado por uma
variável ou um objeto específico (sendo um
termo literal, como nome ou um número).
• Por exemplo, na afirmação “Sócrates é um
filósofo”, “Sócrates” é o sujeito.
21. Predicado
• É toda a expressão lógica que descreve uma
propriedade (ou atributo) do sujeito, ou
ainda uma relação entre objetos.
• É como a função que mapeia um conjunto de
argumentos (objetos) para um valor-verdade
(i.e., verdadeiro ou falso): f : (x1,...,xn) {V, F}
• Por exemplo, na afirmação “Sócrates é um
filósofo”, o predicado é “é um filósofo”. Em
notação formal: é(Sócrates, um filósofo).
22. Objeto
• O objeto é um termo ou entidade que está
envolvido em uma relação com o sujeito,
conforme descrito pelo predicado.
• Na lógica, o objeto geralmente aparece como
um argumento adicional em um predicado de
múltiplos argumentos.
• Por exemplo, na afirmação “Sócrates ensina
Platão”, “Platão” é o objeto. Neste caso, o
predicado é “ensina”.
23. Elementos dos Predicados
• A Lógica de Predicados introduz variáveis e
seus quantificadores, como “para todo” (∀) e
“existe” (∃), que expressam generalizações e
restrições sobre conjuntos de objetos.
• Admite proposições que possuem relações e
funções entre objetos, o que confere maior
poder descritivo que a lógica proposicional.
• Exemplos: Existe um número natural ímpar
maior que 3 (i.e., ∃n ∈ ℕ, n > 3 ∧ n é ímpar).
24. Exemplos
• Existe um livro na minha estante de literatura
brasileira (i.e., ∃x, x está na minha estante ∧ x
é um livro de literatura brasileira).
• Existe um número natural ímpar maior que 3
(i.e., ∃n ∈ ℕ, n > 3 ∧ n é ímpar).
• Para todo animal, se é um mamífero, então é
um vertebrado (i.e., ∀x, se x é mamífero x
é vertebrado).
• Para todo número inteiro n, n + 1 é maior que
n (i.e., ∀n ∈ ℤ, n + 1 > n).
26. Resource Description Framework
• RDF é um padrão e modelo de dados da
World Wide Web Consortium (W3C) para
representar informações sobre recursos na
web de forma estruturada e semântica.
• É uma tecnologia da Web Semântica, para os
dados na web ficarem inteligíveis tanto para
computadores quanto humanos, permitindo
a integração e o compartilhamento entre os
sistemas de informação e aplicativos.
27. A Estrutura da Informação em RDF
• Um RDF representa informações sobre um recurso
como conjuntos de declarações ou afirmações (i.e.,
triplas sujeito-predicado-objeto) na forma de grafo.
• Sujeito é o recurso sobre o qual a afirmação é feita,
identificado por Uniform Resource Identifier (URI).
• Predicado é a propriedade ou relação que descreve
o sujeito, também identificado por um URI.
• Objeto é o valor da propriedade ou outro recurso
relacionado ao sujeito, que pode ser um valor literal
(e.g., um número ou uma string) ou outro URI.
28. O Uso do RDF
• As triplas RDF podem ser combinadas para
formar um grafo direcionado, onde recursos
e valores são nós e as propriedades são setas.
• A linguagem de consulta e manipulação dos
grafos RDF é a SPARQL.
• RDF pode ser serializado em formatos como
RDF/XML, Turtle, N-Triples e JSON-LD.
• RDF pode ser usado com outras tecnologias
semânticas, como ontologias (RDFS e OWL).
32. Teoria das Categorias
• Teoria das Categorias é um formalismo para
descrição formal e generalização de estruturas
abstratas e suas inter-relações.
• Foi criada por Samuel Eilenberg e Saunders
Mac Lane no início dos anos 1940 como uma
forma de unificar as áreas da matemática e
revelar conexões profundas entre elas.
• Tem sido usada em muitos campos, incluindo
álgebra, lógica e ciência da computação.
33. Definição de Categoria
• Categoria é o objeto de estudo da Teoria das
Categorias, que são constituídos de objetos e
morfismos (“setas”) que relacionam objetos.
• Os morfismos são generalizações de funções
e representam uma maneira de transformar
um objeto em outro dentro da categoria.
• A composição de morfismos é quando duas
ou mais transformações são realizadas em
sequência (e.g., f . g, ou ainda g ∘ f).
34. Propriedades das Categorias
• Composição: Se f: A B e g: B C, onde A,
B e C são objetos da categoria C, deve haver
um morfismo composto g ∘ f: A C.
• Associatividade: Se você tiver três morfismos
consecutivos f: A B, g: B C e h: C D,
então (h ∘ g) ∘ f = h ∘ (g ∘ f).
• Identidade: Para cada objeto A, deve haver
um morfismo identidade id_A: A A, tal que
para qualquer morfismo f: A B e g: B A,
temos f ∘ id_A = f e id_A ∘ g = g.
35. Exemplos de Categoria
• SET é a categoria dos conjuntos, onde objetos
são conjuntos e morfismos são funções.
• HASK é a categoria de códigos em linguagem
de programação Haskell, onde os objetos são
tipos de dados e os morfismos são funções.
• DATA é a categoria dos esquemas de bases
de dados relacionais, onde os objetos são as
relações ou tipos de dados de seus atributos
e os morfismos são os atributos (colunas).
36. Categoria DATA
• Considere D é a categoria concreta de DATA
para a definição de um esquema de base de
dados:
• Um objeto T ϵ Obj(D) é uma relação (tabela) ou
um tipo de dados;
• Um morfismo f ϵ Arr(D) é um atributo da relação
(coluna da tabela);
• Se f : T1 T2 então f é Primary Key de T2 e Foreign Key de T1;
• Se f : T1 Set então f é uma coluna de T1 e o seu tipo de dados.
• Toda composição de morfismos (f2 ◦ f1), (f1 . f2),
ou ainda f2(f1) é uma restrição de integridade.
37. Exemplo 1
CREATE TABLE employee(id int, ename varchar, hiredate
date, deptno int, PRIMARY KEY (id), FOREIGN KEY fk1
(deptno) REFERENCES department(did));
CREATE TABLE department (did int, dname varchar,
address varchar, PRIMARY KEY (did));
A coluna "deptno" na tabela "employee" é
uma chave estrangeira que faz referência à
coluna “did" na tabela "department“, que é
sua chave primária.
A palavra-chave "fk1" é um identificador
opcional usado para dar um nome à
restrição da chave estrangeira.
38. Exemplo 1
CREATE TABLE employee(id int, ename varchar, hiredate
date, deptno int, PRIMARY KEY (id), FOREIGN KEY fk1
(deptno) REFERENCES department(did));
CREATE TABLE department (did int, dname varchar,
address varchar, PRIMARY KEY (did));
fk1 : employee → department é
chave estrangeira (Foreign Key)
de “employee”, mas o seu valor
numérico é “deptno”, que deve
ser igual ao valor de “did”, chave
primária de “department”. Logo,
employee . fk1 . did = deptno,
did ◦ fk1 = deptno, ou ainda
did(fk1) = deptno é a restrição
de integridade sobre o valor de
deptno ser igual ao valor de did.
fk1 deptno
did
39. Exemplo 2
Todas as instâncias da relação “Employee” possuem
como atributo gerente (Mgr) uma outra instância da
relação “Employee”, logo a restrição de integridade
de que ambas as instâncias devem estar lotadas na
mesma instância de “Dept” precisa ser verificada:
Employee . Mgr . Dpt = Employee . Dpt .
O mesmo tipo de restrição vale para o atributo do
secretário (Secr’y) que deve estar lotado no “Dept”:
Department . Secr’y . Dpt = Department . Dept_Id.
40. Conceito de Functor
• Um functor F : C → D entre duas categorias C
e D consiste de:
• Um morfismo Ob(F) : Ob(C) → Ob(D) que liga cada
objeto em C até cada objeto em D.
• Um morfismo Ar(F) : Ar(C) → Ar(D) que liga cada
morfismo em C até cada morfismo em D.
• As composições de morfismos em C estão em D.
41. Conceito de
Transformação Natural
• Se F e G são functores entre categorias C e D,
transformação natural : F → G é a família
de morfismos para cada objeto X de C tal que
para cada f : X → Y em C, (Y)◦F(f) = G(f)◦(X)
se mantém (a condição de naturalidade).
42. Functores em DATA
• O functor Ft : D → SET é o estado da base de
dados (imagem) em determinado momento.
• A transformação natural : Ft → Ft+1 é uma
transição de estado em t para t+1 seguinte a
uma operação de alteração ou inserção de
um ou mais registros na base de dados.
43. Referências
• C. A. Heuser, Projeto de Banco de Dados, 4a.
edição, Editora Sagra Luzzatto, 1998.
• E.F. Codd, “A relational model of data for large
shared data banks”, Communications of the
ACM, vol. 13, no. 6, 1970.
https://dl.acm.org/citation.cfm?doid=362384.362685
• Donald D. Chamberlain, "Early History of SQL"
https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnu
mber=6359709