He leído la definición de 1NF que es, «Si cada atributo de relación es atómico». Dime qué es Atomic.
Comentarios
- De relevancia .
Respuesta
1NF requiere que cada posición de atributo en cada tupla en cada relación contenga un solo valor del tipo apropiado . Los tipos pueden ser arbitrariamente complejos. De hecho, los tipos pueden ser relaciones. (El libro de CJ Date Base de datos en profundidad: teoría relacional para profesionales trata este tema de una manera que es bastante fácil de entender).
«Atómico» nunca ha significado «indivisible», por lo que ese término finalmente está cayendo en desgracia. Hablando libremente, «atómico» significa que si un valor tiene partes componentes, el dbms ignora la existencia de esas partes o proporciona funciones para manipularlas. Por ejemplo, un valor de marca de tiempo tiene estas partes.
- Año
- Mes
- Día
- Horas
- Minutos
- Segundos
- Milisegundos
Ese tipo de valor es obviamente divisible, y todos los sistemas de administración de bases de datos proporcionan funciones para manipular esas partes. También proporcionan una forma de seleccionar una marca de tiempo como valor único. (Que, por supuesto, lo es).
Respuesta
«Atómico» se refiere a la noción original de Codd de 1969 de que cada atributo en cada tupla dentro de una relación debe consistir en un valor único y no permitir estructuras multivalor del tipo soportado en bases de datos como el modelo CODASYL.
En los DBMS SQL modernos, la atomicidad no es realmente un problema. Las tablas SQL no permiten columnas de varios valores y los valores son siempre «atómicos».
Comentarios
- Técnicamente cierto, pero las tablas SQL permiten cadenas grandes como valores , que es una laguna en la práctica. Un campo de cadena que contiene varios enteros decimales separados por comas, fechas ASCII, etc., ciertamente parecería violar la intención de atomicidad, ya sea que siga a la letra o no ….
Respuesta
Atómico significa datos que no se pueden dividir más.
Regla de atomicidad:
- regla 1: una columna con datos atómicos no puede tener varios valores del mismo tipo de datos en la misma columna.
- regla 2: una tabla con datos atómicos no puede tener varias columnas con el mismo tipo de datos.
Como la columna de nombre completo, «no puedo decir que podría ser atómica porque se puede dividir en apellido, nombre. Una columna con interés también podría dividirse más, por lo que una columna que puede» t ser dividido se conoce como atómico.
Respuesta
Significa que la clave no se puede descomponer. Supongamos que tiene una tabla con tres columnas, nombre, apellido y número de teléfono. Declara una clave primaria compuesta en (nombre, apellido). Esa clave primaria es no atómica porque en realidad es compuesto por dos columnas. Ahora digamos que cambia su tabla a dos columnas, full_name y teléfono_number, con una clave primaria en full_name. ¿La clave ahora es atómica? No, porque en su aplicación podría dividirlo en nombre y apellido, en el espacio. Ahora hagamos nuestra tabla id, full_name y teléfono_number, clave principal en id (que es un número entero). Eso es atómico, porque el entero no se puede descomponer de manera significativa.
Comentarios
- su ejemplo, sin embargo, comienza con la afirmación de que la atomicidad » significa que la clave no se puede descomponer «. Eso ‘ no es lo que significa. Significa que atributos constan de un solo valor. No hay nada » no atómico » sobre una clave que consta de varios atributos.
Respuesta
Codd originalmente parece haber significado que ningún valor es en sí mismo un conjunto. Este es un punto de partida útil, pero «atómico» no tiene un significado ontológico cuando se trata de bases de datos (algo que CJ Date es correcto para señalar). Codd trató de formalizar la definición como algo que no podría descomponerse más allá de las especificaciones operaciones de base de datos ial (es decir, una marca de tiempo es atómica porque extraer el año es una operación especial de la base de datos). En otras palabras, si la base de datos puede dividir subvalores, está bien. Pero no debería tener conjuntos (listas desordenadas) u objetos que requieran que la lógica de la aplicación se descomponga.
Con el tiempo y luchando con este problema en entornos operativos, propondría una definición intermedia de atomicidad, una más estricta que Codd y sin el agujero del conejo que analiza Date:
Un valor es atómico para propósitos de la primera forma normal si y solo si:
- El valor no es un conjunto (sí, Sé que Date no está de acuerdo) y
- No hay referencias de clave externa a ninguna subparte del campo.
En particular, la representación de un valor no puede determinar su atomicidad. Representar una dirección IP como «10.0.0.1» frente a ARRAY [10,0,0,1] frente a 167772161 no importa para el análisis 1NF ya que los tres se refieren al mismo valor atómico.
En particular, común (¡y a veces útil!) Las violaciones de 1NF con respecto a la atomicidad incluyen:
- Almacenar una matriz de etiquetas en una publicación de blog o comentario.
- Almacenar tablas dentro de tablas, donde la tabla interna tiene un requisito de integridad referencial contra otra relación en otro lugar.
Estos problemas generan, más o menos, las mismas anomalías de datos.
Respuesta
Considere una ubicación en la Tierra. Puedo encontrarlo con pares (longitud, latitud) o con el código HTM (Malla triangular jerárquica). Dado que ambos miden los mismos datos. Este es un hecho físico, que podemos medir con un teléfono celular; traduce un número de cuadrícula en [longitud, latitud] para usted), ambos deben ser atómicos o compuestos en su modelo.
No confunda la escala utilizada para la medición y la notación utilizada para mostrar los datos con la naturaleza de los datos.
Comentarios
- Edité esta publicación por un par de errores tipográficos. No ‘ no creo que este usuario sea el verdadero Joe Celko, pero busqué suplantación de identidad en meta.stackexchange.com y encontré este hilo . Vea las respuestas de los Sres. Atwood y Spolsky, los fundadores de stackexchange. Parece estar permitido.
Respuesta
La clave atómica es ese tipo de clave primaria que no se puede descomponer. significa que esta clave no se divide más, como Student_ID, Employee_ID.