Saltar al contenido

¿Cuál es la diferencia entre un “registro” y una “fila” en SQL Server?

Solución:

Para citar a Joe Celko (no solo puede encontrar esta referencia en toda la web y en su entrada de Wikipedia, sino que incluso la verá en camisetas en algunas conferencias):

Las filas no son registros.

Mucha gente lo señala como un idiota pedante al que simplemente le gusta humillar y abusar verbalmente de los novatos, y debo admitir que así es como se ve. Pero también lo conocí en persona, incluso compartí una comida con él, y no puedo decirte cuán diferente es su persona en la vida real de su frente en línea. Incluso una vez lo pillé llamando registros de filas, y estaba muy avergonzado (historia de fondo completa aquí).

De hecho, usé esta camiseta en la conferencia PASS en Grapevine, Texas, en 2006.

En cualquier caso, di lo que quieras sobre el carácter en línea del chico, pero él escribió el estándar, y el hecho de que tal autoridad dicte que hay una distinción debería decirle algo. Y por mucho que se avergüence cuando alguien dice que una fila es un récord, también lo hacen muchos de mis colegas, que también son expertos en el mundo de SQL Server. Y aquellos de nosotros en ese campo creemos que tiene razón.

Por ejemplo, Itzik Ben-Gan, un obvio gurú de SQL Server. He aquí una cita de la primera lección de su Kit de formación (examen 70-461): consulta de Microsoft SQL Server 2012:

Como ejemplo de términos incorrectos en T-SQL, las personas a menudo usan los términos “campo” y “registro” para referirse a lo que T-SQL llama “columna” y “fila”, respectivamente. Los campos y registros son físicos. Los campos son lo que tiene en las interfaces de usuario en las aplicaciones cliente y los registros son lo que tiene en los archivos y cursores. Las tablas son lógicas y tienen filas y columnas lógicas.

Y, conociendo a Itzik, si le envías un correo electrónico o lo acorralas en una conferencia, él te dirá lo mismo con mucho gusto. Si llama a una fila un registro, en su opinión, no está utilizando la terminología correctamente.

Ahora, al ser una industria llena de personas de todo tipo, es probable que encuentre material (como los artículos de objetivos tecnológicos publicados en otra respuesta) que parecen hacer distinciones muy sutiles entre los dos, y encontrará muchas personas en la industria considérelos iguales (conozco a varias personas en Microsoft y a otras personas como Brent Ozar, que siempre lo llamará un récord). Eso no los hace bien, esa es solo su forma de verlo: ven lo lógico y lo físico como lo mismo (al menos en este contexto) y muchos de ellos probablemente piensen que el resto de nosotros solo somos retentivos anales que pasan demasiado tiempo en semántica.

Dado que ningún proveedor puede decir “los llamarás {registros | filas}”, siempre estaremos lidiando con este argumento, porque siempre habrá alguien que no entienda lo lógico frente a lo físico, o se le enseñó de manera diferente, o provienen de Access o de programación, etc. Al igual que algunas personas dicen “tomay-to” y otras personas dicen “tomah-to”, siempre habrá una variedad de personas que van desde “son iguales” a “son completamente diferentes” “- y muchos matices en el medio. Una vez más, eso no hace que ninguno de ellos esté en lo cierto, porque nadie puede ser la máxima autoridad en esto. Pero en el espacio de SQL Server, definitivamente hay una mayoría.


Dicho esto, en mi humilde opinión, cuando hablas de datos que están en una tabla, lo llamas fila. Cuando realiza una inserción, está insertando una fila en una tabla. Cuando ejecuta una actualización, está actualizando una fila que está en una tabla. Y cuando realiza un SELECT, está recuperando filas de una tabla.

Siéntase libre de llamarlo un registro una vez que su aplicación lo tenga. Pero no se enoje si dice: “Inserté un registro” y alguien lo corrige.

Microsoft ha proporcionado en varios lugares de su organización que el nombre oficial para el almacenamiento de datos tabulares por entrada de tabla (para acuñar una definición taxonómica que sirva a mi propio propósito) se llama “FILA”. Presento como evidencia ROW_NUMBER, ROWCOUNT, ROWVERSION y el DataTable.Rows propiedad, donde un DataTable es una representación en C # de un objeto “tabla” de TSQL. En este caso, las propiedades de MSDN en su conjunto fomentan el uso de row para hacer referencia a una colección de datos que es una entrada en una tabla. (tenga en cuenta que estoy tratando de evitar el uso de “registro” o “fila” para definir esto, que es el punto de la pregunta)

Sin embargo, el lenguaje es que una aplicación se ocupa de los “registros” de los usuarios. Algo único acerca de un registro que puede no estar representado directamente por una sola fila de almacenamiento es el hecho de que un registro puede tener subregistros. Es cierto que una tabla puede tener tablas relacionadas de muchos a uno, pero estas no se almacenan contiguamente, sino que se almacenan lógicamente relacionadas.

Entonces, una fila es lo que hay en una tabla, y un registro es lo que el desarrollador trabaja en el uso práctico.

Acabo de buscar en el documento “Tecnología de la información – Lenguajes de bases de datos – SQL Parte 2: Foundation (SQL / Foundation)”, que define el estándar ANSI para SQL implementado por todos los principales RDBMS.

La palabra row se utiliza principalmente en todo el documento varios cientos de veces, como se esperaba.

La palabra record solo se usó para describir un registro que es similar a un registro usado en Oracle PL / SQL (que describe específicamente los tipos de datos de registros ADA). 6 menciones en el documento.

Creo que esto aclara esta pregunta y responde a los diversos argumentos de ambos lados.


información adicional

De una copia de un estándar SQL (versión preliminar del último disponible gratuitamente), que se puede encontrar en wiscorp.com (la página Estándares SQL tiene varias otras versiones y revisiones anteriores).

Buscando el 7IWD2-02-Fundación-2011-12.pdf, con una fecha de 2011-12-21 revela que la palabra hilera aparece 2277 veces en el documento mientras que la palabra registro aparece sólo 21 veces, ya sea como el verbo “registrar” o en algunos apéndices al final, en las especificaciones de las correspondencias de tipos de datos para los tipos de datos SQL y los tipos de lenguaje host (Ada, Pascal).

Además, el mismo documento tiene en la página 57 (el énfasis es mío):

4.15.1 Introducción a las tablas

Esta subcláusula está modificada por la subcláusula 4.10.1, “Introducción a las tablas”, en ISO / IEC 9075-9.

Una tabla es una colección de cero o más filas. donde cada fila es una secuencia de uno o más valores de columna. El tipo más específico de hilera es un tipo de fila. Cada hilera de una tabla dada tiene el mismo tipo de fila, llamado el tipo de fila de esa tabla. El valor del i-ésimo campo de cada hilera en una tabla es el valor de la i-ésima columna de ese hilera en la mesa. La fila es la unidad de datos más pequeña que se puede insertar en una tabla y eliminar de una tabla.

El grado de una tabla y el grado de cada uno de sus filas, es el número de columnas de esa tabla. El número de filas en una mesa está su cardinalidad. Una tabla cuya cardinalidad es 0 (cero) se dice que está vacía.

A mesa es un mesa base, a tabla derivadao un tabla transitoria.


En lo que respecta a los DBMS que usan SQL:

Las filas no son registros, los campos no son columnas, las tablas no son archivos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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