martes, 6 de febrero de 2018

BASE DE DATOS

Concepto
Una base de datos es una colección de información organizada de forma que un programa de ordenador pueda seleccionar rápidamente los fragmentos de datos que necesite. Una base de datos es un sistema de archivos electrónico.
Las bases de datos tradicionales se organizan por campos, registros y archivos. Un campo es una pieza única de información; un registro es un sistema completo de campos; y un archivo es una colección de registros. Por ejemplo, una guía de teléfono es análoga a un archivo. Contiene una lista de registros, cada uno de los cuales consiste en tres campos: nombre, dirección, y número de teléfono.
El software de base de datos te permite organizar la información (datos). Esto ayuda a los usuarios a hacer un seguimiento de las listas de cosas, ordenar la información por categorías y encontrar los datos que se ajusten a criterios específicos. Internet, las grandes y las pequeñas empresas y el gobierno confían en bases de datos para gestionar diversos tipos de información. La guía telefónica es un ejemplo de una base de datos. El software de base de datos también ayuda a los usuarios a administrar los inventarios de productos, cuentas de clientes, fondos de bibliotecas e incluso sitios web.

importancia 
Las Bases de Datos tienen una gran relevancia a nivel personal, pero más si cabe, a nivel empresarial, y se consideran una de las mayores aportaciones que ha dado la informática a las empresas. En la actualidad, cualquier organización que se precie, por pequeña que sea, debe contar con una Base de Datos, pero para que sea todo lo efectiva que debe, no basta con tenerla: hay que saber cómo gestionarlas.
Las principales utilidades que ofrece una base de datos a la empresa son las siguientes:
  • Agrupar y almacenar todos los datos de la empresa en un único lugar.
  • Facilitar que se compartan los datos entre los diferentes miembros de la empresa.
  • Evitar la redundancia y mejorar la organización de la agenda.
  • Realizar una interlocución adecuada con los clientes.
Si una Base de Datos se gestiona adecuadamente, la organización obtendrá diferentes ventajas. Aumentará su eficacia, habrá trabajos que se realicen con mayor rapidez y agilidad debido a la simplificación de los mismos, podremos mejorar la seguridad de los datos que almacenamos, y con todos estos factores, maximizaremos los tiempos y por tanto, se producirá una mejora en la productividad.
elementos de base de datos
Como sabemos, la base de datos es un conjunto de información almacenada en un dispositivo electrónico, el cual permite acceso a esta información, para administrar esta información es necesario un conjunto de programas o software que nos permite manipular esta información.
Elementos de una base de datos
Los principales elementos de una base de datos son los siguientes:
Tablas
Es el elemento principal de la base de datos, ya que allí se registra la información que se quiere administrar. Está compuesta, como una hoja de cálculo, por filas y columnas. Cada archivo de una base de datos puede contener una o millones de tablas como sea necesario.
Formularios
La información que se introduce a la base de datos puede introducirse directamente en las tablas, pero también pude ser a través de un formulario, esto lo que resulta práctico, Los formularios hacen que sea más fácil introducir los datos.
Consultas
Este elemento que se emplea para buscar y seleccionar la información que requiere el usuario del interior de la base de datos. La consulta, nos permite establecer los criterios de búsqueda para que el software que administra la información seleccione, dentro de las tablas, aquellos datos que se quieren conocer.
Informes
Es te elemento se utilizan para que la información que nos arrojan las búsquedas nos aparezca ordenada y bien presentada para cuando el usuario demande una impresión del documento. Gracias a los informes, el usuario puede seleccionar que información, de la que se registró en las tablas de una base de datos, desea imprimir y con qué formato.
registro
Un registro es una fila de una base de datos, una agrupación horizontal de datos. El contenido de estos campos es único para esa fila. En el ejemplo del listado de teléfonos, cada apellido empieza una fila o registro que contiene datos en los campos del nombre, dirección y número de teléfono. Un registro se suele usar en una búsqueda de base de datos porque cada registro tiene una cualidad identificara única (o valor). Un registro de base de datos es, básicamente, una fila que contiene datos únicos en cada uno de los campos. Una base de datos normalmente tendrá un gran número de registros pero sólo un pequeño número de campos.

Qué es el Registro de Bases de Datos?

El registro nacional de bases de datos es un directorio de las bases de datos que tienen las empresas (y próximamente de personas naturales) que va a estar disponible al público. Está en la página de la Superintendencia de Industria y Comercio (sic.gov.co). Aquí debes hacer el registro de bases de datos de tu empresa.

Base de datos de registro de RMS

Para cada clúster de certificación raíz o de licencias, el programa de instalación de RMS instala una base de datos de registro en la misma instancia de servidor de base de datos donde se aloja la base de datos de configuración. El programa de instalación crea también una cola de mensajes privada para el registro en Message Queue Server. El servicio de escucha de registro transmite los datos de esta cola de mensajes a la base de datos de registro.
El grupo de servicio de RMS tiene permisos de ejecución sobre los procedimientos almacenados que se encuentran en la base de datos de registro.
El servicio de escucha de registro envía grandes cantidades de datos a la base de datos de registro; por tanto, los administradores deben crear filtros para que esta base de datos almacene sólo la información necesaria para la organización.

SISTEMA DE GESTIÓN DE REGISTROS FDM (RMS)

 FDM RMS ES LA SOLUCIÓN MÁS COMPLETA PARA LA CAPTURA E INFORME DE DATOS UTILIZADA HOY EN DÍA EN LA INDUSTRIA DE INCENDIOS Y EMS. CON SU DISEÑO MODULAR Y FUNCIONALIDAD INNOVADORA, FDM RMS OFRECE A LOS USUFDM RMS ES LA SOLUCIÓN MÁS COMPLETA PARA LA CAPTURA E INFORME DE DATOS UTILIZADA HOY EN DÍA EN LA INDUSTRIA DE INCENDIOS Y EMS. CON SU DISEÑO MODULAR Y FUNCIONALIDAD INNOVADORA, FDM RMS OFRECE A LOS USUARIOS UNA AMPLIA GAMA DE HERRAMIENTAS, QUE VAN DESDE EL INFORME DE DATOS DE INCIDENTES HASTA LA GESTIÓN DEL PERSONAL.ARIOS UNA AMPLIA GAMA DE HERRAMIENTAS, QUE VAN DESDE EL INFORME DE DATOS DE INCIDENTES HASTA LA GESTIÓN DEL PERSONAL.


campo
Un campo es la unidad básica de entrada de datos de un registro. Para definir un nuevo campo, en primer lugar debe darle un nombre. A continuación, seleccione las distintas opciones para interpretar, introducir, calcular, almacenar y mostrar los datos en los campos.
Después de definir un campo, puede configurar opciones de validación, introducción automática y almacenamiento. Consulte Configurar opciones de campos para obtener más información sobre la configuración de estas opciones.
Consejo  Haga clic en Imprimir para imprimir las definiciones del campo desde la base de datos
En el ejemplo del listado telefónico, las cuatro categorías de datos del apellido, el nombre, la dirección y el número de teléfono se llaman "campos". Un campo es una unidad sencilla de datos que es única dentro de la entrada o fila, pero la categoría de datos general es común a todas las entradas. Por ejemplo, "dirección" es un campo común a todas las entradas nombradas en el listado telefónico, pero el contenido del campo de dirección será único para cada entrada. Como regla, el campo de la base de datos se refiere a las columnas, o categorías de datos, que son utilizadas por todas las entradas o filas.

Diferencias entre campos y registros en una base de datos

Los campos y los registros son dos componentes básicos de una base de datos, que es una colección organizada de información, o datos. El término "campos" se refiere a columnas, o categorías verticales de datos. El término "registros" se refiere a las filas, o agrupaciones horizontales de datos de campo. Es posible ver ejemplos de ambos componentes de bases de datos en las viejas bases de datos impresas y también en las bases de datos modernas asistidas por computadora.

tabla
Las tablas son objetos de base de datos que contienen todos sus datos. En las tablas, los datos se organizan con arreglo a un formato de filas y columnas, similar al de una hoja de cálculo. Cada fila representa un registro único y cada columna un campo dentro del registro. Por ejemplo, en una tabla que contiene los datos de los empleados de una compañía puede haber una fila para cada empleado y distintas columnas en las que figuren detalles de los mismos, como el número de empleado, el nombre, la dirección, el puesto que ocupa y su número de teléfono particular.
  • El número de tablas de una base de datos se limita solo por el número de objetos admitidos en una base (2.147.483.647). Una tabla definida por el usuario estándar puede tener hasta 1.024 columnas. El número de filas de la tabla solo está limitado por la capacidad de almacenamiento del servidor.
  • Puede asignar propiedades a la tabla y a cada columna de la tabla para controlar los datos admitidos y otras propiedades. Por ejemplo, puede crear restricciones en una columna para no permitir valores nulos o para proporcionar un valor predeterminado si no se especifica un valor, o puede asignar una restricción de clave en la tabla que exige la unicidad o definir una relación entre las tablas.
  • Los datos de la tabla se pueden comprimir por filas o por página. La compresión de datos puede permitir que se almacenen más filas en una página. Para más información, consulte Data Compression.

Tipos de tablas

Además del rol estándar de las tablas básicas definidas por el usuario, SQL Server proporciona los siguientes tipos de tabla que permiten llevar a cabo objetivos especiales en una base de datos:
Tablas con particiones
Las tablas con particiones son tablas cuyos datos se han dividido horizontalmente entre unidades que pueden repartirse por más de un grupo de archivos de una base de datos. Las particiones facilitan la administración de índices y tablas grandes al permitir el acceso y la administración de subconjuntos de datos rápidamente y con eficacia, mientras se mantiene la integridad de la colección global. De forma predeterminada, SQL Server 2017 admite hasta 15.000 particiones.Para obtener más información, vea Partitioned Tables and Indexes.
Tablas temporales
Las tablas temporales se almacenan en tempdb. Hay dos tipos de tablas temporales: locales y globales. Se diferencian entre sí por los nombres, la visibilidad y la disponibilidad. Las tablas temporales locales tienen como primer carácter de sus nombres un solo signo de número (#); solo son visibles para el usuario de la conexión actual y se eliminan cuando el usuario se desconecta de la instancia de SQL Server. Las tablas temporales globales presentan dos signos de número (##) antes del nombre; son visibles para cualquier usuario después de su creación y se eliminan cuando todos los usuarios que hacen referencia a la tabla se desconectan de la instancia de SQL Server.
Tablas del sistema
SQL Server almacena los datos que definen la configuración del servidor y de todas sus tablas en un conjunto de tablas especial, conocido como tablas del sistema. Los usuarios no pueden consultar o actualizar directamente las tablas del sistema. La información de las tablas del sistema está disponible a través de las vistas del sistema. Para obtener más información, vea Vistas del sistema (Transact-SQL).
Tablas anchas
Las tablas anchas usan las columnas dispersas para aumentar hasta 30 000 el número total de columnas permitidas. Las columnas dispersas son columnas normales que disponen de un almacenamiento optimizado para los valores NULL. Este tipo de columnas reducen los requisitos de espacio de los valores NULL a costa de una mayor sobrecarga a la hora de recuperar valores no NULL. Una tabla ancha ha definido un conjunto de columnas, que es una representación XML sin tipo que combina todas las columnas dispersas de una tabla en una salida estructurada. El número de índices y estadísticas también se aumenta hasta 1.000 y 30.000, respectivamente. El tamaño máximo de una fila de una tabla ancha es de 8.019 bytes. Por consiguiente, la mayoría de los datos de cualquier fila deben ser NULL. El número máximo de columnas no dispersas más las columnas calculadas de una tabla ancha sigue siendo 1.024.
Las tablas anchas tienen las siguientes implicaciones de rendimiento.
  • Las tablas anchas pueden aumentar el costo de mantenimiento de los índices de la tabla.Se recomienda que el número de índices de una tabla ancha se limite a los índices necesarios para la lógica de negocios. Si el número de índices aumenta, también lo harán el tiempo de compilación de DML y los requisitos de memoria. Los índices no clúster deben ser índices filtrados que se aplican a subconjuntos de datos. Para obtener más información, consulte Create Filtered Indexes.
  • Las aplicaciones pueden agregar y quitar columnas de las tablas anchas de forma dinámica. Cuando se agregan o se quitan columnas, también se invalidan los planes de consulta compilados. Se recomienda diseñar una aplicación que se corresponda con la carga de trabajo prevista para minimizar los cambios de esquema.
  • Cuando se agregan y se quitan datos de una tabla ancha, el rendimiento puede verse afectado. El diseño de las aplicaciones debe corresponderse con la carga de trabajo prevista para minimizar los cambios llevados a cabo en los datos de la tabla.
  • Limite la ejecución de instrucciones DML en una tabla ancha destinadas a actualizar varias filas de una clave de agrupación en clústeres. La compilación y la ejecución de estas instrucciones pueden requerir recursos de memoria considerables.
  • Las operaciones de cambio de partición en las tablas anchas pueden resultar lentas, y su procesamiento podría requerir grandes cantidades de memoria. Los requisitos de rendimiento y de memoria son proporcionales al número total de columnas existentes en las particiones de origen y de destino.
  • Los cursores de actualización que actualizan columnas concretas de una tabla ancha deben enumerar las columnas de manera explícita en la cláusula FOR UPDATE. Esto ayudará a optimizar el rendimiento mientras se usan cursores.

Tareas de tabla comunes

En la tabla siguiente se proporcionan vínculos a las tareas comunes asociadas con la creación o modificación de una tabla.
Tareas de tablaTema
Describe cómo crear una tabla.Crear tablas (motor de base de datos)
Describe cómo eliminar una tabla.Eliminar tablas (motor de base de datos)
Describe cómo crear una nueva tabla que contenga algunas o todas las columnas de una tabla existente.Tablas duplicadas
Describe cómo cambiar el nombre de una tabla.Cambiar el nombre a las tablas (motor de base de datos)
Describe cómo ver las propiedades de la tabla.Ver la definición de tabla
Describe cómo determinar si otros objetos como una vista o un procedimiento almacenado dependen de una tabla.Ver las dependencias de una tabla
En la tabla siguiente se proporcionan vínculos a las tareas comunes asociadas con la creación o modificación de columnas en una tabla.
Tareas de columnaTema
Describe cómo agregar columnas a una tabla existente.Agregar columnas a una tabla (motor de base de datos)
Describe cómo eliminar columnas de una tabla.Eliminar columnas de una tabla
Describe cómo cambiar el nombre de una columna.Cambiar el nombre a las columnas (motor de base de datos)
Describe cómo copiar columnas de una tabla a otra, copiar solo la definición de la columna o copiar la definición y los datos.Copiar columnas de una tabla a otra (motor de base de datos)
Describe cómo modificar una definición de columna mediante el cambio del tipo de datos u otra propiedad.Modificar columnas (motor de base de datos)
Describe cómo cambiar el orden en el que aparecen las columnas.Cambiar el orden de las columnas de una tabla
Describe cómo crear una columna calculada en una tabla.Especificar columnas calculadas en una tabla
Describe cómo especificar un valor predeterminado de una columna.Este valor se usa si no se proporciona otro.

llave principal 
En el diseño de bases de datos relacionales, se llama clave principal a un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria.
Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN (asociado a un libro). Las guías telefónicas y diccionarios no pueden usar nombres o palabras o números del sistema decimal de Dewey como claves candidatas, porque no identifican unívocamente números de teléfono o palabras.

El modelo relacional, según se lo expresa mediante cálculo relacional y álgebra relacional, no distingue entre clave primaria y otros tipos de claves. Las claves primarias fueron agregadas al estándar SQL principalmente para conveniencia del programador. En una arquitectura entidad-relación, la clave primaria permite las relaciones de la tabla que tiene la clave primaria con otras tablas que van a utilizar la información de esta tabla.
La clave o llave primaria es un campo, o grupo de campos que identifica en forma única un registro. Ningún otro registro puede tener la misma llave primaria. La llave primaria se utiliza para distinguir un registro con el fin de que se pueda  tener acceso a ellos, organizarlos y manipularlos. En el caso de un registro de un empleado, él numero de este representa  un ejemplo de una llave primaria.

EJEMPLO:

Ejemplo: (una llave primaria)
Nombre Tabla : tb_producto
Campos : producto_id, nombre_producto, categoria_id,....
Llave primaria: producto_id (identificador único para diferenciar los productos)
Ejm:

producto_id...nombre_producto..categor…
1....................ceras............…
2....................shampoo..........…
3....................jaboncillos......…

Ejemplo: (dos llaves primarias)
Nombre Tabla : tb_comprobante
Campos : cbte_id,asiento_id,debe,haber,glosa,....
Llaves primarias: cbte_id,asiento_id(identificadores únicos para diferenciar un registro de otro)
Ejm:

cbte_id | asiento | debe | haber | glosa
1...........1.............40.......0..…
1...........2.............0.........40… de la compra
2...........1.............80.......0..… almuerzo
2...........2.............25.......0..… caja chica
2...........3.............0.........25… caja chica
2...........4.............0.........80… almuerzos

Por ejemplo, tenemos un catálogo de marcas de computadoras, la tabla sería:
idmarcamarca
1Lenovo
2Toshiba
3DELL
En esta caso la llave primaria sería id marca.

llave forranea
Llave Foránea
– Es llamada clave Externa, es uno o mas campos de un tabla que hacen referencia al campo o campos de clave principal de otra tabla, una clave externa indica como esta relacionadas las tablas. Los datos en los campos de clave externa y clave principal deben coincidir, aunque los nombres de los campos no sean los mismos.
– Los campos continuos se deben de marcos ambos campos y de la misma forma como se selecciona la Llave Primaria se debe de seleccionar la Llave Externa o Llave Foránea, utilizando el botón de Barra de Herramientas, Mouse o utilizando el Menú y la opción Edit. (Debe de aparecer una flecha)
– Si los campos no son continuos:
– Seleccionar el primer campo
– Presionar Control y sin soltarlo se debe seleccionar el otro campo (Seleccionar la Llave Externa de la misma Forma que la Llave Principal)

– La Llave Foránea también se determinar en el momento de las relaciones entre las tablas en la cual la Llave Primaria se realizar la unión con el otro campo de otra tabla y automáticamente se vuelve una llave foránea

EJEMPLO:
Como se puede observar en el siguiente ejemplo , es necesario definir primero la tabla hacia la cual se va a referenciar la clave Foránea. Ese es el único requisito.

normalización de base de datos

Fundamentos de la normalización

La normalización es el proceso de organizar los datos de una base de datos. Se incluye la creación de tablas y el establecimiento de relaciones entre ellas según reglas diseñadas tanto para proteger los datos como para hacer que la base de datos sea más flexible al eliminar la redundancia y las dependencias incoherentes.

Los datos redundantes desperdician el espacio de disco y crean problemas de mantenimiento. Si hay que cambiar datos que existen en más de un lugar, se deben cambiar de la misma forma exactamente en todas sus ubicaciones. Un cambio en la dirección de un cliente es mucho más fácil de implementar si los datos sólo se almacenan en la tabla Clientes y no en algún otro lugar de la base de datos. 


¿Qué es una "dependencia incoherente"? Aunque es intuitivo para un usuario mirar en la tabla Clientes para buscar la dirección de un cliente en particular, puede no tener sentido mirar allí el salario del empleado que llama a ese cliente. El salario del empleado está relacionado con el empleado, o depende de él, y por lo tanto se debería pasar a la tabla Empleados. Las dependencias incoherentes pueden dificultar el acceso porque la ruta para encontrar los datos puede no estar o estar interrumpida.

Hay algunas reglas en la normalización de una base de datos. Cada regla se denomina una "forma normal". Si se cumple la primera regla, se dice que la base de datos está en la "primera forma normal". Si se cumplen las tres primeras reglas, la base de datos se considera que está en la "tercera forma normal". Aunque son posibles otros niveles de normalización, la tercera forma normal se considera el máximo nivel necesario para la mayor parte de las aplicaciones.

Al igual que con otras muchas reglas y especificaciones formales, en los escenarios reales no siempre se cumplen los estándares de forma perfecta. En general, la normalización requiere tablas adicionales y algunos clientes consideran éste un trabajo considerable. Si decide infringir una de las tres primeras reglas de la normalización, asegúrese de que su aplicación se anticipa a los problemas que puedan aparecer, como la existencia de datos redundantes y de dependencias incoherentes.

En las descripciones siguientes se incluyen ejemplos.

Primera forma normal

  • Elimine los grupos repetidos de las tablas individuales.
  • Cree una tabla independiente para cada conjunto de datos relacionados.
  • Identifique cada conjunto de datos relacionados con una clave principal.
No use varios campos en una sola tabla para almacenar datos similares. Por ejemplo, para realizar el seguimiento de un elemento del inventario que proviene de dos orígenes posibles, un registro del inventario puede contener campos para el Código de proveedor 1 y para el Código de proveedor 2.

¿Qué ocurre cuando se agrega un tercer proveedor? Agregar un campo no es la respuesta, requiere modificaciones en las tablas y el programa, y no admite fácilmente un número variable de proveedores. En su lugar, coloque toda la información de los proveedores en una tabla independiente denominada Proveedores y después vincule el inventario a los proveedores con el número de elemento como clave, o los proveedores al inventario con el código de proveedor como clave.

Segunda forma normal

  • Cree tablas independientes para conjuntos de valores que se apliquen a varios registros.
  • Relacione estas tablas con una clave externa.
Los registros no deben depender de nada que no sea una clave principal de una tabla, una clave compuesta si es necesario. Por ejemplo, considere la dirección de un cliente en un sistema de contabilidad. La dirección se necesita en la tabla Clientes, pero también en las tablas Pedidos, Envíos, Facturas, Cuentas por cobrar y Colecciones. En lugar de almacenar la dirección de un cliente como una entrada independiente en cada una de estas tablas, almacénela en un lugar, ya sea en la tabla Clientes o en una tabla Direcciones independiente.

Tercera forma normal

  • Elimine los campos que no dependan de la clave.
Los valores de un registro que no sean parte de la clave de ese registro no pertenecen a la tabla. En general, siempre que el contenido de un grupo de campos pueda aplicarse a más de un único registro de la tabla, considere colocar estos campos en una tabla independiente.

Por ejemplo, en una tabla Contratación de empleados, puede incluirse el nombre de la universidad y la dirección de un candidato. Pero necesita una lista completa de universidades para enviar mensajes de correo electrónico en grupo. Si la información de las universidades se almacena en la tabla Candidatos, no hay forma de enumerar las universidades que no tengan candidatos en ese momento. Cree una tabla Universidades independiente y vincúlela a la tabla Candidatos con el código de universidad como clave.

EXCEPCIÓN: cumplir la tercera forma normal, aunque en teoría es deseable, no siempre es práctico. Si tiene una tabla Clientes y desea eliminar todas las dependencias posibles entre los campos, debe crear tablas independientes para las ciudades, códigos postales, representantes de venta, clases de clientes y cualquier otro factor que pueda estar duplicado en varios registros. En teoría, la normalización merece el trabajo que supone. Sin embargo, muchas tablas pequeñas pueden degradar el rendimiento o superar la capacidad de memoria o de archivos abiertos.

Puede ser más factible aplicar la tercera forma normal sólo a los datos que cambian con frecuencia. Si quedan algunos campos dependientes, diseñe la aplicación para que pida al usuario que compruebe todos los campos relacionados cuando cambie alguno.

Otras formas de normalización

La cuarta forma normal, también llamada Forma normal de Boyce Codd (BCNF, Boyce Codd Normal Form), y la quinta forma normal existen, pero rara vez se consideran en un diseño real. Si no se aplican estas reglas, el diseño de la base de datos puede ser menos perfecto, pero no debería afectar a la funcionalidad.

Normalización de una tabla de ejemplo

Estos pasos demuestran el proceso de normalización de una tabla de alumnos ficticia.
  1. Tabla sin normalizar: 

    Nº alumnoTutorDespacho-TutClase1Clase2Clase3
    1022García412101-07143-01159-02
    4123Díaz216201-01211-02214-01
  2. Primera forma normal: no hay grupos repetidos

    Las tablas sólo deben tener dos dimensiones. Puesto que un alumno tiene varias clases, estas clases deben aparecer en una tabla independiente. Los campos Clase1, Clase2 y Clase3 de los registros anteriores son indicativos de un problema de diseño. 

    Las hojas de cálculo suelen usar la tercera dimensión, pero las tablas no deberían hacerlo. Otra forma de considerar ese problema es con una relación de uno a varios y poner el lado de uno y el lado de varios en tablas distintas. En su lugar, cree otra tabla en la primera forma normal eliminando el grupo repetido (Nº clase), según se muestra a continuación:

    Nº alumnoTutorDespacho-TutNº clase
    1022García412101-07
    1022García412143-01
    1022García412159-02
    4123Díaz216201-01
    4123Díaz216211-02
    4123Díaz216214-01
  3. Segunda forma normal: eliminar los datos redundantes

    Observe los diversos valores de Nº clase para cada valor de Nº alumno en la tabla anterior. Nº clase no depende funcionalmente de Nº alumno (la clave principal), de modo que la relación no cumple la segunda forma normal.

    Las dos tablas siguientes demuestran la segunda forma normal: 

    Alumnos:

    Nº alumnoTutorDespacho-Tut
    1022García412
    4123Díaz216


    Registro:

    Nº alumnoNº clase
    1022101-07
    1022143-01
    1022159-02
    4123201-01
    4123211-02
    4123214-01
  4. Tercera forma normal: eliminar los datos no dependientes de la clave

    En el último ejemplo, Despacho-Tut (el número de despacho del tutor) es funcionalmente dependiente del atributo Tutor. La solución es pasar ese atributo de la tabla Alumnos a la tabla Personal, según se muestra a continuación:

    Alumnos:

    Nº alumnoTutor
    1022García
    4123Díaz


    Personal:

    NombreHabitaciónDept
    García41242
    Díaz21642


estructura de base de datos

La estructura de una base de datos hace referencia a los tipos de datos, los vínculos o relacionesy las restricciones que deben cumplir esos datos (integridad de datos y redundancia de datos).

La estructura de una base de datos es diseñada o descrita empleando algún tipo de modelo de datos.

También se puede emplear un lenguaje coloquial para describir la estructura de la base de datos, para luego pasarlo a un modelo de datos formal.

Un ejemplo a modo de descripción de la estructura de una base de datos puede ser:

ALUMNO: numero de alumno (entero de 6 números), nombre (cadena de 30 caracteres), apellido (cadena de 30 caracteres), año de nacimiento (entero de 4 números), especialidad (entero de 3 números).

ESPECIALIDAD: numero de especialidad (entero de 3 números), nombre de especialidad (cadena de 30 caracteres).



Cada bibliografía tendrá su forma de describir la estructura de la base de datos, algunas empleando notación en inglés, otras en español. Algunas emplearán ayudas visuales para marcar claves foráneas.

El sistema de gestión de bases de datos phpMyAdmin utiliza la siguiente estructura visual para mostrar la estructura de una tabla dentro una base de datos:

En este ejemplo se trata de una tabla llamada "Cuento", allí se almacenan cuentos que envían los autores en un sitio web de Literatura. Cada cuento tendrá un identificador único numérico (ID), un título (nombre del cuento), una descripción textual breve del texto, un cuerpo (el texto completo), una fecha de publicación, una categoría (un número que es una clave foránea correspondiente a otra tabla llamada Categoría donde, por ejemplo, el número 1 es Terror, 2 es Amor, 3 es Suspenso, etc.), y el último campo visitas que almacena un número sobre las veces que el texto es leído.
TIPO DE DATO
El tipo de un dato es el conjunto de valores que puede tomar durante el programa. Si se le intenta dar un valor fuera del conjunto se producirá un error.
La asignación de tipos a los datos tiene dos objetivos principales:
  • Por un lado, detectar errores en las operaciones
  • Por el otro, determinar cómo ejecutar estas operaciones

De Pascal se dice que es un lenguaje fuertemente titeado. Esto quiere decir que todos los datos deben de tener un tipo declarado explícita mente, y además que existen ciertas restricciones en las expresionesen cuanto a los tipos de datos que en ellas intervienen.
Una ventaja de los lenguajes fuertemente titeados es que se gasta mucho menos esfuerzo en depurar (corregir) los programas gracias a la gran cantidad de errores que detecta el compilador.
Los tipos de datos, como casi todos los objetos de Pascal, se pueden declarar. La declaración de tipos ya se comentó en el tema correspondiente a la estructura de un programa.

Existen muchas clasificaciones para los tipos de datos, y dependiendo de la fuente que mires, te mostrarán una u otra. A continuación tienes una de las posibles clasificaciones.:


MOTOR DE BASE DE DATOS
Motor de base de datos es el servicio principal para almacenar, procesar y proteger los datos. El Motor de base de datos proporciona acceso controlado y procesamiento de transacciones rápido para cumplir con los requisitos de las aplicaciones consumidoras de datos más exigentes de su empresa.
Use Motor de base de datos para crear bases de datos relacionales para el procesamiento de transacciones en línea o datos de procesamiento analíticos en línea. Se pueden crear tablas para almacenar datos y objetos de base de datos como índices, vistas y procedimientos almacenados para ver, administrar y proteger los datos. Puede usar SQL Server Management Studio para administrar los objetos de bases de datos y SQL Server Profiler para capturar eventos de servidor.

Tareas del motor de base de datos


El orden de los temas de la documentación del Motor de base de datos se corresponde con la secuencia principal de las tareas utilizadas para implementar un sistema que utiliza el Motor de base de datos para el almacenamiento de datos:
  • Diseñar y crear una base de datos que contenga las tablas relacionales o los documentos XML que el sistema necesita.
  • Implementar sistemas para obtener acceso y cambiar los datos almacenados en la base de datos, lo que incluye implementar los sitios Web o las aplicaciones que funcionan con los datos, así como crear procedimientos que utilicen las herramientas y utilidades de SQL Server para trabajar con los datos.
  • Aplicar los sistemas implementados en la organización o en los clientes.
  • Proporcionar soporte técnico administrativo diario para optimizar el rendimiento de la base de datos.

tipos de base de datos 


La definición teórica de una base de datos es bastante poco agraciada: una base de datos es todo conjunto de datos pertenecientes a un mismo contexto que se almacenan sistemáticamente para su posterior uso. Aunque esta definición teórica sea rigurosa no se circunscribe únicamente a la rama de las nuevas tecnologías que se encarga de estudiar la mejor forma de almacenar y acceder a la información almacenada.

Es común que muchas pequeñas y medianas empresas consideren que los sistemas de bases de datos son excesivamente complicados y caros para sus necesidades reales por lo que acaban utilizando diferentes plataformas para gestionar su información de una forma, que si bien parece ser fácil y sencilla en los inicios posteriormente se descubre que complica la gestión de estos datos.

Modelos de bases de datos
Existen diferentes maneras de ordenar y organizar la información para que este sea accesible para nosotros. No existe el sistema de ase de datos perfecto: hay que elegir aquella estructura que mejor se adapte a nuestras necesidades. Los siguientes son los tipos más comunes:

Las bases de datos jerárquicas construyen una estructura de jerarquía con los datos que permite una estructuración muy estable cuando gestionamos una gran cantidad de datos muy interrelacionados.
Las bases de datos en red derivan de las jerárquicas pero mejoran la gestión de datos redundantes manteniendo su rendimiento en consultas de datos.
Las bases de datos transaccionales están diseñadas para el envío y recepción de datos a grandes velocidades y de forma continua. Su único fin es la recepción y envío de información pero la gestión de almacenamiento o redundancia están fuera de su propósito.
Las bases de datos relacionales son las más utilizadas en aplicaciones reales. La información se almacena siempre haciendo referencia a otra por lo que se facilita la gestión y su uso por personal no especialista. En este modelo el lugar y la forma donde se guarde la información es secundario.
Las bases de datos orientadas a objetos han surgido como concepto tras la aparición de los sistemas de programación orientada a objetos.
Las bases de datos documentales están especializadas en el almacenamiento de textos completos, por lo que facilitan el tratamiento informatizado de grandes cadenas de caracteres.

MSQL
MySQL es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar archivos llamados de bases de datos.
Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza multiples tablas para almacenar y organizar la información. MySQL fue escrito en C y C++ y destaca por su gran adaptación a diferentes entornos de desarrollo, permitiendo su interactuación con los lenguajes de programación más utilizados como PHP, Perl y Java y su integración en distintos sistemas operativos.
También es muy destacable, la condición de open source de MySQL, que hace que su utilización sea gratuita e incluso se pueda modificar con total libertad, pudiendo descargar su código fuente. Esto ha favorecido muy positivamente en su desarrollo y continuas actualizaciones, para hacer de MySQL una de las herramientas más utilizadas por los programadores orientados a Internet.
Algunos enlaces para que amplíes esta información:

IMPORMIX
Informix, es un gestor de base de datos que incluye un RDBMS (sistema Administrador de Base de datos relacionales/ Relational Data Base Manager System) basado en SQL, un lenguaje de cuarta generación y herramientas para la inclusión de SQL en programas de aplicación.

IBM Informix ofrece un sistema de base de datos "híbrido" que es capaz de soportar de datos relacionales y no relacionales, que le da la capacidad de almacenar JSON (JavaScript Object Notation) y tablas relacionales en el mismo motor de almacenamiento. Además, puede aprovechar los dos tipos de datos de una sola aplicación que utiliza metodologías familiares y API.

IBM Informix también está optimizado para la gestión de datos integrado, incluyendo soporte para procesadores ARM, para apoyar la tendencia creciente de la informática móvil, aplicaciones de máquina a máquina y la "Internet de las cosas".

Es uno de los más importantes y reconocidos sistemas de database relacional, siendo una plataforma de gestión de datos integrada y segura que proporciona el procesamiento de transacciones en línea y la infraestructura de datos crítica necesaria para gestionar tu negocio y ofrece la mayor eficiencia y productividad en el manejo de información corporativa para obtener importantes ventajas competitivas.
ACCES
Microsoft Access es un sistema gestor de bases de datos relacionales (SGBD). Una base de datos suele definirse como un conjunto de información organizada sistemáticamente. En la terminología propia de las bases de datos hay tres conceptos claves dentro de las tablas: campo, registro y dato.
Un campo es cada uno de los tipos de datos que se van a usar. Se hace referencia a los campos por su nombre.
Un registro está formado por el conjunto de información en particular.
Un dato es la intersección entre un campo y un registro.
Partes de una base de datos de Access


Las secciones siguientes son breves descripciones de las partes de una base de datos de Access típica.
ORACLE 
Oracle (Nasdaq: ORCL) es la primera compañía de software de estereotipos que desarrolla e implementa aplicaciones para empresas cien por ciento activado por Internet a través de toda su línea de productos: base de datos, aplicaciones comerciales y herramientas de desarrollo de aplicaciones y soporte de decisiones. Oracle es el proveedor mundial de software para administración de información a lo largo de todo el mundo, muy por delante de la segunda de su segmento, Software AG
Oracle es básicamente una herramienta cliente/servidor para la gestión de Bases de Datos. Es un producto vendido a nivel mundial, aunque la gran potencia que tiene y su elevado precio hace que sólo se vea en empresas muy grandes y multinacionales, por norma general. En el desarrollo de páginas web pasa lo mismo: como es un sistema muy caro no está tan extendido como otras bases de datos, por ejemplo, Access, MySQL, SQL Server, etc.
Vamos ahora en centrarnos en que es Oracle exactamente y como funciona la programación sobre éste. Oracle como antes he mencionado se basa en la tecnología cliente/servidor, pues bien, para su utilización primero sería necesario la instalación de la herramienta servidor (Oracle 8i) y posteriormente podríamos atacar a la base de datos desde otros equipos con herramientas de desarrollo como Oracle Designer y Oracle Developer, que son las herramientas básicas de programación sobre Oracle.
Para desarrollar en Oracle utilizamos PL/SQL un lenguaje de 5ª generación, bastante potente para tratar y gestionar la base de datos, también por norma general se suele utilizar SQL al crear un formulario.
POSTGRESQL
PostgreSQL es una de las opciones más interesantes en bases de datos relacionales open-source. Michael Stonebraker inició el proyecto bajo el nombre Post Ingres a mediados de los 80’s con la idea de solucionar problemas existentes en las bases de datos en esa época. MySQL fue por mucho tiempo el motor más popular; pero hoy es propiedad de Oracle y esto limita su evolución.
Es gratuito y libre, además de que hoy nos ofrece una gran cantidad de opciones avanzadas. De hecho, es considerado el motor de base de datos más avanzado en la actualidad. (Y Platzi tiene un Curso de PostgreSQL)
Una característica interesante de PostgreSQL es el control de concurrencias multiversión; o MVCC por sus siglas en inglés. Este método agrega una imagen del estado de la base de datos a cada transacción. Esto nos permite hacer transacciones eventualmente consistentes, ofreciéndonos grandes ventajas en el rendimiento.
En Postgres no se requiere usar bloqueos de lectura al realizar una transacción lo que nos brinda una mayor escalabilidad. También PostgreSQL tiene Hot-Standby. Este permite que los clientes hagan búsquedas (sólo de lectura) en los servidores mientras están en modo de recuperación o espera. Así podemos hacer tareas de mantenimiento o recuperación sin bloquear completamente el sistema.
PostgreSQL aporta mucha flexibilidad a nuestros proyectos. Por ejemplo, nos permite definir funciones personalizadas por medio de varios lenguajes. Algunos son:
  • PL/pgSQL
  • PL/Tcl
  • PL/Perl
  • PL/Python
  • PL/PHP
  • PL/Ruby
  • PL/Java
Otra ventaja de PostgreSQL es que está disponible para muchas plataformas y ofrece el código fuente desde el sitio oficial.  Algunos de los builds oficiales son:
pgAdmin es la herramienta oficial para administrar nuestras bases de datos en PostgreSQL. Nos permite desde hacer búsquedas SQL hasta desarrollar toda nuestra base de datos de forma muy fácil e intuitiva; directamente desde la interfaz gráfica.

python
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetosprogramación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma.
Python es un lenguaje de programación multiparadigma. Esto significa que más que forzar a los programadores a adoptar un estilo particular de programación, permite varios estilos: programación orientada a objetosprogramación imperativa y programación funcional. Otros paradigmas están soportados mediante el uso de extensiones.
Python usa tipado dinámico y conteo de referencias para la administración de memoria.
Una característica importante de Python es la resolución dinámica de nombres; es decir, lo que enlaza un método y un nombre de variable durante la ejecución del programa (también llamado enlace dinámico de métodos).
Otro objetivo del diseño del lenguaje es la facilidad de extensión. Se pueden escribir nuevos módulos fácilmente en C o C++. Python puede incluirse en aplicaciones que necesitan una interfaz programable.
Aunque la programación en Python podría considerarse en algunas situaciones hostil a la programación funcional tradicional del Lisp, existen bastantes analogías entre Python y los lenguajes minimalistas de la familia Lisp como puede ser Scheme.
El intérprete de Python estándar incluye un modo interactivo en el cual se escriben las instrucciones en una especie de intérprete de comandos: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente, lo que da la posibilidad de probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como para los programadores más avanzados.
Existen otros programas, tales como IPython,​ que añaden funcionalidades extra al modo interactivo, como el autocompletado de código y el coloreado de la sintaxis del lenguaje.
Ejemplo del modo interactivo:
>>> 1 + 1
2
>>> a = range(10)
>>> print a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Introducción a bases de datos con Python

En Python, el acceso a bases de datos se encuentra definido a modo de estándar en las especificaciones de DB-API, que puedes leer en la PEP 249. Esto, significa que independientemente de la base de datos que utilicemos, los métodos y procesos de conexión, lectura y escritura de datos, desde Python, siempre serán los mismos, más allá del conector.