¿QUE ES ORACLE?
Oracle es una potente herramienta cliente/servidor para la gestión de Bases de Datos.
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.
Es posible lógicamente atacar a la base de datos a través del SQL plus incorporado en el paquete de programas Oracle para poder realizar consultas, utilizando el lenguaje SQL.
Oracle Developer: Es una herramienta que nos permite crear formularios en local, es decir, mediante esta herramienta nosotros podemos crear formularios, compilarlos y ejecutarlos, pero si queremos que los otros trabajen sobre este formulario deberemos copiarlo regularmente en una carpeta compartida para todos, de modo que, cuando quieran realizar un cambio, deberán copiarlo de dicha carpeta y luego volverlo a subir a la carpeta. Este sistema como podemos observar es bastante engorroso y poco fiable pues es bastante normal que las versiones se pierdan y se machaquen con frecuencia. La principal ventaja de esta herramienta es que es bastante intuitiva y dispone de un modo que nos permite componer el formulario, tal y como lo haríamos en Visual Basic o en Visual C, esto es muy de agradecer.
Oracle Designer: Es una herramienta que se conecta a la base de datos y por tanto creamos los formularios en ella, de esta manera todo el mundo se conecta mediante Designer a la aplicación que contiene todos los formularios y no hay problemas de diferentes versiones, esto es muy útil y perfecto para evitar machacar el trabajo de otros. Pero el principal y más notable problema es la falta de un entorno visual para diseñar el formulario, es decir, nos aparece una estructura como de árbol en la cual insertamos un formulario, a la vez dentro de éste insertamos bloques o módulos que son las estructuras que contendrán los elementos del formularios, que pueden estar basados en tablas o no. Por lo tanto si queremos hacer formularios para practicar o para probar qué es esto de Oracle, os recomiendo que uséis Developer pues es mucho más fácil e intuitivo al principio.
Oracle 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.
FUNCIONES ORACLE
Una función es un conjunto de instrucciones en PL/SQL, que pueden ser llamados usando el nombre con que se le haya creado. Se diferencian de los procedimientos, en que las funciones retornan un valor al ambiende desde donde fueron llamadas.
La sintaxis para crear una función es la siguiente:
CREATE [OR REPLACE] FUNCTION name [(param [IN] datatype) . . .] RETURN datatype [IS|AS] pl/sql_subprogram
El uso de OR REPLACE permite sobreescribir una función existente. Si se omite, y la función ya existe, se producirá, un error. El unico modificador permitido para los parámetros es IN, y si se omite, se tomará por defecto. Es decir, solo se permiten parámetros de entrada.
A continuación se presenta un ejemplo de creación de una función:
SQL> CREATE FUNCTION get_bal (acc_no IN NUMBER) 1> RETURN NUMBER 2> IS 3> acc_bal NUMBER(11,2); /* declaración de una variable */ 4> BEGIN 5> SELECT balance 6> INTO acc_bal /* asignación */ 7> FROM accounts 8> WHERE account_id = acc_no; 9> RETURN(acc_bal); 10> END
La función get_bal retorna el balance de una cuenta dada.
Si se desea eliminar (borrar) una función, se usa la instrucción:
SQL> DROP FUNCTION name;
CREACION DE UNA BASE DE DATOS EN ORACLE
Estacion de Trabajo:Procesador
Pentium 166 MHz o Superior Minimo 128 Mb RAM*, 1 Gb Disco Duro Entre 298 y 587 Mb disponible de espacio en disco, dependiendo de la opcion que escoja Sistema Operativo: Windows NT 4.0, Windows 2000, Windows98 or Windows95 * Requiere 256 Mb RAM si está usando utilidades JAVA (Compare, Merge, Version History Viewer, Version Event Viewer, Dependency Manager) Para Windows, Podrias necesitar una cuenta de Servidor. Servidor:
Minimo 64 Mb RAM, de los cuales 32 Mb estarán disponibles para el System Global Area (SGA) Para cada Repositorio: Aproximadamente 140 Mb en el SYSTEM tablespace para los paquetes del repositorio, procedimeintos and vistas entre 20 y 325 Mb en otras tablespaces, para los datos del repositorio Oracle8i Enterprise Edition ó Standard Edition, release 8.1.7* version de SQL*Plus compatible con su Base de datos version de TNS Listener compatible su Base de Datos
2. Especificación parametros fichero INIT.ORA
C:oracleadmindbicopspfileinit.ora
Parametros
- db_name = "dbicops"
- db_files = 1024
- db_block_size = 8192
- control_files = ("C:oracleoradatadbicopscontrol01.ctl", "C:oracleoradatadbicopscontrol02.ctl", "C:oracleoradatadbicopscontrol03.ctl")
- db_block_buffers = 13498
- shared_pool_size = 36860928
- processes = 150
- log_buffer = 32768
- max_dump_file_size = 10240 # limit trace file size to 5M each
- background_dump_dest = C:oracleadmindbicopsbdump
- user_dump_dest = C:oracleadmindbicopsudump
Especificación de Parámetros DB_NAME: indica el identificador de la BD que en este caso es ‘prueba’. Debe tener como máximo 8 caracteres. Único parámetro obligatorio. CONTROL_FILES: Este parámetro contendrá el nombre de los ficheros de control y su ubicación, como, por ejemplo: /DISK1/control01.conç DB_BLOCK_SIZE: Tamaño del bloque de datos de Oracle. Por defecto: 2K o 4K. Una vez fijado no puede modificarse. DB_BLOCK_BUFFERS: Especifica el número de buffers de la caché en la SGA. Cuanto más grande , menos acceso a disco tendremos. Sin embargo, ocuparemos más memoria y será necesario realizar más swapping. Compromiso de eficacia y rapidez. SHARED_POOL_SIZE: Tamaño en bytes del pool compartido. Por defecto: 3500000. LOG_BUFFER: Número de bytes asignados al buffer de redo log en la SGA. PROCESSES:Máximo número de procesos de SO que pueden acceder de forma concurrente. Mínimo: 1 por usuario + procesos de arrancados con cada instancia. DB_FILES: Número de ficheros que se podrán crear en una BD. Mín 1, máx depende del SO. LOG_FILES:Máximo número de ficheros de log. MAX_DUMP_FILE_SIZE: Máximo tamaño en bloques de SO de los ficheros de traza. BACKGROUND_DUMP_DEST: Ubicación de los ficheros de las trazas de los procesos. USER_DUMP_DEST: Ubicación de los ficheros de traza de los usuarios. CORE_DUMP_DEST: Ubicación de los ficheros de traza de los ficheros core. ROLLBACK_SEGMENTS: Nombres de los segmentos de rollback.
3. Ejecución y creación de la base de datos (I)
Ejecutamos el comando svrmrgl Ejecución y creación de la base de datos (II) SVRMGR> connect INTERNAL Connected. SVRMGR> startup nomount pfile="C:oracleadmindbicopspfileinit.ora" ORACLE instance started. Total System Global Area 153487388 bytes Fixed Size 75804 bytes Variable Size 42758144 bytes Database Buffers 110575616 bytes Redo Buffers 77824 bytes SVRMGR> CREATE DATABASE dbicops 2> LOGFILE 'C:oracleoradatadbicopsredo01.log' SIZE 1024K, 3> 'C:oracleoradatadbicopsredo02.log' SIZE 1024K, 4> 'C:oracleoradatadbicopsredo03.log' SIZE 1024K 5> MAXLOGFILES 32 6> MAXLOGMEMBERS 2 7> MAXLOGHISTORY 1 8> DATAFILE 'C:oracleoradatadbicopssystem01.dbf' SIZE 264M REUSE AUTOEXTEND ON NEXT 10240K 9> MAXDATAFILES 254 10> MAXINSTANCES 1 11> CHARACTER SET WE8ISO8859P1 12> NATIONAL CHARACTER SET WE8ISO8859P1; Statement processed. SVRMGR> spool off
CREACION DE CONEXIONES A UNA BASE DE DATOS DE ORACLE
Para conectarse a una base de datos, utilice el Proveedor de Microsoft OLE DB para Oracle.
Nota Para poder arrastrar y colocar elementos en el Explorador de servidores para bases de datos de Oracle, la conexión de datos debe utilizar el Proveedor de Microsoft OLE DB para Oracle.
Nota de seguridad El almacenamiento de los detalles de la cadena de conexión (como el nombre de servidor, el nombre de usuario y la contraseña) puede afectar a la seguridad de la aplicación. El uso de la Seguridad integrada de Windows es un modo más seguro de controlar el acceso a una base de datos.
Existen dos maneras de conectarse a una base de datos de Oracle:
Conectar a una base de datos de Oracle en el Explorador de servidores
Para crear una conexión en el Explorador de servidores
- En el Explorador de servidores, haga clic con el botón secundario en Conexiones de datos y, a continuación, en Agregar conexión.
- En el cuadro de diálogo Propiedades de vínculo de datos, elija la ficha Proveedor.
- Haga clic en Proveedor de Microsoft OLE DB para Oracle y después en Siguiente.
- Escriba el servidor donde se encuentra la base de datos a la que desea obtener acceso.
- Escriba la contraseña que desea utilizar para la autenticación cuando inicie una sesión en el origen de datos.
- Haga clic en Aceptar.
Conectar con una base de datos de Oracle desde la aplicación
La creación de conexiones a orígenes de datos desde la aplicación se puede llevar a cabo visualmente utilizando los diseñadores de Visual Studio .NET o mediante programación, creando objetos de conexión a datos en el código.
Conectar a una base de datos de Oracle Visualmente
Visual Studio admite la creación de objetos de datos arrastrando elementos desde el Explorador de servidores o la ficha Datos del Cuadro de herramientas hasta el formulario o diseñador.
Para crear una conexión desde el Explorador de servidores
- Cree una Conexión de datos en el Explorador de servidores para la base de datos de Oracle. Para obtener más información, vea la sección anterior titulada "Conectar a una base de datos de Oracle en el Explorador de servidores".
- Arrastre la conexión hasta el formulario o el diseñador.
- Aparecerá un objeto OracleConnection en la bandeja de componentes.
- Avance hasta la sección "Pasos siguientes" que aparece más adelante en este tema.
Para crear una conexión desde la ficha Datos del Cuadro de herramientas
Aparecerá un objeto OracleConnection no configurado en la bandeja de componentes.
- Arrastre un objeto OracleConnection hasta el formulario o diseñador.
- En la ventana Propiedades, haga clic en la propiedad ConnectionString.
- Seleccione una conexión existente en la lista desplegable o haga clic en Nueva conexión para abrir el cuadro de diálogo Propiedades de vínculo de datos y configure una conexión nueva.
- Avance hasta la sección "Pasos siguientes" que aparece más adelante en este tema.
Conectar a una base de datos de Oracle mediante programación
Puede crear un objeto OracleConnection directamente en el código.
Para crear una conexión mediante programación entre la aplicación y una base de datos de Oracle
- El siguiente código crea un objeto y define la propiedad OracleConnection.ConnectionString.
- ' Visual Basic
- Public Sub ConnectToOracle()
- Dim conn As New OracleClient.OracleConnection()
- ' TODO: Modify the connection string and include any
- ' additional required properties for your database.
- conn.ConnectionString = & _
- "Data Source=<oracle data source name>;Integrated Security=yes"
- Try
- conn.Open()
- ' Insert code to process data.
- Catch ex As Exception
- MessageBox.Show("Failed to connect to data source")
- Finally
- conn.Close()
- End Try
- End Sub
- // C#
- public void ConnectToOracle()
- {
- OracleClient.OracleConnection conn =
- new OracleClient.OracleConnection ();
- // TODO: Modify the connection string and include any
- // additional required properties for your database.
- conn.ConnectionString = "Data Source=" +
- "<oracle data source name>;Integrated Security=yes";
- try
- {
- conn.Open();
- // Insert code to process data.
- }
- catch (Exception ex)
- {
- MessageBox.Show("Failed to connect to data source");
- }
- finally
- {
- conn.Close();
- }
- }
- EXPLORADOR DE SERVICIORES PARA BASES DE DATOS ORACLE
Las bases de datos de Oracle presentan algunas diferencias en el Explorador de servidores. Por ejemplo, cuando agrega una conexión a una base de datos de Oracle, verá las siguientes carpetas: Diagramas de base de datos, Tablas, Sinónimos, Vistas, Procedimientos almacenados, Funciones, Especificaciones de paquete y Cuerpos de paquete. En los siguientes temas se describen brevemente cada uno de los objetos del Explorador de servidores para bases de datos de Oracle.
Diagramas de base de datos
La carpeta Diagramas de base de datos contiene diagramas con nombre que muestran la estructura de la base de datos de forma gráfica. Para obtener más información sobre cómo trabajar con diagramas,
Tablas
La carpeta Tablas contiene las tablas base de la base de datos. Para obtener información adicional sobre cómo trabajar con tablas,
Sinónimos
La carpeta Sinónimos contiene nombres alternativos para las tablas, vistas, secuencias, procedimientos almacenados, funciones, paquetes e instantáneas. Puede utilizar sinónimos para tener acceso fácilmente a los objetos de base de datos sin utilizar calificadores.
Para crear un nuevo sinónimo
- Desde una consulta o secuencia de comandos SQL, ejecute la siguiente instrucción:
- create synonym name
for table
Sustituya name por el nombre del sinónimo y table por el nombre de la tabla.
Para recuperar datos de un sinónimo
- En el Explorador de servidores, haga clic con el botón secundario del mouse (ratón) y elija Recuperar datos de sinónimo. Una cuadrícula muestra el propietario, nombre de columna, tipo de tabla, precisión, etc., para las columnas accesibles de todas las tablas, vistas y clústeres.
Para obtener más información sobre cómo trabajar con sinónimos, consulte la documentación de Oracle.
Vistas
La carpeta Vistas contiene bloques con nombre de código SQL que filtran los datos disponibles de las tablas subyacentes. Para obtener información adicional sobre cómo trabajar con vistas.
Procedimientos almacenados
La carpeta Procedimientos almacenados contiene bloques con nombre de código SQL a los que ya se ha comprobado la sintaxis y se han compilado. Los procedimientos almacenados normalmente suponen una mejora de rendimiento.
Funciones
La carpeta Funciones contiene bloques con nombre de código SQL que puede devolver valores a un programa de llamada..
Especificaciones del paquete
La carpeta Especificaciones del paquete contiene grupos con nombre de procedimientos públicos, funciones, excepciones, variables, constantes y cursores. Las especificaciones de paquete resultan útiles para compartir datos y aumentar la eficiencia.
Para crear una nueva especificación de paquete
- En el Explorador de servidores, haga clic con el botón secundario del mouse en el nodo Especificaciones del paquete y elija Nueva especificación de paquete en el menú contextual. En el editor se muestra una plantilla con la sintaxis correcta de Oracle para especificaciones de paquete.
- CREATE OR REPLACE PACKAGE USER.PACKAGE1 AS
- /*
- FUNCTION FUNCTION_NAME( PARAMETERS )
- RETURN DATATYPE;
- PROCEDURE PROCEDURE_NAME( PARAMETERS );
- */
END;
Para editar una especificación de paquete
- En el Explorador de servidores, haga clic con el botón secundario del mouse y elija Editar especificación de paquete en el menú contextual. En el editor se muestra el código SQL para la especificación de paquete.
Para obtener más información sobre cómo utilizar especificaciones de paquete, consulte la documentación de Oracle.
Cuerpos de paquete
La carpeta Cuerpos de paquete contiene cuerpos de paquete con nombre creados a partir de especificaciones de paquete. Para obtener más información sobre cómo trabajar con cuerpos de paquete, consulte la documentación de Oracle.
Para crear un nuevo cuerpo de paquete
- En el Explorador de servidores, haga clic con el botón secundario del mouse en el nodo Cuerpos de paquete y elija Nuevo cuerpo del paquete en el menú contextual. En el editor se muestra una plantilla con la sintaxis correcta de Oracle para cuerpos de paquete.
- CREATE OR REPLACE PACKAGE BODY USER.PACKAGE1 AS
- /*
- FUNCTION FUNCTION_NAME( PARAMETERS )
- RETURN DATATYPE;
- IS
- RETURN_VARIABLE DATATYPE;
- BEGIN
- END;
- PROCEDURE PROCEDURE_NAME( PARAMETERS );
- AS
- BEGIN
- END;
- */
- END;
Para editar un cuerpo de paquete
- En el Explorador de servidores, haga clic con el botón secundario del mouse y elija Editar cuerpo de paquete en el menú contextual. En el editor se muestra el código SQL para el cuerpo de paquete.
¿QUE ES MYSQL?
Mysql es una base de datos muy popular.
MySQL es un servidor multi-hilos de bases de datos de código abierto,
confiable, rápido, compacto, poderoso y multiplataforma podemos hacer las bases de datos a código abierto.
Esta base de datos la desarrollo la empresa Mysql AB, una gran ventaja es que se puede utilizar gratis y su código fuente siempre esta disponible, nos podemos guiar por medio de manuales, los cuales nos explicar:
- como crear la base de datos, ejemplo: create databases y el nombre especifico.
- crear las tablas, ejemplo: create table con su respectivo nombre.
- insertar datos, así: inser into values ‘’.
Y muchas otras cosas más que hemos visto en este curso que a mi parecer fue muy importante ya que esta es una de las bases de datos mas fuertes en nuestro medio.
Sus principales características son: - El principal objetivo de MySQL es velocidad y robustez. - Escrito en C y C++, testado con GCC 2.7.2.1. Usa GNU autoconf para potabilidad. - Clientes C, C++, Java, Perl, TCL, etc - Multiproceso, es decir puede usar varias CPU si éstas están disponibles. - Puede trabajar en distintas plataformas y S.O. distintos. - Sistema de contraseñas y privilegios muy flexible y segura. - Registros de longitud fija y variable. - 16 índices por tabla, cada índice puede estar compuesto de 1 a 15 columnas o partes de ellas con una longitud máxima de 127 bytes. - Todas las columnas pueden tener valores por defecto. - Todos los datos están grabados en formato ISO8859_1. - Los clientes usan TCP o UNIX Socket para conectarse al servidor. - El servidor soporta mensajes de error en distintas lenguas. - Todos los comandos tienen -help o -? Para las ayudas. - Diversos tipos de columnas como enteros de 1, 2, 3, 4, y 8 bytes, coma flotante, doble precisión, carácter, fechas, enumerados, etc.
LA LICENCIA DE MYSQL
MySQL se licencia bajo los términos de la Licencia Pública General GNU.
Es gratis para uso interno y para los ISPs. Por ejemplo es gratis si lo usa para desarrollo de software o para las compañías que lo usan como servidor de base de datos, y también es gratis si desarrolla una aplicación a medida para un cliente.
La licencia tiene un valor unitario de $200 (USD), y puede comprar muchas licencias antes de usarlas para sacar partido de importantes descuentos.
Puede distribuir una aplicación no GPL que use MySQL sin pagar la licencia si el uso de MySQL no es requerido (es decir, si la aplicación puede hacer las mismas cosas usando alternativamente otro sistema, servidor o controlador de bases de datos o lo que sea).
Crear la base de datos
Ejecutar los siguientes comandos SQL en el servidor MySQL.
#
# Host: localhost Database: prueba
#——————————————————–
# Server version 4.0.14-max
#
# Table structure for table 'empresas'
#
DROP DATABASE IF EXISTS PRUEBA_DB;
CREATE DATABASE PRUEBA_DB;
USE PRUEBA_DB;
DROP TABLE IF EXISTS Empresas;
CREATE TABLE IF NOT EXISTS Empresas (
RUC varchar(8) NOT NULL,
RAZONSOCIAL varchar(50) NOT NULL,
PRIMARY KEY (RUC),
KEY RAZONSOCIAL (RAZONSOCIAL)
);
#
# Dumping data for table 'empresas'
#
INSERT INTO empresas VALUES("10000293","SANCHEZ TUTUSIMA CARMEN ROSA");
INSERT INTO empresas VALUES("10000347","VELAZCO BERROA PETRONA");
INSERT INTO empresas VALUES("10000447","PRADO DE ORBE TULA RORA");
INSERT INTO empresas VALUES("10000794","ANDIA MARQUEZ LUIS MELITON");
Como extraer información de una base de datos
Para esto se utiliza la función select, a continuación veremos un ejemplo de este con una base de datos llamada empresa:
Para acceder a la base de datos utilizamos la sentencia USE.
mysql> USE empresa;
Recibimos un mensaje "Database changed" (base de datos cambiada). Una base de datos está formada por tablas, muy semejantes a las tablas de cualquier libro. Para ver qué tablas tenemos escribimos la sentencia SHOW TABLES.
mysql> SHOW TABLES;
+——————-+
| Tables_in_empresa |
+——————-+
| articulos |
| clientes |
| conformes |
| empleados |
| facturas |
| grupos |
| lineas_factura |
| sucursales |
| ventas |
+——————-+
9 rows in set (0.00 sec)
Para ver qué contiene alguna de esas tablas escribimos nuestra primera instrucción SELECT :
mysql> SELECT * FROM sucursales;
+—-+————-+
| id | descripcion |
+—-+————-+
| 1 | Centro |
| 2 | Unión |
| 3 | Malvín |
+—-+————-+
Esta tabla está formada por dos columnas: Id y Descripción. Los nombres de columnas tampoco pueden llevar tildes. Debajo de los nombres están los valores. Tenemos una fila, por ejemplo, donde Id vale 2 y Descripcion es "Unión". Para averiguar más sobre esta tabla escribimos:
El varchar(15) que se encuentra en la 3ª fila, 2ºcolumna significa que la columna Descripcion puede tener un número variable de caracteres, hasta 15. Análogamente el int(10) que se encuentra en la 2ª fila, 2ª columna indica que Id es un número entero. La palabra PRI que se encuentra en la 2ªfila, 4ª columna significa que Id caracteriza de manera única una fila. Es decir, cada fila de sucursales va a tener un número que va a estar en la columna Id. Diferentes filas tendrán diferentes números. De manera que un valor de Id, si está en la tabla, determina una fila. PRI es una abreviatura de PRIMARY KEY , clave primaria. Esta es una expresión usada en computación para indicar una columna que se usa para identificar las filas. Es algo así como el número de documento de identidad para las personas. Si se quiere hacer una referencia a una sucursal en otra tabla se usa el Id.
Diferentes tipos de datos
Para nuestra finalidad hay 3 grandes tipos de datos: numéricos, cadenas de caracteres y fechas. Los datos numéricos pueden ser enteros (int) o decimales (decimal). Los decimales tienen una parte entera y una fraccionaria. Por ejemplo, un decimal puede valer 120.40. Las cadenas de caracteres representan texto, generalmente con un largo variable, hasta un máximo dado. Pueden contener letras, números y otros caracteres como ‘=’,’+’, etc. Ya vimos un ejemplo con la columna Descripcion de la tabla sucursales. Las columnas de tipo fecha tienen, en su descripción, la palabra "date". Cualquier columna puede, en principio, tomar el valor NULL, que representa un valor desconocido o inexistente. Sin embargo, cuando se crearon las tablas el administrador de la base de datos normalmente especificó que la mayoría de las columnas no pueden tomar valores NULL. Las que sí pueden aparecen con la palabra YES en la columna NULL de la tabla que se obtiene haciendo el query "DESCRIBE nombre_de_tabla" . Vemos que por ejemplo en la tabla Sucursales la base de datos no aceptará un valor NULL ni en Id ni en Descripcion.
Almacenar sólo la información necesaria
Es muy importante que solo almacenemos los datos que consideremos mas importantes en nuestra base de datos, ya que si creamos campos o tablas innecesarios estaremos perdiendo espacio en nuestra base, y al almacenar tantos datos nos podrá traer una serie de conflictos en las consultas como lo es la redundancia.
Como hacer para agregar campos?
Bueno, esto simplemente es un concepto erróneo, ya que en MySQL podemos usar el comando ALTER TABLE para modificar la definición de una tabla en cualquier momento para que se adecue a nuestras necesidades cambiantes. La normalización
Nos sirve para llevar un control claro y conciso de nuestra información, esto le permite a MySQL ser muy eficiente al momento de almacenar y recuperar los datos de las tablas, además de que nos da la flexibilidad de crecer y escalar nuestras aplicaciones sin la necesidad de reestructurar una base de datos a cada momento.
Principales objetivos de la normalización:
- Controlar la redundancia de la información.
- Evitar pérdidas de información.
- Capacidad para representar toda la información.
- Mantener la consistencia de los datos.
Utilizar índices apropiadamente
Los índices son un sistema especial que utilizan las bases de datos para mejorar su rendimiento global. Al definir índices en las columnas de una tabla, se le indica a MySQL que preste atención especial a dichas columnas. MySQL permite definir hasta 32 índices por cada tabla y cada índice puede incorporar hasta 16 columnas. Aunque un índice de varias columnas puede no resultar de utilidad obvia a primera vista, lo cierto es que resulta muy útil a la hora de realizar búsquedas frecuentes sobre un mismo conjunto de columnas.
Dado que los índices hacen que las consultas se ejecuten más rápido, podemos estar incitados a indexar todas las columnas de nuestras tablas. Sin embargo, lo que tenemos que saber es que el usar índices tiene un precio. Cada vez que hacemos un INSERT, UPDATE, REPLACE, o DELETE sobre una tabla, MySQL tiene que actualizar cualquier índice en la tabla para reflejar los cambios en los datos. La razón para tener un índice en una columna es para permitirle a MySQL que ejecute las búsquedas tan rápido como sea posible (y evitar los escaneos completos de tablas). Podemos pensar que un índice contiene una entrada por cada valor único en la columna. En el índice, MySQL debe contar cualquier valor duplicado. Estos valores duplicados decrementan la eficiencia y la utilidad del índice. Así que antes de indexar una columna, debemos considerar que porcentaje de entradas en la tabla son duplicadas. Si el porcentaje es demasiado alto, seguramente no veremos alguna mejora con el uso de un índice. Normas para tener en cuenta en el diseño de la base de datos.
El último paso del diseño de la base de datos es adoptar determinadas convenciones de nombres. Aunque MySQL es muy flexible en cuanto a la forma de asignar nombre a las bases de datos, tablas y columnas, he aquí algunas reglas que es conveniente observar:
- Utilizar caracteres alfanuméricos.
- Limitar los nombres a menos de 64 caracteres (es una restricción de MySQL).
- Utilizar el guión bajo (_) para separar palabras.
- Utilizar palabras en minúsculas (esto es más una preferencia personal que una regla).
- Los nombres de las tablas deberían ir en plural y los nombres de las columnas en singular (es igual una preferencia personal).
- Utilizar las letras ID en las columnas de clave primaria y foránea.
- En una tabla, colocar primero la clave primaria seguida de las claves foráneas.
- Los nombres de los campos deben ser descriptivos de su contenido.
Los nombres de los campos deben ser unívocos entre tablas, excepción hecha de las claves.
WILSON FERNANDO SOLARTE
BIBIANA MARIA PALACIOS GARCIA
MARIA ISABEL TORRES LARGO
Enviado por:
José Valle
TECNOLOGIA EN INFORMATICA V
CORPORACION UNIVERSITARIA MINUTO DE DIOS
BELLO-ANTIOQUIA
2005