miércoles, 26 de febrero de 2014

Estructura de una base de datos optimizada aplicada al NWN

CAPÍTULO 1 - MOTIVOS

Existen varios motivos, pero los más importantes son 2:
  • Reducción de sentecias sql, lo cual repercute a medio-largo plazo en la velocidad del server.
  • Limpieza y orden.

CAPÍTULO 2 - ESTRUCTURA

Lo primero que tenemos que hacer antes de crearla, es tener bien claro las variables y tener en mente que en un futuro puede ser que deseemos añadir más. Para ello podemos valernos de cualquier procesador de textos o papel y lapiz (como a la antigua usanza).
Una vez que sabemos todos los datos que queremos guardar, deberíamos dividirlos en 2 bloques, datos básicos (requeridos para poder jugar) y datos opcionales o indispensables.
Consejo: A la hora de crear tablas es recomendable que sean de tipo innodb. Esta opción nos dejará trabajar con posibles relaciones. También cabe estudiar el tema de los Procesos Almacenados.
ESTRUCTURA BÁSICA
A continuación muestro como debería de quedar las tablas y/o campos.
Tabla: cuentas
Campo Tipo Atributos Extra Otros
id_cuenta int unsigned auto_increment primary key
cuenta varchar(100)
password varchar(100)
cdkey longtext
baneado int
Guardará todos los datos básicos referente a las cuentas.
Tabla: personajes
Campo Tipo Atributos Extra Otros
id_pj int unsigned auto_increment primary key
id_cuenta int unsigned relación
nombre varchar(100)
online int
Guardará todos los datos básicos referente a los pjs. Relacionada con la tabla cuentas.
Tabla: server
Campo Tipo Atributos Extra Otros
id_server int unsigned auto_increment primary key
ano int
mes int
dia int
Esta tabla contendría los datos fundamentales para el funcionamiento del servidor. Yo he puesto estos, pero lógicamente se podrían añadir más.
ESTRUCTURA AVANZADA
Tabla: caracteristicas
Campo Tipo Atributos Extra Otros
id_car int unsigned auto_increment primary key
id_pj int unsigned relación
fue int
des int
con int
inte int
sab int
car int
pgact int
pgtotal int
fechainicial int
xp int
oro int
id_deidad int relación
raza varchar(100)
fortaleza int
reflejos int
voluntad int
ataquebase int
Esta tabla albergaría las características de la ficha de los pjs. Si en un futuro se quieren introducir más variables en ellas no abría problema. Mantendrá relación con la tabla de personajes y la tabla de dioses.
Tabla: areas
Campo Tipo Atributos Extra Otros
id_area int unsigned auto_increment primary key
ref varchar(100)
descripcion longtext
Esta tabla almacenará todas las referencias de las áreas actuales y futuras junto con el nombre de cada una de ellas.
Tabla: quest
Campo Tipo Atributos Extra Otros
id_quest int unsigned auto_increment primary key
ref varchar(100)
descripcion longtext
activa int
Almacenará todas las referencias y nombres descriptivos de las quest. Opcinalmente, yo he decidido poner una campo más para poder activarlas y desactivarlas en caso de que no funcionen bien o cualquier otro problema que surja con ellas.
Tabla: diario
Campo Tipo Atributos Extra Otros
id_diario int unsigned auto_increment primary key
id_pj int unsigned relación
id_quest int unsigned relación
En esta tabla se guardarán las quest hechas por los pjs. Mantendrá relación con la tabla de personajes y la tabla de quest.
Tabla: areasv
Campo Tipo Atributos Extra Otros
id_areasv int unsigned auto_increment primary key
id_pj int unsigned relación
id_area int unsigned relación
Guardará las áreas visitadas por los pjs. Mantendrá relación con la tabla personajes y areas.
Tabla: estadisticas
Campo Tipo Atributos Extra Otros
id_estad int unsigned auto_increment primary key
id_pj int unsigned relación
xpmonstruos int
xpviajes int
xpfabricar int
xpquest int
Aqui almacenaremos cualquier variable que nos sirva para las estadísticas. Se le podrán ir añadiendo más.
Tabla: dioses
Campo Tipo Atributos Extra Otros
id_deidad int unsigned auto_increment primary key
ref varchar(100)
descripcion longtext
Aquí incluiremos el listado de dioses.

CAPÍTULO 3 - OTRAS ALTERNATIVAS

Si sois de los que no os gustan tener muy estructurada la base de datos pero no queréis renuncionar a tenerla optimizada, siempre podéis juntar con la tabla de personajes aquellas tablas que solo van a tener un registro por pj.
Por ejemplo: Los campos de las tablas estadisticas y características podrían agregarse a la de personajes.
Y con éste último capítulo doy por concluido este tutorial. Espero que veáis en él un ejemplo a seguir.

No hay comentarios:

Publicar un comentario