Mejores Prácticas con IDs en Base de Datos con Coldfusion

Mejores Prácticas con IDs en Base de Datos con Coldfusion

Al momento de diseñar tablas siempre hay una disyuntiva. Hacer un ID autonumérico secuencial o permitir que el ID sea creado manualmente. Aunque hay filosofía para crear identificadores robustos con UUID() considero que lo mejor es ID's numéricos simples y automáticos. Dejar que el motor de SQL haga todo el trabajo por nosotros.

¿Y a nivel de código como se recomienda? Y es que resulta "complicado" o "verboso" validar si ya existe el ID o si no crearlo, por ello hagamos el ejercicio suponiendo que hablamos de usuarios y que el verdadero identificador único es el correo electrónico.

La creación de la tabla seria algo simple como:

CREATE TABLE [dbo].[_users](
	[uId] [int] IDENTITY(1,1) NOT NULL,
	[firstName] [varchar](25) NULL,
	[lastName] [varchar](25) NULL,
	[email] [varchar](75) NOT NULL,
	[phone] [varchar](15) NULL,
    [dtUpdate] [datetime] DEFAULT (getdate()),
) ON [PRIMARY]

ALTER TABLE [dbo].[_users] ADD  CONSTRAINT [PK__users] PRIMARY KEY CLUSTERED ([uId] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

CREATE UNIQUE NONCLUSTERED INDEX [Index__users_1] ON [dbo].[_users]
( [email] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

Podrás observar que

  1. la Llave primaria es el ID (llamado uID en este ejemplo)
  2. el uID es autonumerico de tipo entero
    (va de 1 a 2,147,483,647, en incrementos de 1)
  3. Se crea un índice sobre el campo clave (email) para que sea único
  4. Observa como todos los campos excepto la llave e indice son "opcionales"
  5. Observa como la tabla se llama _users, con "_"
    (para evitar conflictos por palabras reservadas)
  6. Agregamos un campo de fecha para saber cuando se modificó la data.

Ahora, para crear las funciones de Insertar o Editar los método son simples -