2009-04-15 36 views

Respuesta

72

La mayoría de las respuestas están en el camino correcto. Sin embargo, una fila no es una tupla. Tuples* son desordenado conjuntos de valores conocidos con nombres. Por lo tanto, las siguientes tuplas son la misma cosa (estoy usando una sintaxis tupla imaginaria desde una tupla relacional es en gran parte una construcción teórica):

(x=1, y=2, z=3) 
(z=3, y=2, x=1) 
(y=2, z=3, x=1) 

... asumiendo por supuesto que x, y, y z son todos los enteros También tenga en cuenta que no existe una tupla "duplicada". Por lo tanto, no solo los anteriores son iguales, son los lo mismo. Por último, las tuplas solo pueden contener valores conocidos (por lo tanto, no hay nulos).

A fila** es un conjunto ordenado de valores conocidos o desconocidos con nombres (aunque pueden omitirse). Por lo tanto, las siguientes comparaciones devuelven falso en SQL:

(1, 2, 3) = (3, 2, 1) 
(3, 1, 2) = (2, 1, 3) 

Tenga en cuenta que hay formas de "simular". Por ejemplo, considere esto INSERT declaración:

INSERT INTO point VALUES (1, 2, 3) 

Suponiendo que x es primero, y es segundo, y z es tercero, esta consulta puede ser reescrita como esto:

INSERT INTO point (x, y, z) VALUES (1, 2, 3) 

O esto:

INSERT INTO point (y, z, x) VALUES (2, 3, 1) 

... pero lo único que estamos haciendo realmente es cambiar el orden en lugar de eliminarlo.

Y también tenga en cuenta que puede haber valores desconocidos también. Por lo tanto, es posible que tenga filas con valores desconocidos:

(1, 2, NULL) = (1, 2, NULL) 

... pero tenga en cuenta que esta comparación siempre se producirá UNKNOWN. Después de todo, ¿cómo se puede saber si dos valores desconocidos son iguales?

Y, por último, las filas pueden estar duplicadas. En otras palabras, (1, 2) y (1, 2) pueden compararse para ser iguales, pero eso no significa necesariamente que sean la misma cosa.

Si este es un tema que le interesa, recomiendo leer SQL and Relational Theory: How to Write Accurate SQL Code antes de CJ Date.

* Tenga en cuenta que estoy hablando de tuplas, ya que existen en el modelo relacional, que es un poco diferente de las matemáticas en general.

** Y en caso de que se lo esté preguntando, casi todo en SQL es una fila o una tabla. Por lo tanto, (1, 2) es una fila, mientras que VALUES (1, 2) es una tabla (con una fila).

ACTUALIZACIÓN: Me he expandido un poco en esta respuesta en una publicación de blog here.

+7

Hola, he leído su respuesta y he leído respuestas similares en SO (Mike Samuel en [esta pregunta] (http://stackoverflow.com/questions/4212265/tuples-vs-records/679449) y sampson-chen en [esa pregunta] (http://stackoverflow.com/questions/13057663/what-is -the-difference-between-a-row-record-and-tuple)) así como también [aquí] (http://www.techopedia.com/definition/1251/tuple-database) y [wiki] (http: //en.wikipedia.org/wiki/Tuple), y todos dicen que las tuplas son ** conjuntos ** ordenados, no desordenados. Por lo tanto, su respuesta me confunde. – Lou

+0

Soy jus Estoy pasando por esto ahora, pero si una fila tiene una clave principal que es única, ¿eso no hace que cada fila sea única de esa manera? No importa cómo se ordena? –

+0

Pregunta básica: '(x = 1, y = 2, z = 3)' ¿1 tupla o 3 tuplas? –

0

fila de una tabla de base de datos

+0

¿Es una fila en una tabla de base de datos o cualquier fila en cualquier conjunto? Si crea una proyección desde múltiples tablas, vistas, etc., ¿cada fila es una tupla también? – flipdoubt

+2

Una tupla puede ser un subconjunto de la fila –

+2

AFAIK, una fila en un conjunto de resultados: pueden ser todos los campos de una tabla, desde varias tablas, vistas, etc. –

-2

Una tupla se utiliza para definir una porción de datos de un cubo?; se compone de una colección ordenada de un miembro de una o más dimensiones. Una tupla se usa para identificar secciones específicas de datos multidimensionales de un cubo; una tupla compuesta por un miembro de cada dimensión en un cubo describe por completo el valor de una celda.

+0

En el modelo relacional, las tuplas no están ordenadas: http://en.wikipedia.org/wiki/Tuple#Relational_model –

+1

-1: Preguntó por SQL, no por cubos. –

14

Es una abreviada "N-tuple" (como en quadruple, quintuple etc.)

Es una fila de un conjunto de filas tomada como un todo.

Si emite:

SELECT col1, col2 
FROM mytable 

, toda resultado será un ROWSET, y cada par de col1, col2 habrá un tuple.

Algunas bases de datos pueden funcionar con una tupla en conjunto.

desea, usted puede hacer esto:

SELECT col1, col2 
FROM mytable 
WHERE (col1, col2) = 
     (
     SELECT col3, col4 
     FROM othertable 
     ) 

, que comprueba que en su conjunto tuple de un rowset partidos toda una tuple de otro rowset.

4

En bases de datos relacionales, las tablas son relations (in mathematical meaning). Las relaciones son conjuntos de tuplas. Por lo tanto, la fila de la tabla en la base de datos relacional es tupla en relación.

Wiki sobre las relaciones:

En matemáticas (más específicamente, en conjunto teoría y lógica), una relación es una propiedad que asigna valores de verdad a combinaciones (k-tuplas) de k individuos . Normalmente, la propiedad describe una posible conexión entre los componentes de una k-tupla. Para un conjunto dado de k-tuplas, se asigna un valor de verdad a cada k-tuple según si la propiedad tiene o no es válida.

+0

Relaciones * no son * tablas: http://en.wikipedia.org/wiki/Table_(database) –

+0

Jason, vartec dijo lo contrario: fila de la tabla en la base de datos relacional es tupla en relación con " –

+0

También dijo" las tablas son relaciones (en el significado matemático). "Tal vez debería haber dicho" Las tablas * no son * relaciones ". :-) –

-1

Las tuplas son valores conocidos que se utilizan para relacionar la tabla en DB relacional.

2

tupla = 1 registro; n-tuple = lista ordenada de 'n' registros; Elmasri Navathe book (página 198 3ª edición).

registro = ordenado o desordenado.

0

Según tengo entendido, una tabla tiene un conjunto de claves K y una función de tipaje T con dominio K. Una fila, o "tupla", de la tabla es una función r con dominio K tal que r (k) un elemento de T (k) para cada tecla k. Entonces, la terminología es engañosa en el sentido de que una "tupla" se parece más a una matriz asociativa.

3

Cualquiera que sea su uso en matemáticas, una tupla en RDBMS se considera comúnmente como una fila en una tabla o conjunto de resultados. En un RDBMS, una tupla no está ordenada. Una tupla en un MDDBMS es la instancia de datos en una celda con sus instancias de dimensión asociadas (miembros).

¿Cuál es la tupla en un almacén de datos familiares de columna?

0

Tuple se utiliza para hacer referencia a una fila en un modelo de base de datos relacional. Pero la tupla tiene una pequeña diferencia con la fila.

Cuestiones relacionadas