Tema: Base de datos algebra
Enviado por Andres12bat • 27 de Mayo de 2016 • Apuntes • 855 Palabras (4 Páginas) • 314 Visitas
Tema 4.
El modelo relacional tiene:
1. Estructura de Datos Relacional
2. Reglas de Integridad Referencial y de Entidad
3. Paret manipulativa:
*Algebra Relacional.
*Operador de Asignación.
SQL-(structure Query Lenguaje)-> lenguaje estructurado de consulta.
sublenguajes:
-DDL-Data Definition Languaje.
-DML-Data Manipulation Languaje.
QBE-(Query By Example) -> Consultas por ejemplo.
Conjuntos de Operadores:
TRADICIONALES:
1. union
2. interseccion
3. diferencia
4. producto
ESPECIALES:
1. seleccion
2. proyeccion
3. juntura
-Dominio de un Atributo: Conjunto de valores válidos que toma el atributo.
UNION(AUB)
-Los campos adquieren los nombres de los campos de la primer tabla.
-No existen tuplas repetidas.
-(AUB)=(BUA) ->es conmutativa.
-(AUB)UC=AU(BUC)->distributiva.
create database algebra;
create table empleado(noemp int(2) primary key, nombre varchar(15), salario int(4));
insert into empleado values
(10, "jose",200),
(12, "mario",250),
(13, "jorge",1500);
create table trabajador(notrab int(2) primary key, nombre varchar(15), sueldo int(4));
insert into trabajador values
(12, "mario",250),
(15, "manolo",300),
(17, "rodolfo",200),
(18, "fernando",230);
mysql> select * from empleado union select * from trabajador;
+-------+----------+---------+
| noemp | nombre | salario |
+-------+----------+---------+
| 10 | jose | 200 |
| 12 | mario | 250 |
| 13 | jorge | 1500 |
| 15 | manolo | 300 |
| 17 | rodolfo | 200 |
| 18 | fernando | 230 |
+-------+----------+---------+
6 rows in set (0.00 sec)
INTERSECCION:
-conmutativa
mysql> select * from empleado where noemp=(select empleado.noemp from empleado, trabajador where trabajador.notrab=empleado.noemp);
+-------+--------+---------+
| noemp | nombre | salario |
+-------+--------+---------+
| 12 | mario | 250 |
+-------+--------+---------+
DIFERENCIA(minus):
-NO es conmutativo
PRODUCTO CARTESIANO(times):
-Tuplas resultantes de la concatenacion de acada tubla de A con tudas las tuplas de B.
-Cardinalidad(no. de tuplas)= card(A)*card(B);
-Grado(no. de atributos) = grd(A)*grd(B);
create table casados(noemp char(3), sueldo int(3));
insert into casados values
("E25",10),
("E3O",20),
("E15",40);
create table solteros(Notrab char(3), salario int(3));
insert into solteros values
("E70",30),
("E60",40),
("E85",90);
select * from casados, solteros order by sueldo;
casados times solteros
E25,10 E70,30
E25,10 E60,40
E25,10 E85,90
E30,20 E70,30
E30,20 E60,40
E30,20 E85,90
E15,40 E70,30
E15,40 E60,40
E15,40 E85,90
CARDINALIDAD=9
GRADO=4
Las cardinalidades se multiplican,
y los grados se suman.
-----------------------------------------------------------------------------------------------
Operadores Especiales de Relaciones:
1.-SELECCION-subconjunto horizontal
2.-PROYECCION-subconjunto vertical
3.-JOIN
4.-DIVISION
SELECCION(where): Subconjunto horizontal
PROYECCION: Subconjunto vertical(select "campo" from tabla)
JOIN:Equivalente al producto cartesiano seguido de una seleccion(de los tuplos que tengan ) y una proyeccion
create table s(sno char(2) primary key, sname varchar(15), estatus int(2), city varchar(20));
insert into s values
("S1", "SMITH",20, "LONDON"),
("S2", "JONES",10, "PARIS"),
("S3", "BLAKE",30, "PARIS"),
("S4", "CLARK",20, "LONDON"),
("S5", "ADAMS",30, "ATHENS");
create table p(pno char(2) primary key, pname varchar(10), color varchar(10), weigth int(2), city varchar(20));
insert into p values
("P1", "NURT","RED", 12, "LONDON"),
("P2", "BLOT","GREES", 17, "PARIS"),
("P3", "SCREW","BLUE", 17, "ROME"),
("P4", "SCREW","RED", 14, "LONDON"),
("P5", "CAM","BLUE", 12, "PARIS"),
("P6", "COG","RED", 19, "LONDON");
S join P=(S times P) where s.city=p.city [sno, sname, status, city, pno, pname, color, weight]
select sno, sname, estatus, s.city, pno, pname, color, weigth from s,p where s.city=p.city order by sno;
_________________________________________________________________________________________
create
...