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.
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.
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
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
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
ICONS new database new query open save save all print cut copy paste new table delete table insert tuple delete tuple find replace execute
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
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 { t q t r t q q and t r 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)
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 division and θ-join operators to encourage the use of the fundamental relational algebra operators. Formal Relational Algebra σ condition (r) π ai,,aj (r) r s r - s q r r s p q
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
Domain Relational Calculus Syntax Summary { D 1,, D n F (D 1,, D n ) } 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.
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
Domain Relational Calculus Valid Expression { D 1,, D n F (D 1,, D n ) } 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
Domain Relational Calculus Relational Completeness σ condition (r): { R1,, Rn r(r1,, Rn) and condition} π ai,,aj (r): r s: r - s: q r : { Ri,, Rj r(r1,, Ri,, Rj,, Rn)} { D1,, Dn r(d1,, Dn) or s(d1,, Dn) } { D1,, Dn r(d1,, Dn) and not s(d1,, Dn) } { Q1,, Qm, R1,, Rn q(q1,, Qm) and r(r1,, Rn) }
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
Tuple Relational Calculus Syntax Summary { T 1,, T n F (T 1,, T n ) } 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.
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
Tuple Relational Calculus Valid Expression { T 1,, T n F (T 1,, T n ) } 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
Tuple Relational Calculus Relational Completeness σ condition (r): { R r(r) and condition} π ai,aj (r): r s: r - s: q r : { R.ai,, R.aj r(r)} { T r(t) or s(t) } { T r(t) and not s(t) } { Q, R q(q) and r(r) }
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
SQL Simple Query Syntax select from where distinct a1,,am r1, r2,, rn condition is equivalent to π a1,,am ( σ condition (r1 r2 rn) )
SQL Relational Completeness σ condition (r) π A (r) r s r - s q r select * from r where condition select distinct A from r select * from r union select * from s select * from r except select * from s select * from q, r
SQL Query Syntax Summary select [distinct] ATTRIBUTE-LIST from [where [group by [having TABLE-LIST WHERE-CONDITION] GROUPING-ATTRIBUTES HAVING-CONDITION]] [order by COLUMN-NAME [asc desc], ]
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)
SQL Insert Syntax Summary insert into TABLE-NAME [ (ATTRIBUTE-LIST)] SOURCE where SOURCE is one of: values ( EXPLICIT-VALUES) SELECT-STATEMENT
SQL Update & Delete Syntax Summary update set [where TABLE-NAME COLUMN-NAME = VALUE-EXPR, UPDATE-CONDITION] delete from TABLE-NAME [where DELETE-CONDITION]
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...
SQL Aggregation in Nested Queries SQL WinRDBI select E.eID, E.eLast, E.eFirst, E.eTitle from employee E where E.eSalary = (select min(s.esalary) from employee S ); 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);
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