Skip to content

Modelado, tipos y constraints

En Oracle, un schema suele corresponder a un usuario propietario de objetos. Las tablas, constraints, indices, vistas y secuencias viven dentro de schemas.

Crear tabla

sql
CREATE TABLE clientes (
  id NUMBER GENERATED BY DEFAULT AS IDENTITY,
  nombre VARCHAR2(100) NOT NULL,
  email VARCHAR2(150) NOT NULL,
  fecha_alta DATE DEFAULT SYSDATE NOT NULL,
  CONSTRAINT pk_clientes PRIMARY KEY (id),
  CONSTRAINT uq_clientes_email UNIQUE (email)
);

Foreign key

sql
CREATE TABLE pedidos (
  id NUMBER GENERATED BY DEFAULT AS IDENTITY,
  cliente_id NUMBER NOT NULL,
  total NUMBER(12,2) NOT NULL,
  estado VARCHAR2(30) DEFAULT 'PENDIENTE' NOT NULL,
  CONSTRAINT pk_pedidos PRIMARY KEY (id),
  CONSTRAINT fk_pedidos_clientes FOREIGN KEY (cliente_id) REFERENCES clientes(id),
  CONSTRAINT ck_pedidos_total CHECK (total >= 0)
);

Tipos habituales

TipoUso
VARCHAR2(n)texto variable
NUMBER(p,s)enteros y decimales
DATEfecha y hora
TIMESTAMPfecha y hora con mas precision
CLOBtexto grande
BLOBbinario grande

Identity vs sequence

Oracle moderno soporta identity:

sql
id NUMBER GENERATED BY DEFAULT AS IDENTITY

Tambien puedes usar sequences, muy comunes en sistemas existentes.

Buenas practicas

  • Usa VARCHAR2, no VARCHAR.
  • Nombra constraints.
  • Usa NUMBER(p,s) para importes.
  • Define NOT NULL en campos obligatorios.
  • Separa schemas por responsabilidad.

Errores comunes

  • Confundir usuario con schema.
  • No nombrar constraints.
  • Usar DATE sin recordar que incluye hora.
  • Guardar importes sin precision.
  • No definir claves foraneas.