Idea básica sobre modelo relacional y operadores básicos en Álgebra Relacional:
Operadores básicos en álgebra relacional
Los operadores extendidos son aquellos operadores que se pueden derivar de los operadores básicos.
- Unirse
- Intersección
- Dividir
Las relaciones utilizadas para entender los operadores extendidos son ESTUDIANTE, ESTUDIANTE_DEPORTES, TODOS_DEPORTES y EMPLEADO que se muestran en la Tabla 1, Tabla 2, Tabla 3 y Tabla 4 respectivamente.
ALUMNO
ROLLO_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS |
1 | RAM | DELHI | 9455123451 | 18 |
2 | RAMESH | GURGAÓN | 9652431543 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
4 | SEGURO | DELHI | 9156768971 | 18 |
tabla 1
ESTUDIANTE_DEPORTES
ROLLO_NO | DEPORTES |
1 | Bádminton |
2 | Grillo |
2 | Bádminton |
4 | Bádminton |
Tabla 2
TODOS LOS DEPORTES
DEPORTES |
Bádminton |
Grillo |
Tabla 3
EMPLEADO
EMP_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS |
1 | RAM | DELHI | 9455123451 | 18 |
5 | NARESH | HISAR | 9782918192 | 22 |
6 | SWETA | RANCHI | 9852617621 | 21 |
4 | SEGURO | DELHI | 9156768971 | 18 |
Tabla 4
La intersección en dos relaciones R1 y R2 solo se puede calcular si R1 y R2 son compatibles con la unión (estas dos relaciones deben tener el mismo número de atributos y los atributos correspondientes en dos relaciones tienen el mismo dominio). El operador de intersección cuando se aplica en dos relaciones como R1 ∩ R2 dará una relación con tuplas que están tanto en R1 como en R2. Sintaxis:
Relation1 ∩ Relation2
Example: Find a person who is student as well as employee- STUDENT ∩ EMPLOYEE
En términos de operadores básicos (unión y menos):
STUDENT ∩ EMPLOYEE = STUDENT + EMPLOYEE - (STUDENT U EMPLOYEE)
RESULTADO:
ROLLO_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS |
1 | RAM | DELHI | 9455123451 | 18 |
4 | SEGURO | DELHI | 9156768971 | 18 |
: Unión condicional se utiliza cuando desea unir dos o más relaciones en función de algunas condiciones. Ejemplo: Seleccionar alumnos cuyo ROLL_NO sea mayor que EMP_NO de empleados
STUDENT⋈cSTUDENT.ROLL_NO>EMPLOYEE.EMP_NOEMPLOYEE
En términos de operadores básicos (producto cruzado y selección):
σ (STUDENT.ROLL_NO>EMPLOYEE.EMP_NO)(STUDENT×EMPLOYEE)
RESULTADO:
ROLLO_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS | EMP_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS |
2 | RAMESH | GURGAÓN | 9652431543 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 | 1 | RAM | DELHI | 9455123451 | 18 |
4 | SEGURO | DELHI | 9156768971 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |
Equijoin es un caso especial de unión condicional donde solo se cumple la condición de igualdad entre un par de atributos. Como los valores de dos atributos serán iguales en el resultado de la unión equitativa, solo aparecerá un atributo en el resultado.
Ejemplo:Seleccione estudiantes cuyo ROLL_NO sea igual a EMP_NO de empleados
STUDENT⋈STUDENT.ROLL_NO=EMPLOYEE.EMP_NOEMPLOYEE
En términos de operadores básicos (producto cruzado, selección y proyección):
∏(STUDENT.ROLL_NO, STUDENT.NAME, STUDENT.ADDRESS, STUDENT.PHONE, STUDENT.AGE EMPLOYEE.NAME, EMPLOYEE.ADDRESS, EMPLOYEE.PHONE, EMPLOYEE>AGE)(σ (STUDENT.ROLL_NO=EMPLOYEE.EMP_NO) (STUDENT×EMPLOYEE))
RESULTADO:
ROLLO_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS |
1 | RAM | DELHI | 9455123451 | 18 | RAM | DELHI | 9455123451 | 18 |
4 | SEGURO | DELHI | 9156768971 | 18 | SEGURO | DELHI | 9156768971 | 18 |
Es un caso especial de equijoin en el que la condición de igualdad se cumple en todos los atributos que tienen el mismo nombre en las relaciones R y S (relaciones en las que se aplica la operación de unión). Al aplicar la unión natural en dos relaciones, no es necesario escribir explícitamente la condición de igualdad. Natural Join también devolverá los atributos similares solo una vez, ya que su valor será el mismo en la relación resultante.
Ejemplo: Seleccione estudiantes cuyo ROLL_NO sea igual al ROLL_NO de STUDENT_SPORTS como:
STUDENT⋈STUDENT_SPORTS
En términos de operadores básicos (producto cruzado, selección y proyección):
∏(STUDENT.ROLL_NO, STUDENT.NAME, STUDENT.ADDRESS, STUDENT.PHONE, STUDENT.AGE STUDENT_SPORTS.SPORTS)(σ (STUDENT.ROLL_NO=STUDENT_SPORTS.ROLL_NO) (STUDENT×STUDENT_SPORTS))
RESULTADO:
ROLLO_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS | DEPORTES |
1 | RAM | DELHI | 9455123451 | 18 | Bádminton |
2 | RAMESH | GURGAÓN | 9652431543 | 18 | Grillo |
2 | RAMESH | GURGAÓN | 9652431543 | 18 | Bádminton |
4 | SEGURO | DELHI | 9156768971 | 18 | Bádminton |
La unión natural es una unión interna predeterminada porque las tuplas que no cumplen las condiciones de unión no aparecen en el conjunto de resultados. p.ej; La tupla que tiene ROLL_NO 3 en STUDENT no coincide con ninguna tupla en STUDENT_SPORTS, por lo que no ha sido parte del conjunto de resultados.
Al aplicar la combinación en dos relaciones R y S, algunas tuplas de R o S no aparecen en el conjunto de resultados que no satisfacen las condiciones de combinación. Pero Left Outer Joins da todas las tuplas de R en el conjunto de resultados. Las tuplas de R que no cumplan la condición de unión tendrán valores NULL para los atributos de S.
Ejemplo: seleccione estudiantes cuyo ROLL_NO sea mayor que EMP_NO de empleados y detalles de otros estudiantes también
STUDENT⟕STUDENT.ROLL_NO>EMPLOYEE.EMP_NOEMPLOYEE
RESULTADO
ROLLO_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS | EMP_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS |
2 | RAMESH | GURGAÓN | 9652431543 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 | 1 | RAM | DELHI | 9455123451 | 18 |
4 | SEGURO | DELHI | 9156768971 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |
1 | RAM | DELHI | 9455123451 | 18 | NULO | NULO | NULO | NULO | NULO |
Al aplicar la combinación en dos relaciones R y S, algunas tuplas de R o S no aparecen en el conjunto de resultados que no satisfacen las condiciones de combinación. Pero Right Outer Joins da todas las tuplas de S en el conjunto de resultados. Las tuplas de S que no satisfagan la condición de unión tendrán valores como NULL para los atributos de R.
Ejemplo: seleccione estudiantes cuyo ROLL_NO sea mayor que EMP_NO de empleados y detalles de otros empleados también
STUDENT⟖STUDENT.ROLL_NO>EMPLOYEE.EMP_NOEMPLOYEE
RESULTADO:
ROLLO_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS | EMP_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS |
2 | RAMESH | GURGAÓN | 9652431543 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 | 1 | RAM | DELHI | 9455123451 | 18 |
4 | SEGURO | DELHI | 9156768971 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |
NULO | NULO | NULO | NULO | NULO | 5 | NARESH | HISAR | 9782918192 | 22 |
NULO | NULO | NULO | NULO | NULO | 6 | SWETA | RANCHI | 9852617621 | 21 |
NULO | NULO | NULO | NULO | NULO | 4 | SEGURO | DELHI | 9156768971 | 18 |
Al aplicar la combinación en dos relaciones R y S, algunas tuplas de R o S no aparecen en el conjunto de resultados que no satisfacen las condiciones de combinación. Pero Full Outer Joins da todas las tuplas de S y todas las tuplas de R en el conjunto de resultados. Las tuplas de S que no cumplan la condición de unión tendrán valores como NULL para los atributos de R y viceversa.
Ejemplo: seleccione estudiantes cuyo ROLL_NO sea mayor que EMP_NO de empleados y detalles de otros empleados también y otros estudiantes también
STUDENT⟗STUDENT.ROLL_NO>EMPLOYEE.EMP_NOEMPLOYEE
RESULTADO:
ROLLO_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS | EMP_NO | NOMBRE | DIRECCIÓN | TELÉFONO | AÑOS |
2 | RAMESH | GURGAÓN | 9652431543 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 | 1 | RAM | DELHI | 9455123451 | 18 |
4 | SEGURO | DELHI | 9156768971 | 18 | 1 | RAM | DELHI | 9455123451 | 18 |
NULO | NULO | NULO | NULO | NULO | 5 | NARESH | HISAR | 9782918192 | 22 |
NULO | NULO | NULO | NULO | NULO | 6 | SWETA | RANCHI | 9852617621 | 21 |
NULO | NULO | NULO | NULO | NULO | 4 | SEGURO | DELHI | 9156768971 | 18 |
1 | RAM | DELHI | 9455123451 | 18 | NULO | NULO | NULO | NULO | NULO |
El operador de división A ÷ B se puede aplicar si y solo si:
- Los atributos de B son un subconjunto propio de los atributos de A.
- La relación devuelta por el operador de división tendrá atributos = (Todos los atributos de A – Todos los atributos de B)
- La relación devuelta por el operador de división devolverá aquellas tuplas de la relación A que están asociadas a cada tupla de B.
Considere la relación ESTUDIANTE_DEPORTES y TODOS_DEPORTES dada en la Tabla 2 y la Tabla 3 anteriores.
Para aplicar el operador de división como
STUDENT_SPORTS÷ ALL_SPORTS
- La operación es válida ya que los atributos en ALL_SPORTS son un subconjunto adecuado de atributos en STUDENT_SPORTS.
- Los atributos en la relación resultante tendrán atributos {ROLL_NO,SPORTS}-{SPORTS}=ROLL_NO
- Las tuplas en relación resultante tendrán aquellos ROLL_NO que están asociados con todas las tuplas de B {Badminton, Cricket}. ROLL_NO 1 y 4 están asociados solo a Bádminton. ROLL_NO 2 está asociado a todas las tuplas de B. Por lo que la relación resultante será:
ROLLO_NO |
2 |
Descripción general de los operadores de álgebra relacional
Preguntas de puerta del año anterior
https://www.geeksforgeeks.org/gate-gate-cs-2012-question-50/
https://www.geeksforgeeks.org/gate-gate-cs-2012-question-43/
Artículo aportado por Sonal Tuteja. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA