Llave Primaria, no se complique!
SQL
Publicado el 17 de Junio del 2019 por Gnomi
1.527 visualizaciones desde el 17 de Junio del 2019
(...articulo original en https://www.gnomi.club/llave-primaria/)
Al momento de crear tablas en la Base de datos, una de las principales preocupaciones es definir en buena forma la llave primaria. A fin de cumplir con los requerimientos de lo que una llave primaria implica, muchas veces caemos en definiciones en extremo complicadas, simplifique!

Llave primaria, definición, requerimientos
Una llave primaria es un campo especial o combinacion de varios campos de una tabla de base de datos relacional, definida para identificar en forma única cada registro en dicha tabla.
Una llave primaria debe:
El concepto de llave primaria es critico para que una base de datos relacional trabaje eficientemente, de hecho es el factor central para que las relaciones entre tablas funcionen.
En el diseño de bases de datos relacionales, se llama clave principal a un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria.
https://es.wikipedia.org/wiki/Clave_primaria
En una tabla que contenga la información de personas, la llave primaria podría ser el Numero de Identidad personal, o el Numero de Pasaporte. En una lista de productos, la llave primaria podría ser el Código de Barras o el SKU, o bien la combinación del SKU + Código de Barras.
Cuando tenemos una tabla y empezamos a tratar de identificar la llave primaria, inicialmente miramos las columnas existentes y a partir de ellas tratamos de identificar aquellas que, de acuerdo a la definición, identifiquen en forma única al registro y ademas aquellas donde no se acepta un dato nulo.
Tomando como ejemplo una base de datos de empleados en una compañía, tenemos la tabla de EMPLEADOS, la cual almacena la información básica y estática de cada empleado (nombre, fecha de nacimiento, dirección, cédula de identidad, numero de seguro social, color de cabello, etc.).
Seleccionamos entonces una o varias columnas que aseguren que dos empleados no van a tener nunca el mismo identificador. Una columna candidata podría ser el numero de seguro social, o el número de cédula, sin embargo, puede ser que algunos empleados no cuenten con ese dato, lo que haría que esta opción quede descartada. La siguiente opción lógica sería utilizar una combinación de columnas: NOMBRE + FECHA DE NACIMIENTO + CÉDULA DE IDENTIDAD, podrían dar una secuencia de caracteres única, pero complicada y esa complicación implicará dificultades en las relaciones con otras tablas, desperdicio de espacio en disco duro en las tablas relacionadas, en los indices, etc.
La mejor opción es crear una columna separada para este fin. En la estructura de la tabla, crea un campo con la etiqueta “ID”, del tipo entero y que sea autonumérico. De esta forma, cada vez que un registro se inserte en la tabla, la base de datos automáticamente le asignará un número entero identificador, único, no nulo, simple y eficiente.

De esta forma, cualquier tabla que genere en su base de datos, siempre tendrá la misma llave primaria:
Como efecto dominó, en adelante, las tablas relacionadas verán tambien simplificada su estructura y su relación. Siguiendo el ejemplo del la tabla EMPLEADOS y de la tabla COLORS, podemos establecer una relacion entre estas tablas por medio del campo “Color de Cabello”, definiendo este campo como entero y relacionandolo con el campo ID en la tabla “COLORS”

Tampoco es necesario complicar el nombre del campo en cada tabla. No es necesario por ejemplo nombrar el campo llave en la tabla empleados como “Empleado_ID”, o en la tabla colors como “Color_ID”… basta con nombrarlo como “ID” en cada tabla. Se sobreentiende que si ID es una columna de la tabla empleados, ese campo identifica al empleado.
Al momento de crear tablas en la Base de datos, una de las principales preocupaciones es definir en buena forma la llave primaria. A fin de cumplir con los requerimientos de lo que una llave primaria implica, muchas veces caemos en definiciones en extremo complicadas, simplifique!

Llave primaria, definición, requerimientos
Una llave primaria es un campo especial o combinacion de varios campos de una tabla de base de datos relacional, definida para identificar en forma única cada registro en dicha tabla.
Una llave primaria debe:
- Contener un valor único para cada registro de la tabla de datos
- No puede contener un valor nulo. Esto es, debe contener siempre un valor.
- No puede contener un valor nulo. Esto es, debe contener siempre un valor.
El concepto de llave primaria es critico para que una base de datos relacional trabaje eficientemente, de hecho es el factor central para que las relaciones entre tablas funcionen.
En el diseño de bases de datos relacionales, se llama clave principal a un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria.
https://es.wikipedia.org/wiki/Clave_primaria
Definiendo la llave primaria, que complicado!
En una tabla que contenga la información de personas, la llave primaria podría ser el Numero de Identidad personal, o el Numero de Pasaporte. En una lista de productos, la llave primaria podría ser el Código de Barras o el SKU, o bien la combinación del SKU + Código de Barras.
Cuando tenemos una tabla y empezamos a tratar de identificar la llave primaria, inicialmente miramos las columnas existentes y a partir de ellas tratamos de identificar aquellas que, de acuerdo a la definición, identifiquen en forma única al registro y ademas aquellas donde no se acepta un dato nulo.
Tomando como ejemplo una base de datos de empleados en una compañía, tenemos la tabla de EMPLEADOS, la cual almacena la información básica y estática de cada empleado (nombre, fecha de nacimiento, dirección, cédula de identidad, numero de seguro social, color de cabello, etc.).
Seleccionamos entonces una o varias columnas que aseguren que dos empleados no van a tener nunca el mismo identificador. Una columna candidata podría ser el numero de seguro social, o el número de cédula, sin embargo, puede ser que algunos empleados no cuenten con ese dato, lo que haría que esta opción quede descartada. La siguiente opción lógica sería utilizar una combinación de columnas: NOMBRE + FECHA DE NACIMIENTO + CÉDULA DE IDENTIDAD, podrían dar una secuencia de caracteres única, pero complicada y esa complicación implicará dificultades en las relaciones con otras tablas, desperdicio de espacio en disco duro en las tablas relacionadas, en los indices, etc.
Simplifique!!!
La mejor opción es crear una columna separada para este fin. En la estructura de la tabla, crea un campo con la etiqueta “ID”, del tipo entero y que sea autonumérico. De esta forma, cada vez que un registro se inserte en la tabla, la base de datos automáticamente le asignará un número entero identificador, único, no nulo, simple y eficiente.

De esta forma, cualquier tabla que genere en su base de datos, siempre tendrá la misma llave primaria:
1
ID - integer - Autonumeric
Como efecto dominó, en adelante, las tablas relacionadas verán tambien simplificada su estructura y su relación. Siguiendo el ejemplo del la tabla EMPLEADOS y de la tabla COLORS, podemos establecer una relacion entre estas tablas por medio del campo “Color de Cabello”, definiendo este campo como entero y relacionandolo con el campo ID en la tabla “COLORS”

Tampoco es necesario complicar el nombre del campo en cada tabla. No es necesario por ejemplo nombrar el campo llave en la tabla empleados como “Empleado_ID”, o en la tabla colors como “Color_ID”… basta con nombrarlo como “ID” en cada tabla. Se sobreentiende que si ID es una columna de la tabla empleados, ese campo identifica al empleado.
Comentarios... (2)