DBML

Introducción

DBML (Database Markup Language) es un lenguaje de marcado simple diseñado para definir y documentar estructuras de bases de datos.

Recursos y Enlaces

Conceptos Fundamentales

Definición de Tablas

Table users {
  id int [pk, increment]
  username varchar [unique, not null]
  email varchar [not null]
  created_at timestamp [default: `now()`]
}

Relaciones

Las relaciones se definen usando referencias entre tablas:

  • > - REF: ref: para definir relaciones
  • Tipos de relaciones: one-to-one, one-to-many, many-to-many
Table posts {
  id int [pk]
  user_id int
  title varchar
  content text
  Ref: posts.user_id > users.id
}

Propiedades de Campos

  • pk - Primary Key
  • increment - Auto-increment
  • unique - Valor único
  • not null - No nulo
  • default - Valor por defecto

Definición de Índices

Indexes {
  (user_id, created_at) [name: 'user_created_index']
  (email) [unique]
}

Características Avanzadas

Tipos de Datos

  • int, varchar, text, timestamp, boolean
  • decimal, float, double
  • date, time, datetime

Notas y Documentación

  • Crear notas en las propiedades usando comentarios
  • Documentar tablas y relaciones
Table products {
  id int [pk]
  name varchar
  // Nota: Precio en dólares
  price decimal
}

Abreviaciones y Defaults

  • Sintaxis abreviada para constraints comunes
  • Valores por defecto para diferentes tipos de datos

Workflow de Proyecto

Definición del Proyecto

  • Esquema general de la base de datos
  • Relaciones entre entidades
  • Constraints y validaciones

Relaciones y Claves Foráneas

  • Definición explícita de relaciones
  • Tipos de cardinalidad
  • Restricciones de integridad referencial

Optimización

  • Índices para consultas frecuentes
  • Claves primarias compuestas
  • Normalización adecuada