jueves, 20 de febrero de 2014

Construcción de bases de datos. Tablas, campos y claves

DEFINICIÓN DE TABLAS
Las tablas constituyen la estructura principal de una base de datos. La creación de tablas debe estar supeditada a la representación del dominio o el ámbito de aplicación de las mismas. Esto es en función de los procesos y actividades que lleva a cabo una institución, la información y documentación que produce, su tratamiento y los servicios que ofrece. Las tablas o entidades deben tener una denominación que identifique el contenido de la información que almacenará, el nombre del proceso que se desempeña con la información almacenada o la finalidad en el tratamiento de la misma. Por ejemplo el caso de una base de datos de un directorio de recursos web, plantea diversas cuestiones. En primer lugar, cómo son los directorios web, qué información contienen, cómo se estructuran, cómo procesan la información, cómo la representan y en definitiva cuál es la cadena documental de la información hasta que finalmente es visualizada en forma de directorio. En segundo lugar, la definición de tablas viene dada en función de las características del caso y procesamiento de la información del directorio, por ello una tabla de registro de recursos web es fundamental para ingresar inicialmente los recursos. Pero los recursos deben ser descritos y catalogados, por lo tanto se necesita una tabla de catálogo más completa que la de registro. Además los recursos web tienen características tipificadoras que los distinguen como por ejemplo el tipo de recurso, la temática que abordan, el público objetivo al que están destinados. Ello implica una tabla de tipos de recursos, una tabla de categorías temáticas y una tabla de destinatarios. Pero además los recursos de un directorio web pueden ser valorados mediante comentarios o escalas. Esto significa que se deberán añadir una tabla que almacene los comentarios de los usuarios y una tabla que almacene las puntuaciones de los mismos. Y si existen usuarios, también existirán administradores y trabajadores de la compañía o empresa responsable del directorio que accederán al sistema con diferentes propósitos. Ello conlleva una tabla de usuarios y una tabla de administradores. Pero además dentro de los usuarios y administradores existen distintas categorías, por lo tanto tenemos usuarios más o menos experimentados y administradores con distintos rangos de acceso a las funciones y posibilidades del sistema de información del directorio web. En consecuencia, se necesitarán dos nuevas tablas, la correspondiente a los tipos de usuarios y a los tipos de administradores. A todo ello, debe sumarse el estado de la descripción de los recursos web que se registran, que pueden encontrarse en diversas fases, por ejemplo (identificación, descripción, publicación, baja) lo que hace requerir una nueva tabla correspondiente al estado del recurso. Como se puede observar en el ejemplo de un directorio de recursos web, cada fase del tratamiento de la información está considerada en una tabla específica (registro, catálogo) así como los actores del sistema de información (usuarios, administradores) y las tablas auxiliares y tipologías que están directamente vinculadas con los mismos (tipo de recurso, clasificación, categorías, estados, tipos de usuarios y tipos de administradores), además de las tablas relativas a su interacción en la web con los usuarios (comentarios, valoraciones). Todas las acciones que pueden desempeñarse en el sistema de información son representadas para almacenar la información que generan, dando como resultado una tabla especializada en guardar una información puntual que puede completarse con terceras tablas.


DEFINICIÓN DE CAMPOS
Los campos de una tabla de una base de datos son fundamentales para guardar la información de una manera completamente estructurada y ordenada. Esto es definir los rasgos, características y aspectos que deben ser tenidos en cuenta para describir o procesar cada uno de los ítems, objetos, elementos sujetos a descripción. Por ejemplo, una tabla de comentarios de un directorio web, tendrá que contener una información tal que permita obtener el usuario que hizo el comentario, el recurso sobre el cuál se realizó el comentario, el comentario propiamente dicho, la fecha en la que se realizó el comentario, si el comentario forma parte de una respuesta a otro comentario. Todo ello puede ser definido en los campos id (de identificación), id_usuario (campo clave externo para identificar el usuario), id_recurso (campo clave externo para identificar el recurso web), texto (campo que almacena el texto del comentario), fecha1 (campo para la fecha del comentario), fecha2 (campo para la fecha de la edición del comentario), id_comentario (campo clave externo para identificar el comentario que suscita la réplica del presente comentario). A parte de identificar los campos necesarios es necesario definir la tipología de los campos o lo que es lo mismo, el tipo de información que éstos contendrán. Dependiendo del sistema de bases de datos que se emplee las opciones serán más o menos limitadas. Por ejemplo Microsoft Access permite los campos básicos que pueden ser consultados en la tabla1. En cambio MySQL, que corresponde a una base de datos más completa y potente, permite una gran variedad de campos para ser utilizados en muy diversos casos, véase tabla2.


Tipología de campos en Microsoft Access
Tipo de campo
Capacidad
Descripción
Texto
Límite de 255 caracteres

El campo de texto permite combinar cadenas de caracteres numéricos, alfabéticos, alfanuméricos, etc.

Memo
Límite de 65.536 caracteres

Su empleo está centrado en textos completos como descripciones, anotaciones, extractos de textos.

Numérico
Límite 8 bytes

Utilizado para guardar valores numéricos, cálculos matemáticos o sus resultados. Acepta valores decimales y números enteros. No se utiliza para valores monetarios.

Fecha/Hora
Límite 8 bytes

Guarda la información de fecha y hora en formato Access, véase: m/dd/aaaa h:mm:ss A.M./P.M.

Currency
Límite 8 bytes

Se guardan valores monetarios.

Autonumérico
Límite 8 bytes

Campo numérico adaptado para números secuenciales con unidad incremental o numeración aleatoria. Utilizado para crear el campo clave principal primario.

Si/No
Límite 1 bit

Es el campo lógico que almacena valores como Sí/No, Verdadero/Falso, Activado/Desactivado, 0/1. El campo sólo guarda uno de los dos valores pero no acepta un valor nulo.

Objeto OLE
Límite de 1GB

Almacena documentos ofimáticos, imágenes, hojas de cálculo, sonidos, vídeos y cualquier objeto binario creado mediante programas con protocolo OLE (Object Linking and Embedding). Para introducir tales objetos Access debe incrustar el contenido, repercutiendo directamente en la velocidad y capacidad de gestión de los contenidos.

Hipervínculo
Límite de 64.000 caracteres

Permite guardar direcciones URL en las que se aloja el recurso o contenido vinculado.

Asistente para búsquedas
Límite 4 bytes

Consiste en un campo con una lista de opciones desplegables, o bien un cuadro combinado de opciones que permiten alojar o almacenar una información con unos valores previamente dados y predeterminados, o bien realizar un vínculo con otra tabla de la base de datos para introducir una información relacionada. Este campo tiene una función similar al campo clave externo o foráneo que sirve para establecer relaciones entre tablas.

Tabla1. Tipología de campos en Microsoft Access


Tipología de campos en MySQL
Numéricos
Campo
Capacidad
Descripción
TINYINT
1 byte

Número entero positivo o negativo de tamaño muy pequeño,  con un rango de valores comprendido entre 0 y 255

SMALLINT
2 bytes

Número entero positivo o negativo de tamaño pequeño, con un rango de valores comprendido entre 0 y 65.535

MEDIUMINT
3 bytes

Número entero positivo o negativo de tamaño medio, con un rango de valores comprendido entre 0 y 16.777.215

INT(8)
4 bytes. Determinado por el usuario

El campo definido como INT, permite definir entre paréntesis el número de caracteres máximo que admite el número. Por tanto es un número entero positivo o negativo de tamaño normal, con un rango de valores comprendido entre 0 y 429.4967.29. Por ejemplo el campo INT(8) especifica un número de 8 caracteres como máximo.

BIGINT
8 bytes

Número entero positivo o negativo de tamaño grande, con un rango de valores comprendido entre 0 y 18.446.744.073.709.551.615 caracteres

FLOAT
Precisión 0-23 decimales

Campo para número en coma flotante de precisión simple

DOUBLE
Precisión de 24 a 53 decimales

Campo para número en coma flotante de precisión doble

DECIMAL(5,2)
Determinado por el usuario
Número en coma flotante con indicación de la precisión (número de decimales significativos) y la escala (número de dígitos que se almacenan a continuación del punto decimal)
Fecha y hora
Campo
Estructura
Descripción
DATETIME
yyyy-mm-dd hh:mm:ss

Se utiliza para mostrar una fecha y hora completa. El rango soportado es de '1000-01-01 00:00:00' a '9999-12-31 23:59:59'

DATE
yyyy-mm-dd

 El campo DATE es utilizado cuando sólo es necesario guardar la información de la fecha. El rango soportado es de '1000-01-01' a '9999-12-31'

TIMESTAMP
yyyymmddhhmmss

Permite realizar una marca de tiempo automática en el momento en el que se crea un registro o se modifica. Permite almacenar caracteres en formato de fecha YYYY-MM-DD HH:MM:SS, YY-MM-DD HH:MM:SS, YYYY-MM-DD, YY-MM-DD, YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, YYMMDD,

TIME
hh:mm:ss

Campo para el almacenamiento de horas. Acepta el rango de -838:59:59 a 838:59:59.

YEAR
yyyy

Permite el almacenamiento específico de años mostrados en formatos de dos y cuatro dígitos.

Cadenas de caracteres
Campo
Capacidad
Descripción
CHAR(50)
0-255 caracteres no binarios

Campo para el almacenamiento de una cadena de caracteres de longitud fija , utilizado en los casos en que la información no varía de tamaño y se represente siempre de la misma forma. Incluso si no se utilizan todos los caracteres definidos quedan completados con espacios. Cuando son representados los espacios finales son eliminados.

VARCHAR(500)
0-65.535 caracteres no binarios

Campo de longitud variable usado para los casos en que la información puede variar de longitud. Permite especificar la longitud entre paréntesis al igual que el campo CHAR.

BINARY
0-255 caracteres binarios
Campo para el almacenamiento de información y contenidos binarios de extensión fija.
VARBINARY
0-65.535 caracteres binarios
Campo para el almacenamiento de información y contenidos binarios de extensión variable.
TINYBLOB
255 caracteres binarios
Campo binario de tamaño muy pequeño
BLOB
65.535 caracteres binarios
Campo binario de tamaño pequeño
MEDIUMBLOB
16.777.215 caracteres binarios
Campo binario de tamaño mediano
LONGBLOB
4.294.967.295 caracteres binarios
Campo binario de tamaño grande
TINYTEXT
255 caracteres no binarios
Campo para cadena de texto no binario de tamaño muy pequeño
TEXT
65.535 caracteres no binarios
Campo para cadena de texto no binario de tamaño pequeño
MEDIUMTEXT
16.777.215 caracteres no binarios
Campo para cadena de texto no binario de tamaño mediano
LONGTEXT
4.294.967.295 caracteres no binarios
Campo para cadena de texto no binario de tamaño grande
ENUM
65.535 valores distintos
Campo de enumeración en el que es posible guardar 1 valor de todos los presentados o disponibles. Equivale a una lista de opciones o de valores prefijados.
SET
Campo de enumeración en el que es posible guardar hasta 64 valores de todos los presentados o disponibles. Equivalen a una lista de opciones o de valores prefijados.
Lógicos
Campo
Capacidad
Descripción
BOOL
0/1, True/False
Campo para el almacenamiento de valores booleanos
Tabla2. Tipología de campos en MySQL


DEFINICIÓN DE CLAVES
Los campos claves, tal como se explicó en el apartado anterior, permiten identificar de manera unívoca cada objeto, elemento o registro de una tabla o entidad. Por este motivo se debe tener en cuenta que su control interno a efectos del sistema de información propiamente dicho, deba ser lo más sencillo posible. Con este objetivo, los campos claves principales primarios, suelen ser campos de tipo numérico, con propiedad autonumérica correlativa basada en un incremento unitario, es decir de tipo +1. Para facilitar la tarea de diseño de campos y tablas, se aconseja que el campo clave principal sea denominado siempre como campo "id" en minúsculas. Para definir los campos externos o foráneos destinados al almacenamiento de un número identificador de una tabla externa para realizar algún tipo de relación, se aconseja que el tipo de campo sea numérico entero de tamaño medio y con una nomenclatura similar a la siguiente "id_nombretabla" en donde "id" representa que se trata de un campo clave de identificación, "_" que el campo relaciona una tabla externa y "nombretabla" es el texto que habrá que sustituir por el nombre de la tabla en minúsculas y con todo el nombre seguido sin espacios.

1 comentario:

Nota: solo los miembros de este blog pueden publicar comentarios.