Temas de SQL - Llave Primaria, no se complique!

Imágen de perfil
Val: 12
Ha aumentado 1 puesto en SQL (en relación al último mes)
Gráfica de SQL

Contenido en LWPLlave Primaria, no se complique!gráfica de visualizaciones


SQL

Publicado el 17 de Junio del 2019 por Gnomi
1.336 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!

primarykey-e15294258019801

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.


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.

llaveprimaria2


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”

employeescolors


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)

Luis Peña
18 de Junio del 2019
estrellaestrellaestrellaestrellaestrella
Estoy totalmente de acuerdo. Aunque no es mala idea colocar el identificativo de la tabla de donde procede. Así me enseñó mi maestro. Ejemplo: empl_ID, color_ID, direc_ID, etc.
Responder
Imágen de perfil
19 de Junio del 2019
estrellaestrellaestrellaestrellaestrella
Claro, es válido!, sin embargo un nombre de columna simplificado facilita mucho las cosas a todo nivel: documentacion, programacion, simplificacion de consultas, etc.
Responder

Comentar

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/t10085