Álgebra relacional
El álgebra relacional es un lenguaje de consulta en bases de datos relacionales . El álgebra relacional fue inventada en 1970 por Edgar Frank Codd , director de investigación del IBM Center en San José .
Esta es la teoría detrás de los lenguajes de consulta DBMS , como SQL . El teorema Codd dijo que el álgebra relacional es equivalente al cálculo relacional ( lógica de primer orden sin símbolos de función). También es equivalente a Datalog no recursivo ¬ ( Datalog con negación). Datalog es un lenguaje de consultas y reglas para bases de datos deductivas.
Según Abiteboul et al., El álgebra relacional es conceptualmente un lenguaje "procedimental": de hecho, las consultas son secuencias de operaciones que construyen la respuesta. Esto contrasta con los lenguajes conceptualmente "declarativos" como el cálculo relacional y Datalog.
Modelo relacional
En el modelo relacional, los datos se almacenan en tablas, también llamadas relaciones. A continuación, se muestra un ejemplo de una relación:
Más precisamente, se constituye una relación (en el sentido del modelo Codd ):
- de un diagrama, es decir, todos los nombres de los campos (aquí Clave, Nombre, Correo electrónico), y de los tipos correspondientes (en el ejemplo, respectivamente, un entero, luego dos cadenas de caracteres).
- Una extensión, es decir el contenido de la tabla, que es un conjunto de tuplas cuyo orden no importa.
Definición
El lenguaje procedimental contiene las operaciones de conjuntos de la teoría de conjuntos sobre relaciones, así como las operaciones para fusionar / proyectar relaciones.
Establecer operadores
Los operadores establecidos son la unión, la intersección, la diferencia y el producto cartesiano.
Unión
La unión de dos relaciones en el mismo diagrama es la relación en este diagrama que contiene exactamente la unión de los registros de estas dos relaciones. Formalmente .
R∪S={t:t∈R otu t∈S}{\ Displaystyle R \ cup S = \ {t: t \ en R \ o \ t \ en S \} \,}
Empleados de Renault
apellido |
IDENTIFICACIÓN |
Departamento
|
---|
Harry |
3415 |
Finanzas
|
Salida |
2241 |
Venta
|
Jorge |
3401 |
Finanzas
|
|
Empleados de Citroën
apellido |
IDENTIFICACIÓN |
Departamento
|
---|
Bertrand |
0808 |
Venta
|
Donald |
0007 |
Venta
|
|
Empleados de Renault U Empleados de Citroën
apellido |
IDENTIFICACIÓN |
Departamento
|
---|
Harry |
3415 |
Finanzas
|
Salida |
2241 |
Venta
|
Jorge |
3401 |
Finanzas
|
Bertrand |
0808 |
Venta
|
Donald |
0007 |
Venta
|
|
Intersección
La intersección de dos relaciones en el mismo esquema es la relación en ese esquema que contiene exactamente los registros que aparecen en ambas relaciones. Formalmente .
R∩S={t:t∈R mit t∈S}{\ Displaystyle R \ cap S = \ {t: t \ en R \ y \ t \ en S \} \,}
Personas inscritas en el fútbol
apellido |
IDENTIFICACIÓN
|
---|
Harry |
3415
|
Salida |
2241
|
Jorge |
3401
|
|
Personas inscritas en lecciones de piano
apellido |
IDENTIFICACIÓN
|
---|
Harry |
3415
|
Bertrand |
2
|
Jorge |
3401
|
Yoda |
1000
|
|
Personas inscritas en fútbol ∩ Personas inscritas en lecciones de piano
apellido |
IDENTIFICACIÓN
|
---|
Harry |
3415
|
Jorge |
3401
|
|
Diferencia
La diferencia de dos relaciones en el mismo esquema es la relación en ese esquema que contiene exactamente los registros que aparecen en la primera relación pero no en la segunda. Formalmente . Por ejemplo, podemos calcular las personas inscritas en el fútbol pero que no están inscritas en las clases de piano:
R-S={t:t∈R mit t∉S}{\ Displaystyle RS = \ {t: t \ en R \ y \ t \ no \ en S \} \,}
Personas inscritas en el fútbol
apellido |
IDENTIFICACIÓN
|
---|
Harry |
3415
|
Salida |
2241
|
Jorge |
3401
|
|
Personas inscritas en lecciones de piano
apellido |
IDENTIFICACIÓN
|
---|
Harry |
3415
|
Bertrand |
2
|
Jorge |
3401
|
Yoda |
1000
|
|
Personas inscritas en fútbol - Personas inscritas en lecciones de piano
apellido |
IDENTIFICACIÓN
|
---|
Salida |
2241
|
|
producto cartesiano
Con el producto cartesiano de dos relaciones, copiamos cada tupla de la primera relación para cada una de las tuplas de la segunda. Formalmente .R×S={(r,s):r∈R mit s∈S}{\ Displaystyle R \ times S = \ {(r, s): r \ in R \ and \ s \ in S \}}
Gente
apellido |
IDENTIFICACIÓN
|
---|
Harry |
3415
|
Salida |
2241
|
|
Regalos
Tipo |
Premio
|
---|
entregado |
10
|
pastel |
20
|
ordenador |
300
|
|
Personas - Regalos
apellido |
IDENTIFICACIÓN |
Tipo |
Premio
|
---|
Harry |
3415 |
entregado |
10
|
Harry |
3415 |
pastel |
20
|
Harry |
3415 |
ordenador |
300
|
Salida |
2241 |
entregado |
10
|
Salida |
2241 |
pastel |
20
|
Salida |
2241 |
ordenador |
300
|
|
Operadores relacionales
Selección
La selección (o restricción) consiste en retener solo los registros que satisfacen una determinada condición. En el siguiente ejemplo, solo mantenemos a los turistas cuya ciudad es París.
- Datos: una relación y una fórmula formadas a partir de una combinación de comparaciones y conectores lógicos.R{\ Displaystyle R \,}F{\ Displaystyle F \,}
- Resultado: satisface la condición dada por , en el ejemplo TuristasσF(R)={r∈R:r{\ Displaystyle \ sigma _ {F} (R) = \ {r \ in R: r \,}F}{\ Displaystyle F \} \,}σVIllmi=′PAGarIs′({\ displaystyle \ sigma _ {Ciudad = 'París'} (\,}){\ Displaystyle) \,}
- Equivalente de SQL: DONDE
Turistas
idTourist |
NombreT |
Ciudad |
Deporte
|
---|
1 |
Bagazo |
París |
Esquí
|
2 |
Vaqueros |
Toulouse |
Tenis
|
3 |
Franco |
Marsella |
Fútbol
|
4 |
Thomas |
Lyon |
Navegar
|
5 |
Max |
París |
Golf
|
|
Selección de turistas donde la ciudad vale París
idTourist |
NombreT |
Ciudad |
Deporte
|
---|
1 |
Bagazo |
París |
Esquí
|
5 |
Max |
París |
Golf
|
|
Proyección
-
La proyección permite mantener solo ciertos atributos. En el siguiente ejemplo, solo mantenemos los atributos NombreT y Ciudad de la relación Turista.
- Datos: una relación y un conjunto de atributos deR{\ Displaystyle R \,}A{\ Displaystyle A \,}R{\ Displaystyle R \,}
- Resultado :, que es la Relación donde solo consideramos los atributos de , por ejemplo TuristasπA(R){\ Displaystyle \ pi _ {A} (R) \,}R{\ Displaystyle R \,}A{\ Displaystyle A \,}πNOometroT,VIllmi({\ displaystyle \ pi _ {NameT, ciudad} (\,}){\ Displaystyle) \,}
- Equivalente de SQL: SELECT
Turistas
idTourist |
NombreT |
Ciudad |
Deporte
|
---|
1 |
Bagazo |
París |
Esquí
|
2 |
Vaqueros |
Toulouse |
Tenis
|
3 |
Franco |
Marsella |
Fútbol
|
4 |
Thomas |
Lyon |
Navegar
|
5 |
Max |
París |
Golf
|
|
Proyección de la relación Turística sobre los atributos NomT y Ville
NombreT |
Ciudad
|
---|
Bagazo |
París
|
Vaqueros |
Toulouse
|
Franco |
Marsella
|
Thomas |
Lyon
|
Max |
París
|
|
Renombrar
-
Cambio de nombre :
- Datos: una relación y un atributo deR{\ Displaystyle R \,}B{\ Displaystyle b \,}R{\ Displaystyle R \,}
- Resultado :, que es la relación con renombradoρa/B(R){\ Displaystyle \ rho _ {a / b} (R) \,}R{\ Displaystyle R \,}B{\ Displaystyle b \,}a{\ Displaystyle a \,}
- Equivalente de SQL: AS
Entrar
-
Unirse :
- Datos: dos relaciones yR{\ Displaystyle R \,}S{\ Displaystyle S}
- Resultado: R⋈S={(a,B,vs):(a,B)∈R mit (B,vs)∈S}{\ Displaystyle R \ bowtie S = \ {(a, b, c) :( a, b) \ in R \ y \ (b, c) \ in S \} \,}
- Equivalente de SQL: JOIN
Turistas
idTourist |
NombreT |
Ciudad |
Deporte
|
---|
1 |
Bagazo |
París |
Esquí
|
2 |
Vaqueros |
Toulouse |
Tenis
|
3 |
Franco |
Marsella |
Fútbol
|
4 |
Thomas |
Lyon |
Navegar
|
5 |
Max |
París |
Golf
|
|
Destinos
idTourist |
CiudadD
|
---|
1 |
Cannes
|
2 |
Ibiza
|
4 |
Tokio
|
|
Turistas ⋈ Destinos
idTourist |
NombreT |
Ciudad |
Deporte |
CiudadD
|
---|
1 |
Bagazo |
París |
Esquí |
Cannes
|
2 |
Vaqueros |
Toulouse |
Tenis |
Ibiza
|
4 |
Thomas |
Lyon |
Navegar |
Tokio
|
|
División
-
División : toma como entrada dos relacionesy.
R(X1,...,Xmetro,y1,...,ypag){\ Displaystyle R (x_ {1}, ..., x_ {m}, y_ {1}, ..., y_ {p}) \,}S(y1,...,ypag){\ Displaystyle S (y_ {1}, ..., y_ {p}) \,}
- Por lo tanto, cualquier tupla se puede dividir en dos tuplas , con esquema y esquema . y devuelve la tabla de esquema como . La división equivale a dar "todo x tal que para todo y ..."r∈R{\ Displaystyle r \ en R \,}r=(t,s){\ Displaystyle r = (t, s) \,}t=(t1,...,tmetro){\ Displaystyle t = (t_ {1}, ..., t_ {m}) \,}X={X1,...,Xmetro}{\ Displaystyle X = \ {x_ {1}, ..., x_ {m} \} \,}s=(s1,...,spag){\ Displaystyle s = (s_ {1}, ..., s_ {p}) \,}y={y1,...,ypag}{\ Displaystyle y = \ {y_ {1}, ..., y_ {p} \} \,}X{\ Displaystyle X \,}R/S={t:∀s∈S, (t,s)∈R}{\ Displaystyle R / S = \ {t: \ forall s \ in S, \ (t, s) \ in R \} \,}
Expresividad
El álgebra SPC (selección, proyección y producto cartesiano) corresponde al cálculo conjuntivo (cálculo relacional sin disyunción y sin negación): es una de las versiones del teorema de Codd . El álgebra SPCU- (el álgebra SPC con la adición de unión y diferencia) corresponde a todo el cálculo relacional: es otra versión del teorema de Codd . La equijoína Puede expresarse con un producto cartesiano, seguido de una selección y luego una proyección.
Mejoramiento
Aquí están las reglas de reescritura para transformar una expresión de álgebra relacional en otra expresión equivalente.
Implementación
Sin embargo, las bases de datos relacionales no funcionan de acuerdo con las reglas establecidas del álgebra relacional. De hecho, si uno no define una clave principal , es posible insertar varias filas idénticas en una tabla , que una perspectiva ensemblist no tiene ningún significado: un elemento pertenece o no hace parte de un conjunto. Si queremos aplicar estrictamente las reglas de conjuntos, debemos comprobar cada vez que se agrega una tabla que las líneas introducidas no están ya presentes.
Objetos específicos del modelo
Aquí se trata de determinar los dominios (es decir, el tipo atómico):
- Numérico: entero o real ( SQL : Int, Float, etc.);
- Cadena de caracteres (SQL: Char (20), VarChar (32), etc.);
- Fecha (SQL: FECHA, HORA, AÑO, etc.);
- Tipo enumerado.
Notas y referencias
-
(en) Fundamentos de bases de datos: el nivel lógico , Addison-Wesley Longman Publishing Co., Inc.1995, 685 p. ( ISBN 978-0-201-53771-0 , leer en línea ) , pág. 10
-
(en) Fundamentos de bases de datos: el nivel lógico , Addison-Wesley Longman Publishing Co., Inc.1995, 685 p. ( ISBN 978-0-201-53771-0 , leer en línea ) , Parte B - Conceptos básicos: Idiomas de consulta relacionales - p. 35
-
" Aprenda bases de datos y SQL " , en Developpez.com (consultado el 19 de mayo de 2019 )
-
http://www.scritube.com/limba/franceza/Aide-mmoire-sur-les-bases-de-d21481108.php
Ver también
enlaces externos
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">