Convenciones y estructura general de la base
Convenciones físicas
El esquema editorial de Interdrugs utiliza las siguientes convenciones:
- nombres de tablas en
snake_casey minúsculas; - nombres de campos en
camelCase; - clave primaria
id INT AUTO_INCREMENT; fechaCreacionyfechaModificacionen las tablas del modelo;- relaciones mediante campos
idXxx; - claves foráneas reales para las relaciones estructurales;
InnoDB;utf8mb4con collationutf8mb4_unicode_ci.
Ejemplo:
CREATE TABLE productos (
id INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(255) NOT NULL,
idLaboratorio INT NOT NULL,
activo TINYINT(1) NOT NULL DEFAULT 1,
fechaCreacion DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
fechaModificacion DATETIME NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
Base editorial y bases compiladas
La base editorial contiene el modelo normalizado utilizado por el backoffice.
Las aplicaciones no necesitan consumir directamente toda esa estructura.
BASE EDITORIAL
|
| publicar / compilar
v
BASES COMPILADAS
|
v
API / GO / CLIENTES
Las bases compiladas son derivadas y pueden ser regeneradas.
Relaciones
Las relaciones estructurales se implementan mediante claves foráneas.
Esto además permite que los generadores PHP detecten las relaciones y generen las asociaciones correspondientes en las entidades Doctrine.
Las reglas que dependen del tipo de registro y no pueden expresarse mediante una FK simple se validan en backend.
Ejemplo: drogas_contenidos.idDroga referencia entidades_farmacologicas.id, pero además el backend debe verificar que esa entidad sea de tipo DROGA.
Borrado lógico
Cuando una tabla posee el campo activo, la desactivación debe preferirse al borrado físico cuando sea necesario conservar referencias o historial.
Las tablas históricas, como extensiones de invitaciones y control editorial, no deben utilizarse como registros descartables.