De ‘Integridad Referencial’ a ‘Integridad Probabilística’

Actualmente me encuentro trabajando en un proyecto en el que debemos integrar datos de diferentes proveedores (áreas) en un gran ‘Data Warehouse‘. Recibimos los datos mediente ficheros, para los que se definen interfaces.

En el diseño de uno de estos interfaces, nuestro proveedor de datos nos manda un diseño de tabla, para la cual define una ‘primary key‘ que consiste en un código de identificación supuestamente único.

Tras una primera comprobación de los datos recibidos, observamos que dicho dato ‘único’ resulta no serlo en absoluto. Tras ponernos en contacto con el proveedor de los datos, nos indica que realmente la unicidad se verificará si añadimos un código geográfico a la ‘PK’. Parece tener sentido.

Lo malo viene después: al definirnos una tabla ‘hija’ relacionada con la primera, nos indican como PK el anterior dato ‘único’ más una fecha y una hora. Y resulta que dicha tabla ‘hija’ carece del código geográfico definido en la ‘PK’ la tabla ‘padre’ (no existe columna que lo contenga). Como quiera que necesitamos una ‘foreign key‘ para implementar la relación entre ambas, le hacemos notar al proveedor de datos que la ausencia del código geográfico en la tabla hija nos impide definir la ‘FK’ que identifique inequívocamente las filas de la relación.

A lo que el proveedor de datos nos contesta:

No es necesario, ya que es muy difícil que el mismo día, a la misma hora se produzca el mismo evento para un mismo identificador en dos regiones geográficas diferentes.

Así pues, pasamos del concepto ‘Integridad Referencial’ (Consistencia entre las filas de dos tablas relacionadas: Para que la integridad referencial se sostenga, las columnas para las que se declare una ‘foreign key‘ en una tabla deben coincidir con las columnas que componen la clave primaria o una clave candidata de la tabla con la que se relaciona) a este nuevo y revolucionario concepto definido por nuestro proveedor de datos que podríamos llamar ‘Integridad Probabilística‘, y que podríamos definir algo así como:

“Se podrán definir relaciones entre dos tablas sin que sean basadas en la ‘primary key’ de una de ellas si la probabilidad de indeterminación en la identificación de las filas de la tabla ‘hija’ respecto de las de la tabla padre es ‘pequeña‘”

Saludos.

Carlos.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: