En los ejemplos de este capítulo se crea un sistema para gestionar artículos (como por ejemplo los artículos de un blog). A continuación se muestra el esquema de la base de datos, que está formado por cinco tablas: articulo, autor, categoria, etiqueta y articulo_etiqueta.
Listado 4-1 - Esquema de la base de datos
// config/schema.yml
propel:
articulo:
id: ~
titulo: { type: varchar(255), required: true }
slug: { type: varchar(255), required: true }
contenido: longvarchar
estado: varchar(255)
autor_id: { type: integer, required: true, foreignTable: autor, foreignReference: id, onDelete: cascade }
categoria_id: { type: integer, required: false, foreignTable: categoria, foreignReference: id, onDelete: setnull }
fecha_publicacion: timestamp
created_at: ~
updated_at: ~
_uniques:
unique_slug: [slug]
autor:
id: ~
nombre: varchar(20)
apellidos: varchar(20)
email: { type: varchar(255), required: true }
activo: boolean
categoria:
id: ~
nombre: { type: varchar(255), required: true }
etiqueta:
id: ~
nombre: { type: varchar(255), required: true }
articulo_etiqueta:
articulo_id: { type: integer, foreignTable: articulo, foreignReference: id, primaryKey: true, onDelete: cascade }
etiqueta_id: { type: integer, foreignTable: etiqueta, foreignReference: id, primaryKey: true, onDelete: cascade }Las relaciones entre las tablas son las siguientes:
articulo y autor: cada artículo está escrito por uno y sólo un autor.articulo y categoria: cada artículo está asociado a cero o una categoría.articulo y etiqueta.Capítulo original en inglés Chapter 4 - Propel Integration Traducido por Javier Eguíluz