En este tutorial introductorio sobre JDBC y bases de datos relacionales, se indica ,

Reglas de integridad

Las tablas relacionales siguen ciertas reglas de integridad para garantizar que los datos que contienen se mantienen precisos y siempre están accesibles. Primero el las filas de una tabla relacional deben ser todas distintas. Si hay filas duplicadas, puede haber problemas para resolver cuál de las dos posibles selecciones es la correcta.

Pero si las filas están duplicadas, significa que todos los campos en ambas filas tienen los mismos valores; y cuando son completamente iguales (duplicados), ¿cómo surge la pregunta de si uno es correcto y el otro incorrecto? ¿Cómo daña la duplicación de una fila la integridad de los datos?

2
Solace 30 ene. 2016 a las 00:19

3 respuestas

La mejor respuesta

La principal razón podría ser:

  1. Desperdicio de espacio para mantener registros duplicados que no tiene sentido.
  2. Desperdicio innecesario de espacio de memoria (memoria principal) cuando selecciona datos en su aplicación.
  3. Restricción de normalización: si su tabla tiene registros duplicados, entonces no es una tabla normalizada en absoluto.
  4. Si existen 2 registros para una sola persona, entonces es realmente confuso porque podría haber un cliente más con el mismo nombre, dirección, etc. Ejemplo: cliente del banco.

Entonces, si no define una forma de identificar claramente a la persona, ¿cómo va a decir que la cuenta X pertenece a qué persona?

1
Rahul 29 ene. 2016 a las 21:28

Integridad de los datos, la pregunta que uno tendría que hacerse es por qué se permitirían dos registros idénticos en una tabla, para qué sirve.

¿Cómo sabrías de qué disco estás hablando? Tomemos por ejemplo a los gemelos idénticos, pueden coincidir en todos los sentidos menos en sus nombres, de esta manera podemos identificar con qué persona estamos hablando.

La duplicación de filas rompe la integridad de los datos porque rompe las reglas fundamentales establecidas por RDBMS.

Si se produce una duplicación, no podrá relacionarse con un conjunto específico de datos, que es el objetivo declarado de RDBMS como se indica en la publicación de su pregunta.

Técnicamente, puede tener varias filas con los mismos datos, la advertencia es que debe incluir una clave principal que diferencie sus filas.

Espero que esto tenga sentido y ayude

1
Sobbles 29 ene. 2016 a las 21:59

Esa es una especie de pregunta filosófica. Pero creo que podrías estar poniendo demasiado en eso. Yo diría que el problema es realmente "¿Cómo sabe la base de datos qué fila es la correcta para buscar?". En uno de los primeros sistemas que configuré, jugué con las claves y logré obtener filas duplicadas en la tabla. Entonces, el problema era cómo decirle a la base de datos de qué filas deshacerse (hace 20 años, creo que usando postgres 5.x). Per se no daña la integridad de los datos, pero daña la "precisión y siempre accesible", ya que no es posible obtener solo la fila que necesita.

Un ejemplo: si alguien pone a una persona en la mesa como

create table person(
   name varchar not null,
   dateofbirth date not null,
   town varchar not null);

Está claro que tarde o temprano obtendrá registros duplicados. Sé que el primer John Smith nacido el 31.08.67 que vive en Oslo es mi antiguo compañero de clase, mientras que el segundo John Smith nacido el 31.08.67 que vive en Oslo es el colega que conocí por primera vez hace una semana. Pero no tengo la posibilidad de distinguirlos entre sí en la base de datos y no tengo la posibilidad de manejarlos por separado. Entonces, si luego hago un

alter table person add connection;

Entonces no tendría ninguna posibilidad de poner los datos correctos en el sistema de base de datos.

2
MortenSickel 29 ene. 2016 a las 21:33