{
  "Usuario": {
    "tabla": "Usuario",
    "composicion": {
      "id": {
        "sentencia": "columna",
        "columna": "id",
        "tipo": "INTEGER",
        "detalles": "PRIMARY KEY AUTO_INCREMENT",
        "orden": 0,
        "atributos": {
          "tiene_nombre": "Identificador"
        }
      },
      "nombre": {
        "sentencia": "columna",
        "columna": "nombre",
        "tipo": "VARCHAR",
        "detalles": "(255) UNIQUE",
        "orden": 1,
        "atributos": {
          "tiene_nombre": "Nombre"
        }
      },
      "contrasenya": {
        "sentencia": "columna",
        "columna": "contrasenya",
        "tipo": "VARCHAR",
        "detalles": "(255)",
        "orden": 2,
        "atributos": {
          "tiene_nombre": "Contraseña"
        }
      },
      "correo": {
        "sentencia": "columna",
        "columna": "correo",
        "tipo": "VARCHAR",
        "detalles": "(255)",
        "orden": 3,
        "atributos": {
          "tiene_nombre": "Correo"
        }
      }
    },
    "script": "CREATE TABLE Usuario (\n  id INTEGER PRIMARY KEY AUTO_INCREMENT /*\n    @tiene_nombre: Identificador\n  */,\n  nombre VARCHAR(255) UNIQUE /*\n    @tiene_nombre: Nombre\n  */,\n  contrasenya VARCHAR(255) /*\n    @tiene_nombre: Contraseña\n  */,\n  correo VARCHAR(255) /*\n    @tiene_nombre: Correo\n  */\n);",
    "atributos": {}
  },
  "Permiso": {
    "tabla": "Permiso",
    "composicion": {
      "id": {
        "sentencia": "columna",
        "columna": "id",
        "tipo": "INTEGER",
        "detalles": "PRIMARY KEY AUTO_INCREMENT",
        "orden": 0,
        "atributos": {
          "tiene_nombre": "Identificador"
        }
      },
      "nombre": {
        "sentencia": "columna",
        "columna": "nombre",
        "tipo": "VARCHAR",
        "detalles": "(255)",
        "orden": 1,
        "atributos": {
          "tiene_nombre": "Nombre"
        }
      },
      "descripcion": {
        "sentencia": "columna",
        "columna": "descripcion",
        "tipo": "VARCHAR",
        "detalles": "(511)",
        "orden": 2,
        "atributos": {
          "tiene_nombre": "Descripción"
        }
      }
    },
    "script": "\n\nCREATE TABLE Permiso (\n  id INTEGER PRIMARY KEY AUTO_INCREMENT /*\n    @tiene_nombre: Identificador\n  */,\n  nombre VARCHAR(255) /*\n    @tiene_nombre: Nombre\n  */,\n  descripcion VARCHAR(511) /*\n    @tiene_nombre: Descripción\n  */\n);",
    "atributos": {}
  },
  "Permiso_de_usuario": {
    "tabla": "Permiso_de_usuario",
    "composicion": {
      "id": {
        "sentencia": "columna",
        "columna": "id",
        "tipo": "INTEGER",
        "detalles": "PRIMARY KEY AUTO_INCREMENT",
        "orden": 0,
        "atributos": {
          "tiene_nombre": "Identificador"
        }
      },
      "id_usuario": {
        "sentencia": "columna",
        "columna": "id_usuario",
        "tipo": "INTEGER",
        "detalles": "",
        "orden": 1,
        "atributos": {
          "tiene_nombre": "Identificador de usuario"
        },
        "es_clave_foranea": {
          "sentencia": "clave foránea",
          "columna": "id_usuario",
          "tabla_foranea": "Usuario",
          "columna_foranea": "id",
          "orden": 3,
          "atributos": {}
        }
      },
      "id_permiso": {
        "sentencia": "columna",
        "columna": "id_permiso",
        "tipo": "INTEGER",
        "detalles": "",
        "orden": 2,
        "atributos": {
          "tiene_nombre": "Identificador de permiso"
        },
        "es_clave_foranea": {
          "sentencia": "clave foránea",
          "columna": "id_permiso",
          "tabla_foranea": "Permiso",
          "columna_foranea": "id",
          "orden": 4,
          "atributos": {}
        }
      },
      "$id_usuario$Usuario$id": {
        "sentencia": "clave foránea",
        "columna": "id_usuario",
        "tabla_foranea": "Usuario",
        "columna_foranea": "id",
        "orden": 3,
        "atributos": {}
      },
      "$id_permiso$Permiso$id": {
        "sentencia": "clave foránea",
        "columna": "id_permiso",
        "tabla_foranea": "Permiso",
        "columna_foranea": "id",
        "orden": 4,
        "atributos": {}
      }
    },
    "script": "\n\nCREATE TABLE Permiso_de_usuario (\n  id INTEGER PRIMARY KEY AUTO_INCREMENT /*\n    @tiene_nombre: Identificador\n  */,\n  id_usuario INTEGER /*\n    @tiene_nombre: Identificador de usuario\n  */,\n  id_permiso INTEGER /*\n    @tiene_nombre: Identificador de permiso\n  */,\n  FOREIGN KEY (id_usuario) REFERENCES Usuario (id),\n  FOREIGN KEY (id_permiso) REFERENCES Permiso (id)\n);",
    "atributos": {}
  },
  "Sesion": {
    "tabla": "Sesion",
    "composicion": {
      "id": {
        "sentencia": "columna",
        "columna": "id",
        "tipo": "INTEGER",
        "detalles": "PRIMARY KEY AUTO_INCREMENT",
        "orden": 0,
        "atributos": {
          "tiene_nombre": "Identificador"
        }
      },
      "token": {
        "sentencia": "columna",
        "columna": "token",
        "tipo": "VARCHAR",
        "detalles": "(100)",
        "orden": 1,
        "atributos": {
          "tiene_nombre": "Token de sesión"
        }
      },
      "id_usuario": {
        "sentencia": "columna",
        "columna": "id_usuario",
        "tipo": "INTEGER",
        "detalles": "",
        "orden": 2,
        "atributos": {
          "tiene_nombre": "Identificador de usuario"
        },
        "es_clave_foranea": {
          "sentencia": "clave foránea",
          "columna": "id_usuario",
          "tabla_foranea": "Usuario",
          "columna_foranea": "id",
          "orden": 3,
          "atributos": {}
        }
      },
      "$id_usuario$Usuario$id": {
        "sentencia": "clave foránea",
        "columna": "id_usuario",
        "tabla_foranea": "Usuario",
        "columna_foranea": "id",
        "orden": 3,
        "atributos": {}
      }
    },
    "script": "\n\nCREATE TABLE Sesion (\n  id INTEGER PRIMARY KEY AUTO_INCREMENT /*\n    @tiene_nombre: Identificador\n  */,\n  token VARCHAR(100) /*\n    @tiene_nombre: Token de sesión\n  */,\n  id_usuario INTEGER /*\n    @tiene_nombre: Identificador de usuario\n  */,\n  FOREIGN KEY (id_usuario) REFERENCES Usuario (id)\n);",
    "atributos": {}
  },
  "Fichero": {
    "tabla": "Fichero",
    "composicion": {
      "id": {
        "sentencia": "columna",
        "columna": "id",
        "tipo": "INTEGER",
        "detalles": "PRIMARY KEY AUTO_INCREMENT",
        "orden": 0,
        "atributos": {}
      },
      "fichero": {
        "sentencia": "columna",
        "columna": "fichero",
        "tipo": "VARCHAR",
        "detalles": "(512) UNIQUE",
        "orden": 1,
        "atributos": {
          "es_tipo": "fichero"
        }
      },
      "id_fichero_padre": {
        "sentencia": "columna",
        "columna": "id_fichero_padre",
        "tipo": "INTEGER",
        "detalles": "",
        "orden": 2,
        "atributos": {},
        "es_clave_foranea": {
          "sentencia": "clave foránea",
          "columna": "id_fichero_padre",
          "tabla_foranea": "Fichero",
          "columna_foranea": "id",
          "orden": 3,
          "atributos": {}
        }
      },
      "$id_fichero_padre$Fichero$id": {
        "sentencia": "clave foránea",
        "columna": "id_fichero_padre",
        "tabla_foranea": "Fichero",
        "columna_foranea": "id",
        "orden": 3,
        "atributos": {}
      }
    },
    "script": "\n\n\nCREATE TABLE Fichero (\n  id INTEGER PRIMARY KEY AUTO_INCREMENT,\n  fichero VARCHAR(512) UNIQUE /*\n    @es_tipo: fichero\n  */,\n  id_fichero_padre INTEGER,\n  FOREIGN KEY (id_fichero_padre) REFERENCES Fichero (id)\n);",
    "atributos": {}
  },
  "Blog_post": {
    "tabla": "Blog_post",
    "composicion": {
      "id": {
        "sentencia": "columna",
        "columna": "id",
        "tipo": "INTEGER",
        "detalles": "PRIMARY KEY AUTO_INCREMENT",
        "orden": 0,
        "atributos": {}
      },
      "titulo": {
        "sentencia": "columna",
        "columna": "titulo",
        "tipo": "VARCHAR",
        "detalles": "(255)",
        "orden": 1,
        "atributos": {
          "tipo": "texto",
          "descripcion": "El título del post.",
          "maximo_de_texto": "255",
          "minimo_de_texto": "1"
        }
      },
      "subtitulo": {
        "sentencia": "columna",
        "columna": "subtitulo",
        "tipo": "VARCHAR",
        "detalles": "(512)",
        "orden": 2,
        "atributos": {
          "tipo": "texto",
          "descripcion": "El subtítulo del post.",
          "maximo_de_texto": "255",
          "minimo_de_texto": "1"
        }
      },
      "contenido": {
        "sentencia": "columna",
        "columna": "contenido",
        "tipo": "TEXT",
        "detalles": "",
        "orden": 3,
        "atributos": {
          "tipo": "texto",
          "descripcion": "El contenido del post.",
          "maximo_de_texto": "255",
          "minimo_de_texto": "1"
        }
      },
      "fecha_de_creacion": {
        "sentencia": "columna",
        "columna": "fecha_de_creacion",
        "tipo": "DATETIME",
        "detalles": "",
        "orden": 4,
        "atributos": {
          "tipo": "fecha",
          "descripcion": "La fecha de la creación del post.",
          "interceptar": [
            {
              "tipo": "interceptar",
              "eval": " await $interceptors.Columns.fijar_fecha_actual_al_insertar(data, 'fecha_de_creacion', this)"
            }
          ]
        }
      },
      "fecha_de_actualizacion": {
        "sentencia": "columna",
        "columna": "fecha_de_actualizacion",
        "tipo": "DATETIME",
        "detalles": "",
        "orden": 5,
        "atributos": {
          "tipo": "fecha",
          "descripcion": "La fecha de la última actualización del post.",
          "interceptar": [
            {
              "tipo": "interceptar",
              "eval": " await $interceptors.Columns.fijar_fecha_actual_al_actualizar(data, 'fecha_de_actualizacion', this)"
            }
          ]
        }
      }
    },
    "script": "\n\nCREATE TABLE Blog_post (\n  id INTEGER PRIMARY KEY AUTO_INCREMENT,\n  titulo VARCHAR(255) /*\n    @tipo: texto\n    @descripcion: El título del post.\n    @maximo_de_texto: 255\n    @minimo_de_texto: 1\n  */,\n  subtitulo VARCHAR(512) /*\n    @tipo: texto\n    @descripcion: El subtítulo del post.\n    @maximo_de_texto: 255\n    @minimo_de_texto: 1\n  */,\n  contenido TEXT /*\n    @tipo: texto\n    @descripcion: El contenido del post.\n    @maximo_de_texto: 255\n    @minimo_de_texto: 1\n  */,\n  fecha_de_creacion DATETIME /*\n    @tipo: fecha\n    @descripcion: La fecha de la creación del post.\n    @interceptar: await $interceptors.Columns.fijar_fecha_actual_al_insertar(data, 'fecha_de_creacion', this)\n  */,\n  fecha_de_actualizacion DATETIME /*\n    @tipo: fecha\n    @descripcion: La fecha de la última actualización del post.\n    @interceptar: await $interceptors.Columns.fijar_fecha_actual_al_actualizar(data, 'fecha_de_actualizacion', this)\n  */\n);",
    "atributos": {}
  },
  "Blog_comentario_de_post": {
    "tabla": "Blog_comentario_de_post",
    "composicion": {
      "id": {
        "sentencia": "columna",
        "columna": "id",
        "tipo": "INTEGER",
        "detalles": "PRIMARY KEY AUTO_INCREMENT",
        "orden": 0,
        "atributos": {}
      },
      "contenido": {
        "sentencia": "columna",
        "columna": "contenido",
        "tipo": "TEXT",
        "detalles": "",
        "orden": 1,
        "atributos": {
          "tipo": "texto largo",
          "descripcion": "El contenido en HTML del post.",
          "interceptar": [
            {
              "tipo": "interceptar",
              "eval": " await $interceptors.Columns.solo_html_seguro(data, 'contenido', this)"
            }
          ]
        }
      },
      "detalles": {
        "sentencia": "columna",
        "columna": "detalles",
        "tipo": "TEXT",
        "detalles": "",
        "orden": 2,
        "atributos": {
          "tipo": "texto largo",
          "descripcion": "Detalles sobre el post."
        }
      },
      "fecha_de_creacion": {
        "sentencia": "columna",
        "columna": "fecha_de_creacion",
        "tipo": "DATETIME",
        "detalles": "",
        "orden": 3,
        "atributos": {
          "tipo": "fecha",
          "descripcion": "La fecha de la creación del post.",
          "interceptar": [
            {
              "tipo": "interceptar",
              "eval": " await $interceptors.Columns.fijar_fecha_actual_al_insertar(data, 'fecha_de_creacion', this)"
            }
          ]
        }
      }
    },
    "script": "\n\nCREATE TABLE Blog_comentario_de_post (\n  id INTEGER PRIMARY KEY AUTO_INCREMENT,\n  contenido TEXT /*\n    @tipo: texto largo\n    @descripcion: El contenido en HTML del post.\n    @interceptar: await $interceptors.Columns.solo_html_seguro(data, 'contenido', this)\n  */,\n  detalles TEXT /*\n    @tipo: texto largo\n    @descripcion: Detalles sobre el post.\n  */,\n  fecha_de_creacion DATETIME /*\n    @tipo: fecha\n    @descripcion: La fecha de la creación del post.\n    @interceptar: await $interceptors.Columns.fijar_fecha_actual_al_insertar(data, 'fecha_de_creacion', this)\n  */\n);",
    "atributos": {}
  }
}