Las tablas de búsqueda (o tablas de códigos , como algunas personas las llaman) suelen ser una colección de los posibles valores que se pueden dar para una determinada columna.
Por ejemplo, supongamos que tenemos una tabla de búsqueda llamada party
(destinada a almacenar información sobre partidos políticos) que tiene dos columnas:
party_code_idn
, que contiene valores numéricos generados por el sistema y (sin significado del dominio comercial ) funciona como un sustituto de la clave real.party_code
, es la clave real o "natural" de la tabla porque mantiene valores que tienen connotaciones de dominio empresarial .
Y digamos que dicha tabla retiene los siguientes datos:
+----------------+------------+
| party_code_idn | party_code |
+----------------+------------+
| 1 | Republican |
| 2 | Democratic |
+----------------+------------+
La party_code
columna, que mantiene los valores 'Republicano' y 'Democrático', siendo la clave real de la tabla, está configurada con una restricción ÚNICA, pero opcionalmente agregué el party_code_idn
y lo definí como el PK de la tabla (aunque, lógicamente hablando , party_code
puede funcionar como la CLAVE PRIMARIA [PK]).
Pregunta
¿Cuáles son las mejores prácticas para señalar valores de búsqueda de tablas de transacciones ? ¿Debo establecer referencias de CLAVE EXTRANJERA (FK) ya sea (a) directamente al valor natural y significativo o (b) a los valores sustitutos?
Opción (a) , por ejemplo,
+---------------+------------+---------+
| candidate_idn | party_code | city |
+---------------+------------+---------+
| 1 | Democratic | Alaska |
| 2 | Republican | Memphis |
+---------------+------------+---------+
tiene las siguientes propiedades 1 :
- Legible para el usuario final (+)
- Fácil de importar-exportar a través de sistemas (+)
- Difícil de cambiar el valor ya que necesita modificación en todas las tablas de referencia (-)
- Agregar nuevo valor no es costoso (=)
Creo que es casi como " pasar por valor ", para dibujar una analogía de la llamada a la función en la jerga de programación de aplicaciones.
Opción (b) , por ejemplo,
+---------------+----------------+---------+
| candidate_idn | party_code_idn | city |
+---------------+----------------+---------+
| 1 | 1 | Alaska |
| 2 | 2 | Memphis |
+---------------+----------------+---------+
tiene las siguientes propiedades:
- No legible para el usuario final (-)
- Difícil de importar-exportar ya que necesitamos desreferenciarlo (-)
- Valores fáciles de cambiar, ya que solo almacenamos referencias en tablas de transacciones (+)
- Agregar nuevo valor no es costoso (=)
Es muy similar a " pasar por referencia ", si se compara con la llamada de función en el lenguaje de programación de aplicaciones.
Importar-Exportar también se puede hacer de una manera diferente, es decir, simplemente rellenando la tabla de búsqueda nuevamente y luego volviendo a sembrar la columna sustituta. Espero estar entendiendo bien, esto es algo que acabo de escuchar como una posibilidad.
1. Tenga en cuenta que +
, -
y =
indicar el beneficio de esas propiedades.
Pregunta
Muy importante: ¿Hay alguna diferencia entre una tabla de búsqueda (o código ) y una referencia de FK si solo vamos a usar este último enfoque? Creo que funcionan igual.