O que é WinRDBI - IME-USP

Transcription

O que é WinRDBI - IME-USP
O que é WinRDBI
O WinRDBI (Windows Relational DataBase Interpreter) é uma
ferramenta educacional utilizada pela Universidade do Estado do
Arizona, e que fornece uma abordagem ativa para entender as
capacidades das seguintes linguagens de consulta para bancos de dados
relacionais:
–
–
–
–
Álgebra Relacional
Cálculo Relacional de Domínio
Cálculo Relacional de Tupla
SQL
O WinRDBI foi fundamentado na tecnologia de banco de dados
dedutivos que utiliza a linguagem lógica Amzi! Prolog and Logic
Server para consultar instâncias do banco de dados armazenadas como
fatos lógicos e utiliza a API Swing Java para estabelecer a GUI. O
WinRDBI pode ser executado tanto em Windows quanto em Linux.
Understanding Relational Database Query Languages
Onde obter WinRDBI?
O WinRDBI pode ser obtido no endereço:
http://www.eas.asu.edu/~winrdbi/download.html.
Ele é totalmente livre e só se exige o seu registro.
Understanding Relational Database Query Languages
Visão geral do WinRDBI
Vários recursos estão disponíveis para aprender o
WinRDBI. Para começar, existem duas
demonstrações em Flash que exibem o básico do
que o WinRDBI pode fazer. Para assitir, clique
nos links abaixo:
Introdução ao WinRDBI (approx 6 mins)
Criando um banco de dados com WinRDBI
Understanding Relational Database Query Languages
WinRDBI
Windows-based Relational DataBase Interpreter
http://www.eas.asu.edu/~winrdbi
An educational tool that provides an interactive
approach to learning relational database query
languages.
Relational algebra
Domain Relational Calculus (DRC)
Tuple Relational Calculus (TRC)
SQL
Understanding Relational Database Query Languages
User Interface
Multiple Query Panes:
one query language is
associated with each pane;
result of queries displayed
in the bottom subwindow
of the query pane
One Schema Pane:
displays the schema and
instance of the currently
opened relational database
Understanding Relational Database Query Languages
ICONS
new database
paste
new query
new table
open
delete table
save
insert tuple
save all
delete tuple
print
find
cut
replace
copy
execute
Understanding Relational Database Query Languages
Syntax Conventions
Since the heart of WinRDBI is written in Prolog
(with Java used for the graphical user interface),
the following Prolog conventions are assumed:
constants:
numeric constants and single-quoted strings
relation and attribute names:
identifiers starting with a lowercase letter
variable names:
identifiers starting with an uppercase letter
Understanding Relational Database Query Languages
Relational Algebra
Syntax Summary
Fundamental Operators
σ θ (r)
{ t | t ∈ r and θ}
πai,…,aj(r)
{ t.ai, …, t.aj | t ∈ r }
r ∪ s
{ t | t ∈ r or t ∈ s }
r-s
{ t | t ∈ r and t ∉ s}
q×r
{ tqtr | tq ∈ q and tr ∈ r }
Additional Operators
r∩s
r-(r-s)
p θ q
σ θ (p × q)
p q
πP ∪ Q( σ θ (p × q) )
where
θ = (p.ai=q.ai and … and p.aj=q.aj)
P ∩ Q = {ai, …, aj}
p÷q
πP - Q (p) πP - Q ((πP - Q (p) × q) - p)
Understanding Relational Database Query Languages
Relational Algebra
WinRDBI Syntax Summary
WinRDBI
select condition (r)
project ai, …, aj (r)
r union s
r difference s
q product r
r intersect s
p njoin q
: WinRDBI does not provide
Formal Relational Algebra
σcondition(r)
πai,…,aj(r)
r ∪ s
r-s
q×r
r∩s
p q
division and θ-join operators to
encourage the use of the
fundamental relational algebra
operators.
Understanding Relational Database Query Languages
Relational Algebra
WinRDBI Demo
Illustrate the features of the relational algebra
language by example using the employee training
enterprise that can be found at
http://www.prenhall.com/dietrich
Understanding Relational Database Query Languages
Domain Relational Calculus
Syntax Summary
{ D1, …, Dn | F (D1, …, Dn) }
F describes the properties of the data to be retrieved.
The output schema of F is given by the domain variables
D1, …, Dn that act as global variables in F.
The result of the DRC expression gives the set of all tuples
(d1, d2, …, dn) such that when di is substituted for Di
(1 =< i =< n), F is true.
Understanding Relational Database Query Languages
Domain Relational Calculus
Atoms & Formulas
Let
Di be a domain variable
c be a domain constant
θ be a comparison operator
Atoms
r(D1, D2, …, Dn)
Di θ Dj
Di θ c
Let F, F1 and F2 be formulas
Formulas
(F)
not F
F1 and F2
F1 or F2
Let D be free* in F(D)
(exists D) F(D)
(forall D) F(D)
* a variable is free in a formula
if it is not quantified by exists
or forall
Understanding Relational Database Query Languages
Domain Relational Calculus
Valid Expression
{ D1, …, Dn | F (D1, …, Dn) }
is a valid DRC expression if it has only the variables
appearing to the left of the vertical bar | free in F.
Any other variable appearing in F must be bound.
free vs. bound variables
free (global): variable is not explicitly quantified
bound (free): variable is declared explicitly through
quantification and its scope is the quantified formula
Understanding Relational Database Query Languages
Domain Relational Calculus
Relational Completeness
σcondition (r):
{ R1, …, Rn | r(R1, …, Rn) and condition}
πai,…,aj(r):
{ Ri, …, Rj | r(R1, …, Ri, …, Rj, …, Rn)}
r ∪ s:
{ D1, …, Dn | r(D1, …, Dn) or s(D1, …, Dn) }
r - s:
{ D1, …, Dn | r(D1, …, Dn) and not s(D1, …, Dn) }
q×r:
{ Q1, …, Qm, R1, …, Rn | q(Q1, …, Qm) and r(R1, …, Rn) }
Understanding Relational Database Query Languages
Domain Relational Calculus
WinRDBI Demo
Illustrate the features of the DRC language by
example using the employee training enterprise
that can be found at
http://www.prenhall.com/dietrich
Understanding Relational Database Query Languages
Tuple Relational Calculus
Syntax Summary
{ T1, …, Tn | F (T1, …, Tn) }
F describes the properties of the data to be retrieved.
The output schema of F is given by the tuple variables
T1, …, Tn that act as global variables in F.
Understanding Relational Database Query Languages
Tuple Relational Calculus
Atoms & Formulas
Let
T and Ti be tuple variables
aj be an attribute
c be a domain constant
θ be a comparison operator
Atoms
r(T)
Ti.am θ Tj.an
T.ai θ c
Let F, F1 and F2 be formulas
Formulas
(F)
not F
F1 and F2
F1 or F2
Let T be free* in F(T)
(exists T) F(T)
(forall T) F(T)
* a variable is free in a formula
if it is not quantified by exists
or forall
Understanding Relational Database Query Languages
Tuple Relational Calculus
Valid Expression
{ T1, …, Tn | F (T1, …, Tn) }
is a valid TRC expression if it has only the variables
appearing to the left of the vertical bar | free in F.
Any other variable appearing in F must be bound.
free vs. bound variables
free (global): variable is not explicitly quantified
bound (free): variable is declared explicitly through
quantification and its scope is the quantified formula
Understanding Relational Database Query Languages
Tuple Relational Calculus
Relational Completeness
σcondition (r):
{ R| r(R) and condition}
πai…,aj(r):
{ R.ai, …, R.aj | r(R)}
r ∪ s:
{ T | r(T) or s(T) }
r - s:
{ T | r(T) and not s(T) }
q×r:
{ Q, R | q(Q) and r(R) }
Understanding Relational Database Query Languages
Tuple Relational Calculus
WinRDBI Demo
Illustrate the features of the TRC language by
example using the employee training enterprise
that can be found at
http://www.prenhall.com/dietrich
Understanding Relational Database Query Languages
SQL
Simple Query Syntax
select
distinct a1,…,am
from
r1, r2, …, rn
where
condition
is equivalent to
πa1,…,am ( σcondition (r1 × r2 × … × rn) )
Understanding Relational Database Query Languages
SQL
Relational Completeness
σcondition(r)
select * from r where condition
πA (r)
select distinct A from r
r ∪s
select * from r union select * from s
r-s
select * from r except select * from s
q×r
select * from q, r
Understanding Relational Database Query Languages
SQL
Query Syntax Summary
select [distinct] ATTRIBUTE-LIST
from
TABLE-LIST
[where
WHERE-CONDITION]
[group by
GROUPING-ATTRIBUTES
[having
HAVING-CONDITION]]
[order by
COLUMN-NAME [asc | desc], … ]
Understanding Relational Database Query Languages
SQL
Data Definition Syntax Summary
create table TABLE-NAME
(
COL-NAME COL-TYPE [ATTR-CONSTRAINT],
…
[TABLE-CONSTRAINT-LIST]
)
where
ATTR-CONSTRAINT:
not null or default value
TABLE-CONSTRAINT-LIST:
primary key, uniqueness and referential integrity
(foreign key)
Understanding Relational Database Query Languages
SQL
Insert Syntax Summary
insert into TABLE-NAME [ (ATTRIBUTE-LIST)]
SOURCE
where SOURCE is one of:
values ( EXPLICIT-VALUES)
SELECT-STATEMENT
Understanding Relational Database Query Languages
SQL
Update & Delete Syntax Summary
update
set
[where
TABLE-NAME
COLUMN-NAME = VALUE-EXPR, …
UPDATE-CONDITION]
delete from TABLE-NAME
[where
DELETE-CONDITION]
Understanding Relational Database Query Languages
SQL
WinRDBI Syntax Summary
Since WinRDBI has an integrated GUI for defining and
manipulating the database, WinRDBI SQL supports only
the query language.
SQL-89 compatibility: no joined tables in the from clause
Does not support SQL-standard view definition: assumes
intermediate table syntax across all query languages
Language simplification disallows aggregation in a nested
subquery: use two queries instead ...
Understanding Relational Database Query Languages
SQL
Aggregation in Nested Queries
SQL
select E.eID, E.eLast, E.eFirst, E.eTitle
from employee E
where E.eSalary =
(select min(S.eSalary)
from employee S );
WinRDBI
minimumSalary(minSalary) :=
select min(E.eSalary)
from employee E;
select E.eID, E.eLast, E.eFirst, E.eTitle
from employee E
where E.eSalary =
(select minSalary
from minimumSalary);
Understanding Relational Database Query Languages
SQL
WinRDBI Demo
Illustrate the features of the SQL language by
example using the employee training enterprise
that can be found at
http://www.prenhall.com/dietrich
Understanding Relational Database Query Languages