in

¿Qué es una relación en terminología de bases de datos?

apple touch icon@2

Sorprendentemente, «relación» en bases de datos «relacionales» no se refiere a la relación de clave externa de una tabla a otra. «Una relación es una estructura de datos que consta de un encabezado y un conjunto desordenado de tuplas que comparten el mismo tipo», según Wikipedia en ‘Relación (base de datos)’.

En los RDBMS de SQL (como MS SQL Server y Oracle), las tablas son relaciones perfectamente almacenadas, donde los nombres de columna definidos en el diccionario de datos forman el «encabezado» y las filas son las «tuplas» de la relación.

Luego, desde una tabla, una consulta puede devolver una relación diferente:

create table t (x number primary key, y number not null);

Table created.

SQL> insert into t values (1, 10);

1 row created.

SQL> insert into t values (2, 20);

1 row created.

SQL> select x from t;

         X
----------
         1
         2

select x from t devolvió una relación con menos columnas, tuplas de menos elementos, que la tabla base. Y select x, y from t where x = 1 devolverá una relación con menos tuplas que la tabla base:

SQL> select x, y from t where x = 1;

         X          Y
---------- ----------
         1         10

Un ejemplo usando combinación interna:

SQL> create table s (x number primary key, words varchar2(100) not null);

Table created.

SQL> insert into s values (1, 'Hello World!');

1 row created.

SQL> insert into s values (3, 'Will not show');

1 row created.

SQL> select t.x, t.y, s.words
  2  from t
  3  inner join s
  4      on t.x = s.x;

         X          Y WORDS
---------- ---------- ---------------
         1         10 Hello World!

Conceptualmente t inner join s on t.x = s.x pasa por los siguientes pasos:

  1. Tome el producto cartesiano de s y t, que es tomar cada fila de s y combinarlo con cada fila de t resultando en una tupla con tamaño de s * tamaño de t tuplas o filas, cada una con todas las columnas de ambos s y t muy parecido a los resultados de:

    SQL> seleccione * de s, t;

         X WORDS                    X          Y
    

         3 Will not show            1         10
         3 Will not show            2         20
         1 Hello World!             1         10
         1 Hello World!             2         20
    

(O select * from s cross join t en la sintaxis SQL-92) Del producto cartesiano que contiene cuatro tuplas / filas con cuatro columnas on s.x = t.x recorta las tuplas a uno, aún con cuatro columnas:

SQL> select *
  2  from t
  3  inner join s
  4      on t.x = s.x;

         X          Y          X WORDS
---------- ---------- ---------- ---------------
         1         10          1 Hello World!

Y select t.x, t.y, s.words elimina una columna de la relación.

Nota que lo anterior describe un modelo conceptual o lógico de lo que está sucediendo. Las bases de datos vienen con optimizadores de consultas que están diseñados para dar los resultados como si se hubieran seguido todos los pasos lógicos, pero logran saltarse pasos, en la implementación física del trabajo y utilizar estructuras físicas de soporte, como índices, que no forman parte. del modelo relacional.

Las vistas son definiciones de relación que no almacenan la relación, pero definen una relación basada en otras relaciones, eventualmente con tablas en la parte inferior. (Excepto por las vistas materializadas, que precalculan y almacenan una relación basada en otras relaciones).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Unix / Linux: uso de matrices de shell

gfg 200x200 min

Vector en C ++ STL – GeeksforGeeks