Base Datos Completo

186
Recopilación de Base de Datos Manual de BASE DE DATOS 1

Transcript of Base Datos Completo

Page 1: Base Datos Completo

Recopilación de Base de DatosManual de BASE DE DATOS 1

Page 2: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

OBJETIVO GENERAL DEL CURSO

Page 3: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

EL ALUMNO RESOLVERÁ PROBLEMAS Y TENDRÁ UN PANORAMA GENERAL DE LOS CONCEPTOS ESENCIALES Y MODELOS PRINCIPALES DE BASES DE DATOS.

SUSTENTADO EN LAS INVESTIGACIONES DE UN CASO PRÁCTICO DE UNA EMPRESA O INSTITUCIÓN, ANALIZARÁ EL ENTORNO Y DETERMINARÁ LAS NECESIDADES OPERATIVAS DEL MANEJO DE INFORMACIÓN Y CON ESTOS ELEMENTOS APLICARÁ LOS MÉTODOS DE DISEÑO PROPIOS DEL MODELO RELACIONAL EN LA ESTRUCTURACIÓN DE UNA BASE DE DATOS DESARROLLADA EN ACCESS DE MS- OFFICE COMO SOLUCIÓN A LAS NECESIDADES PLANTEADAS.

Ing. Antonio Javier Medina Hernández Bióloga Leticia Silva López Ing. Raul Angel Arellano Torres

DIRECTOR DEL PLANTEL JEFE DEL DEPTO. SERVICIOS DOCENTES PRESIDENTE DE ACADEMIA

UNIDAD: UNO .

Page 4: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

OBJETIVO PARTICULAR DE LA UNIDAD

AL TÉRMINO DE LA UNIDAD, EL ALUMNO DESCRIBIRÁ LOS CONCEPTOS FUNDAMENTALES ACERCA DE SISTEMAS DE INFORMACIÓN Y BASES DE DATOS E IDENTIFICARA SUS CARACTERÍSTICAS. EXPLICARA LA ARQUITECTURA DE UN SISTEMA DE BASES DE DATOS.

Ing. Antonio Javier Medina Hernández Bióloga Leticia Silva López Ing. Raul Angel Arellano Torres

DIRECTOR DEL PLANTEL JEFE DEL DEPTO. SERVICIOS DOCENTES PRESIDENTE DE ACADEMIA

OBJETIVO PARTICULAR DE LA UNIDAD

Page 5: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

UNIDAD TEMA: OBJETIVOS ESPECIFICO(S) TEC MET H DID1.1

1.2

1.3

1.4

1.4.1

1.4.2

1.4.3

1.5

1.6

1.7

1.8

1.9

1.1 SISTEMA DE INFORMACION CONCEPTO Y EVOLUCION HISTORICA

1.2 DEFINICIÓN Y CONCEPTO DE BASES DE DATOS Y MANEJADORE DE BASE DE DATO

1.3 OBJETIVOS E IMPORTANCIA DE LOS SISEMAS DE BASES DE DATOS

1.4 MODELOS DE BASES DE DATOS

1.4.1 JERARQUICO

1.4.2 DE RED

1.4.3 RELACIONAL

1.5 ARQUITECTURA DE UN SISTEMA DE BASE DE DATOS

1.6 INSTANCIAS Y ESQUEMAS

1.7 ENTIDADES Y ATRIBUTOS

1.8 ESQUEMAS Y SUBESQUEMAS

1.9 INDEPENDENCIA DE LOS DATOS

EL ALUMNO MEMORIZARA QUE ES UN SISTEMA DE INFORMACIÓN COMO CONCEPTO, A DEMÁS DE LA EVOLUCIÓN DE ESTOS EN LA HISTORIA PREVIA CLASE TEORICA E INVESTIGACION EXTRACLASE, ASISTIDA POR EL MAESTRO, SIN ERROR.EL ALUMNO MEMORIZARA QUE ES UNA BASE DE DATOS ASÍ COMO UN MANEJADOR DE BASE DE DATOS PREVIA CLASE TEORICA, SIN ERROR

EL ALUMNO RECORDARA LA IMPORTANCIA DE LOS SISTEMAS DE BASES DE DATOS EN LA ACTUALIDAD, ASÍ COMO SU OBJETIVO PRIMORDIAL PREVIA CLASE TEORICA, SIN ERROR.

EL ALUMNO MEMORIZARA LOS TRES TIPOS DE MODELOS DE BASES DE DATOS EL JERÁRQUICO EL DE RED Y EL RELACIONAL, PREVIA CLASE TEORICA, SIN ERROR.

-EL ALUMNO MEMORIZARÁ LAS CARACTERÍSTICAS DEL MODELO JERARQUICO PREVIA CLASE TEORICA SIN ERROR.-EL ALUMNO MEMORIZARA LAS CARACTERÍSTICAS BÁSICAS DEL MODELO DE RED PREVIA CLASE TEORICA SIN ERROR.-EL ALUMNO MEMORIZARA LAS CARACTERÍSTICAS BÁSICAS DEL MODELO RELACIONAL PREVIA CLASE TEORICA SIN ERROR.-EL ALUMNO MEMORIZARA LA ARQUITECTURA DE UN SISTEMA DE BASE DE DATOS, PREVIA EXPLICACION DEL MAESTRO, SIN ERROR.

-EL ALUMNO RECORDARA LOS CONCEPTOS DE INSTANCIAS Y ESQUEMAS PREVIA CLASE TORICAO PRÁCTICA, SIN ERROR.-EL ALUMNO RECORDARA COMO EL SIGNIFICADO DE ENTIDAD Y ATRIBUTO E IDENTIFICAR ENTIDADES Y LOS ATRIBUTOS PARA LA OBTENCION DE BASE DE DATOS, PREVIA CLASETEORICA Y PRÁCTICA, SIN ERROR.-EL ALUMNO MEMORIZARA LOS TERMINO DE ESQUEMA Y SUBES QUEMA Y SU UTILIZACIÓN PREVIA CLASE TOERICO PRÁCTICA CON UN ERROR EN UNA REL. DE 5.EL ALUMNO RECORDARÁ LA IMPORTANCIA DE LA INDEPENDENCIA DE LOS DATOS EN UNA BD. PREVIA EXPLICACION DEL PROFESOR, SIN ERROR.

TE

TE

TE

TE

TE

TE

TE

TE

TE

TE

TE

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

HP

HP

HP

HP

HP

HP

HP

HP

HP

HP

HP

Ing. Antonio Javier Medina Hernández Bióloga Leticia Silva López Ing. Raul Angel Arellano Torres

DIRECTOR DEL PLANTEL JEFE DEL DEPTO. SERVICIOS DOCENTES PRESIDENTE DE ACADEMIASIMBOLOGIATECNICA (TEC) METODOLOGIA (MET) HERRAMIENTA DIDACTICA (HDID)TE EXPOSITIVA NARRATIVA MI INDUCTIVA HP PIZARRONTP PANEL MD DEDUCTIVA HR ROTAFOLIOTM MESA REDONDA MC CIENTIFICO HAI AUDIOVISUALES E INFORMATICATL LECTURA COMENTADA MF FILOSOFICO HRE REVISTAS(HEMEROTECA)TC CASO DE ESTUDIO HD DOCUMENTALES(VIDEOTECA)TF FOROTLL LLUVIA DE IDEASTCO CORRILLOSTD DEMOSTRATIVA

UNIDAD: DOS .

Page 6: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

OBJETIVO PARTICULAR DE LA UNIDAD

AL TÉRMINO DE LA UNIDAD, EL ALUMNO MODELARA LA INFORMACIÓN REQUERIDA PARA UNA BASE DE DATOS, UTILIZANDO ELEMENTOS GRÁFICOS PARA ELABORAR DIAGRAMAS QUE REPRESENTEN A LOS MODELOS CONCEPTUALES DE BASES DE DATOS. DESCRIBIRÁ LAS CARACTERÍSTICAS Y BONDADES DE LOS DIAGRAMAS ENTIDAD RELACIÓN, DESARROLLARÁ UN EJEMPLO Y LO CONVERTIRÁ A TABLAS, APLICANDO LAS ESPECIFICACIONES TÉCNICAS APRENDIDAS

Ing. Antonio Javier Medina Hernández Bióloga Leticia Silva López Ing. Raul Angel Arellano Torres

DIRECTOR DEL PLANTEL JEFE DEL DEPTO. SERVICIOS DOCENTES PRESIDENTE DE ACADEMIA

OBJETIVO PARTICULAR DE LA UNIDADUNIDAD TEMA: OBJETIVOS ESPECIFICO(S) TEC MET H DID2.1 2.1 ETIDADES, ATRIBUTOS Y RELACIONES -EL ALUMNO MEMORIZARA LOS CONCEPTOS DE ENTIDA, ATRIBUTO YR ELACIONES TE,TD MI,MD HP

Page 7: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

2.2

2.3

2.4

2.5

2.6

2.2 CARDINALIDAD DE MAPEO

2.3 LLAVE PRIMARIA O CLAVE PRINCIPAL

2.4 DIAGRAMA E-R

2.5 REDUCCION DE LOS DIAGRAMAS E-R A TABLAS

2.6 GENERALIZACION Y ESPECIALIZACION

MEDIANTE LA PRACTICA EN EL USO DE U EJERCICIOS, PREVIA EXPLICACION DEL MAESTRO, SIN ERROR. -EL ALUMNO MEMORIZARA EL CONCEPTO DE CARDINALIDAD DE MAPEO ASÍ COMO LA APLICACIÓN DE ESTE EN LA CREACIÓN DE BASES DE DATOS, PREVIA PRÁCTICA ASISTIDA POR EL MAESTRO , SIN ERROR.-EL ALUMNO APRENDERÁ LA IMPORTANCIA DE LA LLAVE PRIMARIA O CLAVE PRINCIPAL DENTRO DEL ENTORNO DE LAS TABLAS, PREVIA CLASE TEÓRICO PRÁCTICA, SIN ERROR-EL ALUMNO ENTENDERA Y REALIZARA DIAGRAMAS ENTIDAD RELACIÓN, PREVIA EXPICACION DEL MAESTRO Y PRÁCTICA EXTRACLASE, SIN ERROR.

EL ALUMNO EMPLEARA LA REDUCCIÓN DE LOS DIAGRAMAS ENTIDAD RELACIÓN A TABLAS PREVIA CLASE TEORICA Y EJERCICIOS EXTRACLASE ASISTIDOS POR EL PROFESOR, SIN ERROR .

EL ALUMNO EMPLEARA LOS CONCEPTOS DE GENERALIZACIÓN Y ESPECIALIZACIÓN, DESPUES DE UNA CLASE TEORICA Y EJERCICIOS PRACTICOS ASISTIDOS POR EL PROFESOR, SIN ERROR

TE,TD

TE,TD

TE,TD

TE,TD

TE,TD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

HP

HP

HP

HP

HP

Ing. Antonio Javier Medina Hernández Bióloga Leticia Silva López Ing. Raul Angel Arellano Torres

DIRECTOR DEL PLANTEL JEFE DEL DEPTO. SERVICIOS DOCENTES PRESIDENTE DE ACADEMIA

SIMBOLOGIATECNICA (TEC) METODOLOGIA (MET) HERRAMIENTA DIDACTICA (HDID)TE EXPOSITIVA NARRATIVA MI INDUCTIVA HP PIZARRONTP PANEL MD DEDUCTIVA HR ROTAFOLIOTM MESA REDONDA MC CIENTIFICO HAI AUDIOVISUALES E INFORMATICATL LECTURA COMENTADA MF FILOSOFICO HRE REVISTAS(HEMEROTECA)TC CASO DE ESTUDIO HD DOCUMENTALES(VIDEOTECA)TF FOROTLL LLUVIA DE IDEASTCO CORRILLOSTD DEMOSTRATIVA

UNIDAD: TRES .

OBJETIVO PARTICULAR DE LA UNIDAD

Page 8: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

AL CONCLUIR LA UNIDAD, EL ALUMNO DESCRIBIRÁ LAS CARACTERÍSTICAS PRINCIPALES DEL MODELO RELACIONAL.

PLANTEARA EL DISEÑO CONCEPTUAL DE LA BASE DE DATOS EN EL MODELO E-R, ASÍ MISMO CREARA CONSULTAS EN TERMINO DE ALGEBRA RELACIONAL Y SQL EN ACCESS

Ing. Antonio Javier Medina Hernández Bióloga Leticia Silva López Ing. Raul Angel Arellano Torres

DIRECTOR DEL PLANTEL JEFE DEL DEPTO. SERVICIOS DOCENTES PRESIDENTE DE ACADEMIA

OBJETIVO PARTICULAR DE LA UNIDADUNIDAD TEMA: OBJETIVOS ESPECIFICO(S) TEC MET H DID3.1

3.2

3.3

3.1 ESTRUCTURA DE BASE DE DATS RELACIONALES

3.2 ENUNCIADOS RELACIONALES

3.3 OPERADORES RELACIONALES

-EL ALUMNO APRENDERÁ COMO ES LA ESTRUCTURA DE UNA B.D RELACIONAL, PREVIA CLASE TEORICA , SIN ERROR.A

-EL ALUMNO RECORDARÁ LOS ENUNCIADOS RELACIONALES, PREVIA CLASE PRACTICA Y TEORICA, CON UN NIVEL DE EFICIENCIA DEL 90%.-EL ALUMNO APRENDERÁ LOS OPERADORES RELACIONALES Y SU SIGNIFICADO ASÍ

MI,MD

MI,MD

MI,MD

HP

HP

HP

Page 9: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

3.4

3.4.1

3.4.2

3.5

3.6

3.7

3.8

3.9

3.9.1

3.4 ALGEGRA RELACIONAL

3.4.1 OPERADORES RELACIONALES BASICOS

3.4.2 EJEMPLO DE ACCESOS A BASES DE DATOS RELACIONALES

3.5 SQL (METODOLOGIA)

3.6 CORRESPONCENCIA CON EL MODELO DE DATOS E-R

3.7 DEPENDENCIA FUNCIONAL

3.8 INTEGRIDAD REFERENCIAL

3.9 NORMALIZACION

3.9.1 SEGURIDAD E INTEGRIDAD

COMO SU APLICACIÓN, PREVIA CLASE PRACTICA, SIN ERROR.-EL ALUMNO MEMORIZARÁ LA FUNCIÓN Y SINTAXIS DEL ALGEBRA RELACIONAL PREVIA CLASE PRACTICA, SIN ERROR.EL ALUMNO PRACTICARA EL USO DE LOS OPERADORES RELACIONALES MÁS IMPORTANTE, PREVIA CLASE TEORICO PRACTICA, SIN ERROR. EL ALUMNO APRENDERÁ MEDIANTE EJEMPLOS EL ACCESO A BASES DE DATOS RELACIONALES, PREVIA CLASE PRACTICA SIN ERROR.

EL ALUMNO APRENDERÁ QUE ES SQL, SUS SINTAXIS Y EL USO TAN IMPORTANTE QUE TIENE ESTE HOY EN DIA, PREVIA CLASE TEORICA, SIN ERROR.EL ALUMNO APRENDERÁ LO QUE ES LA CORRESPONDENCIA CON EL MODELO DE E-R, PREVIA CLASE TEORICA, PRACTIA, CON UN NIVEL DE EFICIENCIA DEL 90%.

EL ALUMNO RECORDARÁ EL SIGNIFICADO DE DEPENDENCIA FUNCIONAL Y COMO SE APLICA ESTA, PREVIA CLASE TEORICO PRACTICA, CON UN NIVEL DE EFICIENCIA DEL 90%..

EL ALUMNO RECORDARÁ EL SIGNIFICADO DE INTEGRIDAD REFERENCIAL Y SU APLICACIÓN, PREVIA CLASE TEORICO, PRACTICA SIN ERROR..

EL ALUMNO ENTENDERÁ EL PROCESO DE NORMALIZACIÓN, ASÍ COMO EL SIGNIFICADO Y APLICACIÓN DE CADA UNA DE SUS ETAPAS, PREVIA CLASE TEORICO PRACTICA, CON UN NIVEL DE EFICIENCIA DEL 90%.

EL ALUMNO COMPRENDERÁ LA IMPORTANCIA DE LA SEGURIDAD E INTEGRIDAD DE UNA BASE DE DATOS, PREVIA EXPLICACION TEORICA POR PARTE DEL PROFESOR, CON UNNIVEL DE EFICIENCIA DEL 90%.

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

MI,MD

HP

HP

HP

HP

HP

HP

HP

HP

HP

Ing. Antonio Javier Medina Hernández Bióloga Leticia Silva López Ing. Raul Angel Arellano Torres

DIRECTOR DEL PLANTEL JEFE DEL DEPTO. SERVICIOS DOCENTES PRESIDENTE DE ACADEMIA

UNIDAD: CUATRO .

OBJETIVO PARTICULAR DE LA UNIDAD

Page 10: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

AL CONCLUIR LA UNIDAD, EL ALUMNO UTILIZARA EL SOFTWARE ACCESS DE MICROSOFT PARA DESARROLLAR UNA BASE DE DATOS QUE RESPONDA A LAS NECESIDADES DE UNA INSTITUCIÓN O MICROEMPRESA DE ENTORNO INMEDIATO CON LOS DIFERENTES TIPOS Y ELEMENTOS QUE CONSTITUYEN UN MANEJADOR DE BASE DE DATOS.

Ing. Antonio Javier Medina Hernández Bióloga Leticia Silva López Ing. Raul Angel Arellano Torres

DIRECTOR DEL PLANTEL JEFE DEL DEPTO. SERVICIOS DOCENTES PRESIDENTE DE ACADEMIA

OBJETIVO PARTICULAR DE LA UNIDADUNIDAD TEMA: OBJETIVOS ESPECIFICO(S) TEC MET H DID4.1

4.2

4.3

4.1 CARACTERISTICAS DE ACCESO

4.2 CREACION Y EDICION DE UNA BASE DE DATOS

4.3 CREAR, MODIFICAR VISUALIZAR E IMPRIMIR

EL ALUMNO RECORDARÁ LOS PASOS NECESARIOS PARA PODER ACCESAR AL MANEJADOR DE BASE DE DATOS, PREVIA CLASE PRACTICA, CON UN NIVEL DE EFICIENCIA DEL 90%EL ALUMNO APLICARÁ LOS PASOS NECESARIOS PARA CREAR Y EDITAR UN BASE DE DATOS EN EL MANEJADOR DE BASE DE DATOS, PREVIA CLASE PRACTICA, CON UN NIVEL DE EFICIENCIA DEL 95%.EL ALUMNO RECORDARÁ COMO CREAR, MODIFICAR, VISUALIZAR E IMPRIMIR CONSULTAS,

TE,TD

TE,TD

TE,TD

MI,MD

MI,MD

MI,MD

HP

HP

HP

Page 11: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

4.4

4.5

4.6

4.7

CONSULTAS

4.4 CREAR, MODIFICAR, VISUALIZAR E IMPRIMIR FORMULARIOS

4.5 CREAR, MOFIFICAR, VISUALIZAR E IMPRIMIR INFORMES

4.6 PROTECCION DE LAS BASES DE DATOS

4.7 FACTIVILIDAD DE CREACION DE DBMS CON VISUAL BASIC, USANDO UNA BASE DE DATOS DE ACCES

PREVIA CLASE TEORICO, PRACTICA, CON UN NIVEL DE EFICIENCIA DEL 90%.

EL ALUMNO CREARÁ FORMULARIOS, ASÍ COMO MODIFICARLOS, VISUALIZARLOS E IMPRIMIRLOS, PREVIA CLASE PRACTICA, SIN ERROR.

EL ALUMNO SERÁ CAPAZ DE CREAR INFORMES, ASÍ COMO MODIFICARLOS, VISUALIZARLOS E IMPRIMIRLOS, PREVIA CLASE TEORICO PRACTICA ASI COMO TAREA EXTRACLASE, CON UN NIVEL DE EFICIENCIA DEL 90%.

EL ALUMNO RECORDARÁ COMO PROTEGER BASES DE DATOS, ASÍ COMO LOS MÉTODOS Y MANEJADORES UTILIZADOS EN LA ACTUALIDAD, PREVIA CLAES TEORICA PRACTICA SIN ERROR.EL ALUMNO CREARÁ UN SISTEMA INTEGRADO CON UNA BASE DE DATOS ACCESS, EN EL CUAL PODRÁ REALIZAR UN ABCC, PREVIA CLASE TEORICA, CON UN NIVEL DE EFICIENCIA DEL 90%..

TE,TD

TE,TD

TE,TD

TE,TD

MI,MD

MI,MD

MI,MD

MI,MD

HP

HP

HP

HP

Ing. Antonio Javier Medina Hernández Bióloga Leticia Silva López Ing. Raul Angel Arellano Torres

DIRECTOR DEL PLANTEL JEFE DEL DEPTO. SERVICIOS DOCENTES PRESIDENTE DE ACADEMIA

SIMBOLOGIATECNICA (TEC) METODOLOGIA (MET) HERRAMIENTA DIDACTICA (HDID)TE EXPOSITIVA NARRATIVA MI INDUCTIVA HP PIZARRONTP PANEL MD DEDUCTIVA HR ROTAFOLIOTM MESA REDONDA MC CIENTIFICO HAI AUDIOVISUALES E INFORMATICATL LECTURA COMENTADA MF FILOSOFICO HRE REVISTAS(HEMEROTECA)TC CASO DE ESTUDIO HD DOCUMENTALES(VIDEOTECA)TF FOROTLL LLUVIA DE IDEASTCO CORRILLOSTD DEMOSTRATIVA

1.1 Sistema de información: concepto y evolución histórica.

Page 12: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

SISTEMA: Conjunto de partes que se relaiconan de manera uniforme para dar un resultado en comun.

INFORMACION: La informacion es un conjunto de elementos tales como imágenes, sonidos y letras o simbolos, ordenados de tal manera que tengan un sentido logico.

SISTEAM DE INFORMACION:

TAREA 1: INVESTIGAR LA EVOLUCION HISTORICA DE LOS SISTEMAS DE INFORMACION

TAREA 2: traer su propia definicion de sistema de informacion

1.2 Definición y concepto de bases de datos y manejadores de base de datosDefinición de  Base de Datos

Page 13: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

     Todo buen curso necesita empezar con algunos conceptos básicos para el mejor entendimiento del mismo, por lo tanto empezaremos con las definiciones que involucran a las bases de datos.Dato Conjunto de caracteres con algún significado, pueden ser numéricos, alfabéticos, o alfanuméricos.Información   Es un conjunto ordenado de datos los cuales son manejados según la necesidad del usuario, para que un conjunto de datos pueda ser procesado eficientemente y pueda dar lugar a información, primero se debe guardar lógicamente en archivos.

Conceptos básicos de archivos computacionales. Campo    Es la unidad más pequeña a la cual uno puede referirse en un programa. Desde el punto de vista del programador representa una característica de un individuo u objeto.Registro    Colección de campos de iguales o de diferentes tipos. Archivo     Colección de registros almacenados siguiendo una estructura homogénea.Base de datos    Es una colección de archivos interrelacionados, son creados con un DBMS. El contenido de una base de datos engloba a la información concerniente (almacenadas en archivos) de una organización, de tal manera que los datos estén disponibles para los usuarios, una finalidad de la base de datos es eliminar la redundancia o al menos minimizarla. Los tres componentes principales de un sistema de base de datos son el hardware, el software DBMS y los datos a manejar, así como el personal encargado del manejo del sistema.

Sistema Manejador de Base de Datos. (DBMS)

Page 14: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

    Un  DBMS es una colección de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de una tarea específica.         El objetivo primordial de un sistema Manejador de base de datos es proporcionar un contorno que sea a la vez conveniente y eficiente para ser utilizado al extraer, almacenar y manipular información de la base de datos. Todas las peticiones de acceso a la base, se manejan centralizadamente por medio del DBMS, por lo que este paquete funciona como interface entre los usuarios y la base de datos.

TAREA 3: INVESTIGAR 3 DBMS Y ENUMERAR SUS CARACTERISTICAS. AHONDAR EN EL DBMS MYSQL.

Esquema de base de datos:

    Es la estructura por la que esta formada la base de datos, se especifica por medio de un conjunto de definiciones que se expresa mediante un lenguaje especial llamado lenguaje de definición de datos. (DDL)

Administrador de base de datos (DBA):

    Es la persona o equipo de personas profesionales responsables del control y manejo del sistema de base de datos, generalmente tiene(n) experiencia en DBMS, diseño de bases de datos, Sistemas operativos, comunicación de datos, hardware y  programación.

Los sistemas de base de datos se diseñan para manejar grandes cantidades de información, la manipulación de los datos involucra tanto la definición de estructuras para el almacenamiento de la información como la provisión de mecanismos para la manipulación de la información, además un sistema de base de datos debe de tener implementados mecanismos de seguridad que garanticen la integridad de la información, a pesar de caídas del sistema o intentos de accesos no autorizados.

Page 15: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

    Un objetivo principal de un sistema de base de datos es proporcionar a los usuarios finales una visión abstracta de los datos, esto se logra escondiendo ciertos detalles de como se almacenan y mantienen los datos.

Manejador de Bases de Datos

    El sistema  manejador   de bases de datos es la porción más importante del software de un sistema de base de datos. Un DBMS es una colección de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de alguna tarea específica.

Las funciones principales de un DBMS son:  Crear y organizar la Base de datos.

           Establecer y mantener las trayectorias de acceso a la base                de datos de tal forma que  los datos puedan ser accesados                rápidamente.              Manejar los datos de acuerdo a las peticiones de los usuarios.

              Registrar el uso de las bases de datos.             Interacción con el manejador de archivos.                  Esto a través de las sentencias en DML al comando de el              sistema de archivos. Así el Manejador de base de datos es el              responsable del verdadero almacenamiento de los datos.              Respaldo y recuperación.                   Consiste en contar con mecanismos implantados que               permitan la recuperación fácilmente de los datos en caso               de ocurrir fallas en el sistema de base de datos.              Control de concurrencia.                   Consiste en controlar la interacción entre los usuarios                concurrentes para no afectar la inconsistencia de los datos.

Page 16: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

              Seguridad e integridad.                  Consiste en contar con mecanismos que permitan el               control de la consistencia de los datos evitando que estos               se vean perjudicados por cambios no autorizados o previstos.

El DBMS es conocido también como Gestor de Base de datos.

        

    La figura muestra el  DBMS como interface entre la base de datos física y las peticiones del usuario. El DBMS interpreta las peticiones de entrada/salida del usuario y las manda al sistema operativo para la transferencia de datos entre la unidad de memoria secundaria y la memoria principal.

    En sí, un sistema manejador de base de datos es el corazón de la base de datos ya que se encarga del control total de los posibles aspectos que la puedan afectar.

Page 17: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

1.3 Objetivos de los sistemas de bases de datos.    Los objetivos principales de un sistema de base de datos es disminuir los siguientes aspectos:

  Redundancia e inconsistencia de datos.    Puesto que los archivos que mantienen almacenada la información son creados por diferentes tipos de programas de aplicación existe la posibilidad de que si no se controla detalladamente el almacenamiento, se pueda originar un duplicado de información, es decir que la misma información sea más de una vez en un dispositivo de almacenamiento. Esto aumenta los costos de almacenamiento y acceso a los datos, además de que puede originar la inconsistencia de los datos - es decir diversas copias de un mismo dato no concuerdan entre si -, por ejemplo: que se actualiza la dirección de un cliente en un archivo y que en otros archivos permanezca la anterior.  Dificultad para tener acceso a los datos.    Un sistema de base de datos debe contemplar un entorno de datos que le facilite al usuario el manejo de los mismos. Supóngase un banco, y que uno de los gerentes necesita averiguar los nombres de todos los clientes que viven dentro del código postal 78733 de la ciudad. El gerente pide al departamento de procesamiento de datos que genere la lista correspondiente. Puesto que esta situación no fue prevista en el diseño del sistema, no existe ninguna aplicación de consulta que permita este tipo de solicitud, esto ocasiona una deficiencia del sistema.  Aislamiento de los datos.    Puesto que los datos están repartidos en varios archivos, y estos no pueden tener diferentes formatos, es difícil escribir nuevos programas de aplicación para obtener los datos apropiados.

Anomalías del acceso concurrente.    Para mejorar el funcionamiento global del sistema y obtener un tiempo de respuesta más rápido, muchos sistemas permiten que múltiples usuarios actualicen los datos simultáneamente. En un entorno así la interacción de actualizaciones concurrentes puede dar por resultado datos inconsistentes. Para prevenir esta posibilidad debe mantenerse alguna forma de supervisión en el sistema.

  Problemas de seguridad.    La información de toda empresa es importante, aunque unos datos lo son más que otros, por tal motivo se debe considerar el control de acceso a los mismos, no todos los usuarios pueden visualizar alguna información, por tal motivo para que un sistema de base de datos sea confiable debe mantener un grado de seguridad que garantice la

Page 18: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

autentificación y protección de los datos. En un banco por ejemplo, el personal de nóminas sólo necesita ver la parte de la base de datos que tiene información acerca de los distintos empleados del banco y no a otro tipo de información.

  Problemas de integridad.    Los valores de datos almacenados en la base de datos deben satisfacer cierto tipo de restricciones de consistencia. Estas restricciones se hacen cumplir en el sistema añadiendo códigos apropiados en los diversos programas de aplicación.

1.4 Modelos de bases de datosModelos de datos.    Para introducirnos en este tema, empezaremos definiendo que es un modelo. modelo:    Es una representación de la realidad que contiene las características generales de algo que se va a realizar. En base de datos, esta representación la elaboramos de forma gráfica. ¿Qué es modelo de datos?    Es una colección de herramientas conceptuales para describir los datos, las relaciones que existen entre ellos, semántica asociada a los datos y restricciones de consistencia.

Los modelos de datos se dividen en tres grupos:

     Modelos lógicos basados en objetos.     Modelos lógicos basados en registros.     Modelos físicos de datos.

Page 19: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

  Modelos lógicos basados en objetos.        Se usan para describir datos en los niveles conceptual y de visión, es decir, con este modelo representamos los datos de tal forma como nosotros los captamos en el mundo real, tienen una capacidad de estructuración bastante flexible y permiten especificar restricciones de datos explícitamente. Existen diferentes modelos de este tipo, pero el más utilizado por su sencillez y eficiencia es el modelo Entidad-Relación.

  Modelos lógicos basados en registros.    Se utilizan para describir datos en los niveles  conceptual y físico.Estos modelos utilizan registros  e instancias para representar la realidad, así como las relaciones que existen entre estos registros (ligas) o apuntadores. A diferencia de los modelos de datos basados en objetos, se usan para especificar la estructura lógica global de la base de datos y para proporcionar una descripción a nivel más alto de la implementación.

Los tres modelos de datos más ampliamente aceptados son:           Modelo Jerárquico           Modelo de Red           Modelo Relacional

Page 20: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

1.4.1 Modelo Jerárquico

          Es similar al modelo de red en cuanto a las relaciones y datos, ya que estos se representan por  medio de registros  y sus ligas. La diferencia radica en que están organizados por conjuntos de árboles en lugar de gráficas arbitrarias. 

            

       

1.4.2 Modelo de red.     Este modelo representa los datos mediante colecciones de registros y sus relaciones se representan por medio de ligas o enlaces,los cuales pueden verse como punteros.  Los registros se organizan en un conjunto de gráficas arb itrarias.      

 Ejemplo:

             

Page 21: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

1.4.3 Modelo Relacional

         En este modelo se representan los datos y las relaciones entre estos, a través de una colección de tablas, en las cuales los renglones (tuplas) equivalen a cada uno de los registros que contendrá la base de datos y las columnas corresponden a las características(atributos) de cada registro localizado en la tupla.

Considerando nuestro ejemplo del empleado y el artículo: Tabla del empleado

Ahora te preguntaras ¿cómo se representan las relaciones entre las entidades en este modelo?    Existen dos formas de representarla; pero para ello necesitamos definir que es una llave primaria: Es un atributo el cual definimos como atributo principal, es una forma única de identificar a una entidad. Por ejemplo, el RFC de un empleado se distingue de otro por que los RFC no pueden ser iguales.

Page 22: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

 Ahora si, las formas de representar las relaciones en este modelo son:

1. Haciendo una tabla que contenga cada una de las llaves primarias de las entidades involucradas en la relación.

   Tomando en cuenta que la llave primaria del empleado es su RFC, y la llave primaria del artículo es la Clave.fundamentos

 2. Incluyendo en alguna de las tablas de las entidades involucradas, la llave de la otra tabla.                                                                                                

Page 23: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

1.5Arquitectura de un sistema de base de datos

    Un sistema de base de datos se encuentra dividido en módulos, cada uno de los cuales controla una parte de la responsabilidad total de sistema. En la mayoría de los casos, el sistema operativo proporciona únicamente los servicios más básicos y el sistema de la base de datos debe partir de esa base y controlar además el manejo correcto de los datos. Así el diseño de un sistema de base de datos debe incluir la interfaz entre el sistema de base de datos y el sistema operativo.

Los componentes funcionales de un sistema de base de datos, son:

      Gestor de archivos.            Gestiona la asignación de espacio en la memoria del disco y de las estructuras de datos usadas para representar información.      Manejador de base de datos.          Sirve de interfaz entre los datos y los programas de aplicación.      Procesador de consultas.              Traduce las proposiciones en lenguajes de consulta a instrucciones de bajo nivel. Además convierte la solicitud del usuario en una forma más eficiente.      Compilador de DDL.             Convierte las proposiciones DDL en un conjunto de tablas que contienen metadatos, estas se almacenan en el diccionario de datos.      Archivo de datos.            En él se encuentran almacenados físicamente los datos de una organización.      Diccionario de datos.             Contiene la información referente a la estructura de la base de datos.

Page 24: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

      Índices.            Permiten un rápido acceso a registros que contienen valores específicos.  

Page 25: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Una forma gráfica de representar los componentes mencionados y la relación que existe entre ellos sería la guiente.

Page 26: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

1.6 Instancias y esquemas.

    Con el paso del tiempo la información que se va acumulando y desechando en la base de datos, ocasiona que está cambie.Denominamos:Instancia.

     Al estado que presenta una base de datos en un tiempo dado. Veámoslo como una fotografía que tomamos de la base de datos en un tiempo t, después de que transcurre el tiempo t la base de datos ya no es la misma.

Esquema.

     Es la descripción lógica de la base de datos, proporciona los nombres de las entidades y sus atributos especificando las relaciones que existen entre ellos. Es un banco en el que se inscriben los valores que irán formando cada uno de los atributos. El esquema no cambia los que varían son los datos y con esto tenemos una nueva instancia.

Ejemplo:Considerando el ejemplo del vendedor que vende artículos, esquema e instancia según nuestro ejemplo, quedaría:

Esquema:    {Vendedor: Nombre, puesto, salario, RFC}    {Articulo: Clave, costo, descripción}Instancia:

    Como podemos observar el esquema nos muestra la estructura en el cual se almacenaran los datos, en este caso en registros cuyos nombres de campos son: por parte del vendedor (Nombre, puesto, salario, RFC) y por el artículo (Clave, costo, descripción); La instancia representa a una serie de datos almacenados en los registros establecidos por el esquema, estos datos varían, no permanecen fijos en el tiempo.

Page 27: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

1.7 Entidades y atributos

Entidades y conjunto de entidades   Una entidad es un objeto que existe y se distingue de otros objetos de acuerdo a sus características llamadas atributos. Las entidades pueden ser concretas como una persona o abstractas como una fecha.    Un conjunto de entidades es un grupo de entidades del mismo tipo. Por ejemplo el conjunto de entidades CUENTA, podría representar al conjunto de cuentas de un banco X, o ALUMNO representa a un conjunto de entidades de todos los alumnos que existen en una institución.     Una entidad se caracteriza y distingue de otra por los atributos, en ocasiones llamadas propiedades, que representan las características de una entidad. Los atributos de una entidad pueden tomar un conjunto de valores permitidos al que se le conoce como dominio del atributo. Así cada entidad se describe por medio de un conjunto de parejas formadas por el atributo y el valor de dato. Habrá una pareja para cada atributo del conjunto de entidades.Ejemplo:    Hacer una descripción para la entidad alumno con los atributos No_control, Nombre y Especialidad.Nombre_atributo, Valor        No_control   ,    96310418        Nombre        ,    Sánchez Osuna Ana       Esp              ,     LI

O considerando el ejemplo del Vendedor cuyos atributos son: RFC, Nombre, Salario.Nombre_atributo, Valor    RFC                  , COMD741101YHR   Nombre             , Daniel Colín Morales    Salario             , 3000

Page 28: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

1.8 esquemas y subesquemas

El esquema de la base de datos.

Una vez construido el esquema conceptual, el diseño de bases de datos obliga a realizar varias tareas previas a la construcción del esquema lógico global del sistema, también llamado esquema de bases de datos. Por el momento, basta saber que el esquema de la base de datos representa la descripción de los datos de la base de datos, mientras que el esquema conceptual representaba a la realidad.

La primera de las tareas necesarias es la identificación de los datos requeridos, para obtener como resultado las partes del área de aplicación que deben representarse mediante datos, y en que forma deben presentarse éstos a los usuarios. El siguiente paso es el análisis de datos, consistente en la definición y clasificación de esos datos, su descripción, que suele presentarse en forma de diccionario de datos, como una "metabase de datos".

Por último, debe hacerse la especificación de los paquetes de entrada y de salida, correspondientes con los datos que deben introducir y obtener como respuesta los usuarios, según sus necesidades. Las tres tareas habrán permitido obtener tres documentos sobre descripción del área de aplicación, definición y clasificación de los datos y especificación de las características de los diversos paquetes, respectivamente.

Tomando como punto de partida estos tres elementos, se construye la especificación de esquema de la base de datos, que responderá al contenido total de la base de datos y las características de las vías de acceso requeridas a través de estos datos. Frente al análisis de datos, que es la definición y clasificación de los datos, el esquema se encarga de la utilización de esos datos.

Page 29: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

1.9 independencia de los datos

    Se refiere a la protección contra los programas de aplicación que puedan originar  modificaciones cuando se altera la organización física o lógica de la base de datos. Existen 2 niveles de independencia de datos.      Independencia física de datos:             Es la capacidad de modificar el esquema físico sin provocar que se vuelvan a escribir los programas de aplicación.      Independencia lógica de datos:               Capacidad de modificar el esquema conceptual sin provocar que se vuelvan a escribir los programas de aplicación.

PRIMER ENTREGA DE PROYECTO

OBJETIVO: EL ALUMNO SELECCIONARA LA EMPRESA DE SU AGRADO Y APLICARA LAS TECNICAS DE ANALISIS Y DISEÑO PARA OBTENER INFORMACION DE ESTA Y ASI PODER REALIZAR UN DISEÑO DE BASE DE DATOS.CONTENIDO: EL ALUMNO DEBERA ENTREGAR LA PRIMER FACE DEL ANALISIS DEL SISTEMA, EL CUAL ESTA COMPUESTO POR LAS SIGUIENTES ETAPAS:

1.-INVESTIGACION PRELIMINAR2.-ESTUDIOS DE FACTIBILIDAD (TECNICA, OPERACIONAL Y ECONOMICA).

Page 30: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

3.-ANALISIS DE REQUERIMIENTOS.+

Page 31: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

UNIDAD II

2.1 Entidad, atributo, relación Entidad y atributo Entidad: En una B.D se almacena información de una serie de objetos o elementos. Estos objetos reciben el nombre de entidad. En el ejemplo de la Librería, libros, clientes y proveedores son entidades

Atributo: De cada entidad se almacenan una serie de datos que se denominan atributos de la entidad. Pueden ser atributos de una entidad cualquier característica o propiedad de ésta. Son atributos de la entidad libros: Autor, Título, Área de Edición, ISBN

Relaciones: En una B.D se almacenan además de las entidades, las relaciones existentes entre ellas. En el ejemplo de la Librería hay relaciones entre: las entidades libros/clientes y las entidades libros/proveedores.Tipo de relaciones:

Simples Biunívocas: de Uno a Uno (1 a 1)

Complejas De Uno a Muchos (1 a N) De Muchos a Muchos (N a N)

Page 32: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

2.2 Cardinalidad de mapeo

LA CARDINALIDAD DE MAPEO ES LA FORMA EN QUE LAS ENTIDADES SE RELACIONAN UNAS CON OTRAS. A LOS TIPOS DE RELACIONES ENTRE ENTIDADES, SE LES LLAMA: LIMITANTES DE MAPEO.

Limitantes de mapeo.    Existen 4 tipos de relaciones que pueden establecerse entre entidades, las cuales establecen con cuantas entidades de tipo B se pueden relacionar una entidad de tipo A:

Tipos de relaciones:

    Relación uno a uno.     Se presenta cuando existe una relación como su nombre lo indica uno a uno, denominado también relación de matrimonio. Una entidad del tipo A solo se puede relacionar con una entidad del tipo B, y viceversa;

    Por ejemplo: la relación asignación de automóvil que contiene a las entidades EMPLEADO, AUTO, es una relación 1 a 1, ya que asocia a un empleado con un único automóvil por lo tanto ningún empleado posee más de un automóvil asignado, y ningún vehículo se asigna a más de un trabajador.  Es representado gráficamente de la siguiente manera:

                  

Page 33: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

A: Representa a una entidad  de cualquier tipo diferente    a una entidad B.R: en el diagrama representa a la relación que existe entre las entidades.El extremo de la flecha que se encuentra punteada indica el uno de la relación, en este caso, una entidad A ligada a una entidad B.

    Relación uno a muchos.     Significa que una entidad del tipo A puede relacionarse con cualquier cantidad de entidades del tipo B, y una entidad del tipo B solo puede estar relacionada con una entidad del tipo A.  Su representación gráfica es la siguiente:

      Nótese en este caso que el extremo punteado de la flecha de la relación de A y B, indica una entidad A conectada a muchas entidades B.

    Muchos a uno.   Indica que una entidad del tipo B puede relacionarse con cualquier cantidad de entidades del tipo A, mientras que cada entidad del tipo A solo puede relacionarse con solo una entidad del tipo B.

Page 34: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

    Muchas a muchas.   Establece que cualquier cantidad de entidades del tipo A pueden estar relacionados con cualquier cantidad de entidades del tipo B. 

    A los tipos de relaciones antes descritas, también se le conoce como cardinalidad.     La cardinalidad nos especifica los tipos de relaciones que existen entre las entidades en el modelo E-R y establecer con estos, las validaciones necesarias para conseguir que los datos de la instancia (valor único en un momento dado de una base de datos) correspondan con la realidad.Algunos ejemplos de cardinalidades de la vida común pueden ser:Uno a uno.     El noviazgo, el RFC de cada persona, El CURP personal, El acta de nacimiento, ya que solo existe un solo documento de este tipo para cada una de las diferentes personas. Uno a muchos.   Cliente – Cuenta en un banco, Padre-Hijos, Camión-Pasajeros, zoológico- animales, árbol – hojas.

Muchos a muchos.   Arquitecto – proyectos, fiesta – personas, estudiante – materias.NOTA:   Cabe mencionar que la cardinalidad para cada conjunto de entidades depende del punto de vista que se le de al modelo en estudio, claro esta, sujetándose a la realidad.   Otra clase de limitantes lo constituye la dependencia de existencia.     Refiriéndonos a las mismas entidades A y B, decimos que si la entidad A depende de la existencia de la entidad B,

Page 35: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

entonces A es dependiente de existencia por B, si eliminamos a B tendríamos que eliminar por consecuente la entidad A, en este caso B es la entidad Dominante y A es la entidad subordinada.

PRACTICA 1 DE BASE DE DATOS

TEMA: INTRODUCCION A PHPMY ADMIN

OBJETIVO: EL ALUMNO DE MANERA EXTRACLASE, INSTALARA LA APLICACIÓN DE PHPMYADMIN EN SU ORDENADOR, DESPUES DE LA EXPLICACION DEL PROFESOR.

1.- EJECUTAR PHPMYADMIN.EXE

2.- SE SELECCIONARÁ EL IDIMOA INGLES.

Page 36: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

3.- SE DA CLIC EN EN NEXT PARA PASAR LA BIENVENIDA.

Page 37: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

4.- SE SELECCIONA LA RUTA DE INSTALACION, LA CUAL SE MANTENDRA IGUAL. SE DA CLIC EN NEXT

Page 38: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

5.- DEL APARTADO SERVICE SECTION, SE SELECCIONARÁN TODAS LAS CASILLAS Y SE DARA CLIC EN INSTALL.

6.-SE ESPERA A QUE LA INSTALACION TERMINE.

Page 39: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

7.-EN LAS VENTANAS CONSECUTIVAS SE DARA CLIC EN ACEPTAR A TODAS HASTA QUE APAREZCA EL PANEL DE CONTROL DE XAMPP.

Page 40: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Page 41: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Page 42: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

8.- PARA EJECUTAR PHPMYADMIN, SE EJECUTARA EL EXPLORADOR DE INTERNET, EN EL APARTADO URL, ESCRIBIRÁ: LOCALHOST.

APARECERÁ LA SIGUIENTE VENTANA

Page 43: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

9.- SE SELECCIONA EL IDIOMA ESPAÑOL

Page 44: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

10.- AHORA SE DA CLIC EN EL APARTADO PHPMYADMIN

11.- ESTE ES EL AMBIENTE DE TRABAJO DE PHPMYADMIN DONDE SE CREARAN ESQUEMAS, TABLAS, BASES DE DATOS, ETC.

Page 45: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

2.3 Llaves primarias.

Page 46: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

     Como ya se ha mencionado anteriormente, la distinción de una entidad entre otra se debe a sus atributos, lo cual la hace única. Una llave primaria es aquel atributo el cual consideramos clave para la identificación de los demás atributos que describen a la entidad.

Por ejemplo, si consideramos la entidad ALUMNO del Instituto Tecnológico de La Paz, podríamos tener los siguientes atributos:

Nombre, Semestre, Especialidad, Dirección, Teléfono, Número de control, de todos estos atributos el que podremos designar como llave primaria es el número de control, ya que es diferente para cada alumno y este nos identifica en la institución.

    Claro que puede haber más de un atributo que pueda identificarse como llave primaria en este caso se selecciona la que consideremos más importante, los demás atributos son denominados llaves secundarias.

     Una clave o llave primaria es indicada gráficamente en el modelo E-R con una línea debajo del nombre del atributo.

2.4 Diagrama Entidad-Relación

Page 47: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Denominado por sus siglas como: E-R; Este modelo representa a la realidad a través de un esquema gráfico empleando la terminología de entidades, que son objetos  que existen y son los elementos principales que se identifican en el problema a resolver con el diagramado y se distinguen de otros por sus características particulares denominadas atributos, el enlace que rige la unión de las entidades esta representado por la relación del modelo.

Recordemos  que un rectángulo nos representa a las entidades; una elipse a los atributos de las entidades, y una etiqueta dentro de un rombo nos indica la relación que existe entre las entidades, destacando con  líneas las uniones de estas y que la llave primaria de una entidad es aquel atributo que se encuentra subrayado.

A continuación mostraremos algunos ejemplos de modelos E-R, considerando las cardinalidades que existen entre ellos:

Relación Uno a Uno.Problema:Diseñar el modelo E-R, para la relación Registro de automóvil que consiste en obtener la tarjeta de circulación de un automóvil con los siguientes datos:- Automóvil- Modelo, Placas, Color  - Tarjeta de circulación -Propietario, No_serie, Tipo. 

                    Indicamos con este ejemplo que existe una relación de pertenencia de uno a uno, ya que existe una tarjeta de circulación registrada por cada automóvil.   

En este ejemplo, representamos que existe un solo presidente para cada país.

Page 48: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

              

   Relación muchos a muchos.

                El siguiente ejemplo indica que un cliente puede tener muchas cuentas, pero  que una cuenta puede llegar a pertenecer a un solo cliente (Decimos puede, ya que existen cuentas registradas a favor de más de una persona).

        

Page 49: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

2.5 Reducción de diagramas E-R a tablas

    Un diagrama E-R, puede ser representado también a través de una colección de tablas. Para cada una de las entidades y  relaciones  existe una tabla única a la que se le asigna como nombre el del conjunto de entidades y de las relaciones respectivamente, cada tabla tiene un número de columnas que son definidas por la cantidad de atributos y las cuales tienen el nombre del atributo.    La transformación de nuestro ejemplo Venta en la que intervienen las entidades de Vendedor con los atributos RFC, nombre, puesto, salario y Artículo con los atributos Clave, descripción, costo.Cuyo diagrama E-R es el siguiente:

Entonces las tablas resultantes siguiendo la descripción anterior son:Tabla Empleado

Nombre Puesto Salario RFCTeófilo Vendedor 2000 TEAT701210XYZ

CesarAuxiliar ventas

1200 COV741120ABC

Tabla artículo

ClaveDescripción

Costo

A100 Abanico 460

C260Colcha matrimonial

1200

Page 50: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Tabla VentaRFC ClaveTEAT701210XYZ C260COV741120ABC A100

    Nótese que en la tabla de relación - Venta -, contiene como atributos a las llaves primarias de las entidades que intervienen en dicha relación, en caso de que exista un atributo en las relaciones, este atributo es anexado como una fila más de la tabla;     Por ejemplo si anexamos el atributo fecha a la relación venta, la tabla que se originaria sería la siguiente:

RFC Clave FechaTEAT701210XYZ C260 10/12/96COV741120ABC A100 11/12/96

2.6 Generalización y especialización

Generalización.

    Es el resultado de la unión de 2 o más conjuntos de entidades (de bajo nivel) para producir un conjunto de entidades de más alto nivel. La generalización se usa para hacer resaltar los parecidos entre tipos de entidades de nivel más bajo y ocultar sus diferencias.

    La generalización consiste en identificar todos aquellos atributos iguales de un conjunto de entidades para formar una entidad(es) global(es) con dichos atributos semejantes, dicha entidad(es) global(es) quedara a un nivel más alto al de las entidades origen.

Ejemplo:

Page 51: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

    Tomando el ejemplo del libro de fundamentos de base de datos de Henry F. Korth.

Donde:    Se tiene las entidades Cta_Ahorro y Cta_Cheques, ambas tienen los atributos semejantes de No_Cta y Saldo, aunque además de estos dos atributos, Cta_Ahorro tiene el atributo Tasa_Interes y Cta_Cheques el atributo Saldo_Deudor. De todos estos atributos podemos juntar (generalizar) No_Cta y Saldo que son iguales en ambas entidades.

Entonces tenemos:

      Podemos leer esta gráfica como: La entidad Cta_Ahorro hereda de la entidad CUENTA los atributos No_Cta y saldo, además del atributo de TasaInteres, de forma semejante Cta_cheque tiene los atributos de No_Cta, Saldo y SaldoDeudor.     Como podemos observar la Generalización trata de eliminar la redundancia (repetición) de atributos, al englobar los atributos semejantes. La entidad(es) de bajo nivel cuentan (heredan) todos los atributos correspondientes.

Page 52: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

 Especialización:     Es el resultado de tomar un subconjunto de entidades de alto nivel para formar un conjunto de entidades de más bajo nivel.    * En la generalización cada entidad de alto nivel debe ser también una entidad de bajo nivel. La especialización no tiene este limitante.    * Se representa por medio de un triángulo denominado con la etiqueta "ISA", se distingue de la generalización por el grosor de las líneas que conectan al triángulo con las entidades.    * La especialización denota la diferencia entre los conjuntos de entidades de alto y bajo nivel.

PRACTICA 2

Page 53: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

NOMBRE: INICIO DEL MODELADO DE LA BASE DE DATOS:

OBJETIVO: EL ALUMNO CONSTRUIRA DEL ENTORNO DE UNA ESCUELA LA ESTRUCTURA O MODELADO DE LA BASE DE DATOS DE ESTA, PREVIAS CLASES TEORICAS Y PRACTICAS, POR PARTE DEL PROFESOR.

DESARROLLO: EL ALUMNO CONSTRUIRA DEL ENTORNO DE UNA ESCUELA LAS ESTRUCTURAS DE ENTIDAD, ATRIBUTO Y SU RELACION, DEPENDENCIAS FUNCIONALES, CARDINALIDAD DE MAPEO, OBTENCINO DE LLAVES PRIMARIAS POR ENTIDAD, CONSTRUCCION DEL DIAGRAMA E-R Y REDUCCION DEL DIAGRAMA E-R A TABLAS.

3.1 Estructura de las bases de datos relacionales

Page 54: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

    La arquitectura relacional se puede expresar en términos de tres niveles de abstracción: nivel interno, conceptual y de visión. La arquitectura relacional consta de los siguientes componentes: 

Modelo relacional de datos:    En el nivel conceptual, el modelo relacional de datos está representado por una colección de relaciones almacenadas. Cada registro de tipo conceptual en un modelo relacional de datos se implanta como un archivo almacenado distinto.

Submodelo de datos:     Los esquemas externos de un sistema relacional se llaman submodelos relacionales de datos; cada uno consta de uno a más escenarios (vistas) para describir los datos requeridos por una aplicación dada. Un escenario puede incluir datos de una o más tablas de datos. Cada programa de aplicación está provisto de un buffer ("Área de trabajo de usuario") donde el DBMS puede depositar los datos recuperados de la base para su procesamiento, o puede guardar temporalmente sus salidas antes de que el DBMS las escriba en la base de datos.

Esquema de almacenamiento:     En el nivel interno, cada tabla base se implanta como un archivo almacenado. Para las recuperaciones sobre las claves principal o secundaria se pueden establecer uno o más índices para acceder un archivo almacenado.

Sublenguaje de datos:     Es un lenguaje de manejo de datos para el sistema relacional, el álgebra relacional y cálculo relacional, ambos lenguajes son "relacionalmente completos", esto es, cualquier relación que pueda derivarse de una o más tablas de datos, también se puede derivar con u solo comando del sublenguaje. Por tanto, el modo de operación de entrada/Salida en un sistema relacional se puede procesar en la forma: una tabla a la vez en lugar de: un registro a la vez; en otras palabras, se puede recuperar una tabla en vez de un solo registro con la ejecución de un comando del sublenguaje de

3.2 Enunciados relacionales

Page 55: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Los lenguajes de consultas:      Son los lenguajes en el que los usuarios solicitan información de la base de datos. Estos lenguajes son generalmente de más alto nivel que los lenguajes de programación. Los lenguajes de consulta pueden clasificarse como procedimentales y no procedimentales.

     En el lenguaje del tipo procedimental el usuario da las instrucciones al sistema para que realice una secuencia de operaciones en la base de datos para calcular el resultado deseado.

     En el lenguaje no procedimental, el usuario describe la información deseada sin dar un procedimiento específico para obtener dicha información. 

El álgebra relacional es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.

Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.

Page 56: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

3.3 Operadores relacionales

Operadores relacionales

Al igual que en matemáticas, estos operadores nos permitirán evaluar las relaciones (igualdad, mayor, menor, etc.) entre un par de operándos (en principio, pensemos en números). Los operadores relacionales son:

3.4 Álgebra relacional

Álgebra relacional

Operador Acción

> Mayor que

>= Mayor o igual que

< Menor que

<= Menor o igual que

== Igual

!= Distinto

Page 57: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.

Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.

Unión R U S

La unión de dos relaciones R y S, es otra relación que contiene las tuplas que están en R, o en S, o en ambas, eliminándose las tuplas duplicadas

R y S deben ser unión-compatible, es decir, definidas sobre el mismo conjunto de atributos

Tabla R Tabla S Tabla R U S

Diferencia R - S La diferencia de dos relaciones R y S, es otra relación que contiene las tuplas que están en la relación R, pero no están en S.

Page 58: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

R y S deben ser unión-compatible

Tabla R Tabla S Tabla R - STabla S - R

IntersecciónR ∩ SDefine una relación que contiene el conjunto de todas las filas que están tanto en la relación R como en S

R y S deben ser unión-compatible

Page 59: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Equivalencia con operadores básicos R ∩ S = R – (R – S)

SEGUNDA ENTREGA DE PROYECTO

Page 60: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

OBJETIVO: EL ALUMNO DE LA EMPRESA SELECCIONADA Y APLICARA LAS TECNICAS DE DE MODELADO DE BASE DE DATOS PARA OBTENER UN MODELO DE LA BD DE ESTA Y ASI PODER REALIZAR UN DISEÑO.

CONTENIDO: EL ALUMNO DEBERA ENTREGAR EL AMODELADO DE LA BASE DE DATOS DE SU EMPRESA LA CUAL DEBE CONSTAR DE LOS SIGUIENTES PASOS:

1.-OBTENCION DE ENTIDADES.2.-OBTENCION DE ATRIBUTOS.3.-DEPENDENCIAS FUNCIONALES.4.-CARDINALIDAD Y MAPEO5.-OBTENCION DE LLAVES PRIMARIAS. 6.-CONSTRUCCION DEL DIAGRAMA E-R. 7.- REDUCCION DEL DIAGRAMA E-R A TABLAS.

3.5 SQL

Page 61: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

El Lenguaje de consulta estructurado (SQL en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo lanzar consultas con el fin de recuperar -de una forma sencilla- información de interés de una base de datos, así como también hacer cambios sobre la misma. Es un lenguaje de cuarta generación (4GL).

El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales per-mitiendo gran variedad de operaciones sobre los mismos.

Es un lenguaje declarativo de alto nivel o de no procedimiento, que gracias a su fuerte base teórica y su orientación al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificación. De esta forma una sola sentencia puede equivaler a uno o más programas que utilizas en un lenguaje de bajo nivel orientado a objetos.

Optimización

Como ya se dijo arriba, y como suele ser común en los lenguajes de acceso a bases de datos de alto nivel, el SQL es un lenguaje declarativo. O sea, que especifica qué es lo que se quiere y no cómo conseguirlo, por lo que una sentencia no establece explícitamente un orden de ejecución.

El orden de ejecución interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que se hace necesario que éste lleve a cabo una optimización antes de la ejecución de la misma. Muchas veces, el uso de índices acelera una instrucción de consulta, pero ralentiza la actualización de los datos. Dependiendo del uso de la aplicación, se priorizará el acceso indexado o una rápida actualización de la información. La optimización difiere sensiblemente en cada motor de base de datos y depende de muchos factores.

Existe una ampliación de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que permite el acceso a bases de datos di -fusas, usando la lógica difusa. Este lenguaje ha sido implementado a nivel experimental y está evolucionando rápidamen-te.

Page 62: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

El lenguaje de definición de datos (en inglés Data Definition Language, o DDL), es el que se encarga de la modificación de la estructura de los objetos de la base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE.

CREATE

Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte.

Ejemplo (crear una tabla)

CREATE TABLE TABLA_NOMBRE

ALTER

Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc.

Ejemplo (agregar columna a una tabla) ALTER TABLE ''TABLA_NOMBRE'' ( ADD NUEVO_CAMPO INT UNSIGNED )

DROP

Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.

Page 63: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Ejemplo 1 DROP TABLE TABLA_NOMBRE

Ejemplo 2 ALTER TABLE ''TABLA_NOMBRE'' ( DROP COLUMN ''CAMPO_NOMBRE1'' )

TRUNCATE

Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DELETE, es que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande, la desventaja es que TRUN-CATE solo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la cláusula WHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es en realidad una DDL, ya que internamente, el comando truncate borra la tabla y la vuelve a crear y no ejecuta ninguna transacción.

Ejemplo TRUNCATE TABLE ''TABLA_NOMBRE''

Lenguaje de manipulación de datos (LMD)

Definición

Un lenguaje de manipulación de datos (Data Manipulation Language, o DML en inglés) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado.

Page 64: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional. Otros ejemplos de DML son los usados por bases de datos IMS/DL1, CODASYL u otras.

INSERT

Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional.

Forma básica INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1'', [''valor2,...''])

Las cantidades de columnas y valores deben ser las mismas. Si una columna no se especifica, le será asignado el valor por omisión. Los valores especificados (o implícitos) por la sentencia INSERT deberán satisfacer todas las restricciones aplicables. Si ocurre un error de sintaxis o si alguna de las restricciones es violada, no se agrega la fila y se devuelve un error.

Ejemplo INSERT INTO agenda_telefonica (nombre, numero) VALUES ('Roberto Fernández', '4886850');

Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada:

INSERT INTO ''tabla'' VALUES (''valor1'', [''valor2,...''])

Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la tabla 'agenda_telefonica'):

INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850');

Page 65: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Formas avanzadas

Inserciones en múltiples filas

Una característica de SQL (desde SQL-92) es el uso de constructores de filas para insertar múltiples filas a la vez, con una sola sentencia SQL:

INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1a'', [''valor1b,...'']), (''value2a'', [''value2b,...'']),...

Esta característica es soportada por DB2, PostgreSQL (desde la versión 8.2), MySQL, y H2.

Ejemplo (asumiendo ese 'nombre' y 'numero' son las únicas columnas en la tabla 'agenda_telefonica'):

INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850'), ('Alejandro Sosa', '4556550');

Que podía haber sido realizado por las sentencias

INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850');INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550');

Notar que las sentencias separadas pueden tener semántica diferente (especialmente con respecto a los triggers), y pue-de tener diferente performance que la sentencia de inserción múltiple.

Para insertar varias filas en MS SQL puede utilizar esa construcción:

INSERT INTO phone_bookSELECT 'John Doe', '555-1212'UNION ALLSELECT 'Peter Doe', '555-2323';

Page 66: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Tenga en cuenta que no se trata de una sentencia SQL válida de acuerdo con el estándar SQL (SQL: 2003), debido a la cláusula subselect incompleta.

Para hacer lo mismo en Oracle se usa DUAL TABLE, siempre que se trate de solo una simple fila:

INSERT INTO phone_bookSELECT 'John Doe', '555-1212' FROM DUALUNION ALLSELECT 'Peter Doe','555-2323' FROM DUAL

Un estándar-conforme implementación de esta lógica se muestra el siguiente ejemplo, o como se muestra arriba:

INSERT INTO phone_bookSELECT 'John Doe', '555-1212' FROM LATERAL (VALUES (1)) AS t(c)UNION ALLSELECT 'Peter Doe','555-2323' FROM LATERAL (VALUES (1)) AS t(c)

Copia de filas de otras tablas

Un INSERT también puede utilizarse para recuperar datos de otros, modificarla si es necesario e insertarla directamente en la tabla. Todo esto se hace en una sola sentencia SQL que no implica ningún procesamiento intermedio en la aplica-ción cliente. Un SUBSELECT se utiliza en lugar de la cláusula VALUES. El SUBSELECT puede contener JOIN, llamadas a funciones, y puede incluso consultar en la misma TABLA los datos que se inserta. Lógicamente, el SELECT se evalúa antes que la operación INSERT este iniciada. Un ejemplo se da a continuación.

Page 67: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

INSERT INTO phone_book2 SELECT *FROM phone_bookWHERE name IN ('John Doe', 'Peter Doe')

Una variación es necesaria cuando algunos de los datos de la tabla fuente se esta insertando en la nueva tabla, pero no todo el registro. (O cuando los esquemas de las tablas no son lo mismo.)

INSERT INTO phone_book2 ( [name], [phoneNumber] ) SELECT [name], [phoneNumber]FROM phone_bookWHERE name IN ('John Doe', 'Peter Doe')

El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir con el esquema de la tabla donde los datos son insertados.

MySQL

MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de insta-laciones.[1] MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems— desarrolla MySQL como software libre en un esquema de licenciamiento dual.

Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero las empresas que quieran incorporarlo en productos privativos pueden comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C.

Page 68: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Al contrario que proyectos como Apache, donde el software es desarrollado por una comunidad pública y el copyright del código está en poder del autor individual, MySQL es propiedad y está patrocinado por una empresa privada, que posee el copyright de la mayor parte del código.

Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias priva-tivas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que cola-boran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson, y Michael Widenius.

3.7 Dependencia funcional

B es funcionalmente dependiente de A.Una dependencia funcional es una conexión entre uno o más atributos. Por ejemplo si conocemos el valor de Fecha De Nacimiento podemos conocer el valor de Edad.Las dependencias funcionales del sistema se escriben utilizando una flecha, de la siguiente manera:Fecha De Nacimiento Edad

Page 69: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Aquí a Fecha De Nacimiento se le conoce como un determinante. Se puede leer de dos formas Fecha De Nacimiento determina a Edad o Edad es funcionalmente dependiente de Fecha De Nacimiento. De la normalización (lógica) a la implementación (física o real) puede ser sugerible tener éstas dependencias funcionales para lograr mayor eficiencia en las tablas.

Propiedades de la Dependencia funcionalExisten 3 axiomas de Armstong:

Dependencia funcional ReflexivaSi y esta incluido en x entonces Si la dirección o el nombre de una persona están incluidos en el DNI, entonces con el DNI podemos determinar la dirección o su nombre.

Dependencia funcional AumentativaEntonces

DNI nombredni,dirección nombre,direcciónSi con el DNI se determina el nombre de una persona, entonces con el DNI más la dirección también se determina el nombre o su dirección.

Page 70: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Dependencia funcional transitiva.Sean X, Y, Z tres atributos (o grupos de atributos) de la misma entidad. Si Y depende funcionalmente de X y Z de Y, pero X no depende funcionalmente de Y, se dice que Z depende transitivamente de X. Simbólicamente sería:X ---> Y ---> Z entonces X ---> Z Fecha De Nacimiento EdadEdad ConducirFecha De Nacimiento Edad ConducirEntonces tenemos que Fecha De Nacimiento determina a Edad y la Edad determina a Conducir, indirectamente podemos saber a través de Fecha De Nacimiento a Conducir (En muchos países , para una persona poder conducir un automóvil la persona necesita ser mayor de X edad, por eso se utiliza este ejemplo).

3.8 integridad referencial

La integridad referencial es una propiedad deseable en las bases de datos. Gracias a la integridad referencial se garantiza que una entidad (fila o registro) siempre se relaciona con otras entidades válidas, es decir, que existen en la base de datos. Implica que en todo momento dichos datos sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones mal resueltas.Todas las bases de datos relacionales gozan de esta propiedad gracias a que el software gestor de base de datos vela por su cumplimiento. En cambio, las bases de datos jerárquicas requieren que los programadores se aseguren de mantener tal propiedad en sus programas.

Ejemplo: Cómo funciona

Page 71: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Supongamos una base de datos con las entidades Persona y Factura. Toda factura corresponde a una persona y solamente una. Implica que en todo momento dichos datos sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones mal resueltas.Supongamos que una persona se identifica por su atributo DNI (Documento nacional de identidad). También tendrá otros atributos como el nombre y la dirección. La entidad Factura debe tener un atributo DNI_cliente que identifique a quién pertenece la factura.Por sentido común es evidente que todo valor de DNI_cliente debe corresponder con algún valor existente del atributo DNI de la entidad Persona. Esta es la idea intuitiva de la integridad referencial.

Existen tres tipos de integridad referencial:

Integridad referencial débil: si en una tupla de R todos los valores de los atributos de K tienen un valor que no es el nulo, entonces debe existir una tupla en S que tome esos mismos valores en los atributos de J;

Integridad referencial parcial: si en una tupla de R algún atributo de K toma el valor nulo, entonces debe existir una tupla en S que tome en los atributos de J los mismos valores que los atributos de K con valor no nulo; y

Integridad referencial completa: en una tupla de R todos los atributos de K deben tener el valor nulo o bien todos tienen un valor que no es el nulo y entonces debe existir una tupla en S que tome en los atributos de J los mismos valores que toman los de K.

La integridad referencial en juego Cuando se crea una nueva instancia de Factura, la integridad referencial exige que el atributo DNI_cliente coincida con el atributo DNI de alguna instancia de la entidad Persona. En caso contrario, no se permite la operación.Cuando se intenta eliminar una instancia de Persona, la integridad referencial exige que no exista ninguna factura asociada, es decir, se comprueba que no existe ninguna instancia de Factura cuyo atributo DNI_cliente coincida con el atributo DNI de la instancia a borrar. En caso contrario, no se permite la operación.

Page 72: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

3.9 Normalización de bases de datos

Para otros usos de este término véase Normalización (desambiguación).El proceso de normalización de bases de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional.

Las bases de datos relacionales se normalizan para:Evitar la redundancia de los datos.Evitar problemas de actualización de los datos en las tablas.Proteger la integridad de los datos.

En el modelo relacional es frecuente llamar tabla a una relación, aunque para que una tabla sea considerada como una relación tiene que cumplir con algunas restricciones:Cada columna debe tener su nombre único.

No puede haber dos filas iguales. No se permiten los duplicados.Todos los datos en una columna deben ser del mismo tipo.

3.10 seguridad e integridad

En un sistema de gestión de base de datos (SGBD), cada nodo es un descriptor; las relaciones se representan por fle-chas que conectan los nodos; los datos se organizan en registros de longitud variable, donde cada registro es un conjunto de pares clave / valor, de modo que cada uno contiene toda la información que le concierne: relaciones descripción y va-lores de los campos. Esto permite omitir el uso de tablas o caracterizaciones globales de un determinado grupo de regis-tros; y por último, los registros de un mismo tipo no tienen por que tener las mismas relaciones o campos.

Page 73: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Además, G también puede ser utilizada como una herramienta de integración de bases de datos tradicionales debido a que cuenta con conectores entre bases de datos JDBC/ODBC (Java DataBase Connectivity, Open DataBase Connectivity).La plataforma guarda cifrados todos los datos codificados, contraseñas, identificadores de usuario y demás datos claves; y el resultado del cifrado, lo codifica para mayor seguridad. Además, G también permite generar firmas digitales y cifrar zonas de datos.

UNIDAD IV4.1 Características de MySQL

• MySQL es un sistema de gestión de bases de datos

Una base de datos es una colección estructurada de datos. Puede ser cualquier cosa, desde una simple lista de compra a una galería

Page 74: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

de pintura o las más vastas cantidades de información en una red corporativa. Para añadir, acceder, y procesar los datos almacenadosen una base de datos, necesita un sistema de gestión de base de datos como MySQL Server. Al ser los computadoresmuy buenos en tratar grandes cantidades de datos, los sistemas de gestión de bases de datos juegan un papel central en computación,como aplicaciones autónomas o como parte de otras aplicaciones.

• MySQL es un sistema de gestión de bases de datos relacionales

Una base de datos relacional almacena datos en tablas separadas en lugar de poner todos los datos en un gran almacén. Esto añade velocidad y flexibilidad. La parte SQL de "MySQL" se refiere a "Structured Query Language". SQL es el lenguaje estandarizadomás común para acceder a bases de datos y está definido por el estándar ANSI/ISO SQL. El estándar SQL ha evolucionado desde 1986 y existen varias versiones. En este manual, "SQL-92" se refiere al estándar del 1992, "SQL:1999" se refiere a la versión del 1999, y "SQL:2003" se reviere a la versión actual del estándar. Usamos la frase "el estándar SQL" para referirnos a la versión actual de SQL.

• MySQL software es Open Source.

Open Source significa que es posible para cualquiera usar y modificar el software. Cualquiera puede bajar el software MySQL desde Internet y usarlo sin pagar nada. Si lo desea, puede estudiar el código fuente y cambiarlo para adaptarlo a sus necesidades.El software MySQL usa la licencia GPL (GNU General Public License), http://www.fsf.org/licenses/, para definir lo que puede y no puede hacer con el software en diferentes situaciones. Si no se encuentra cómodo con la GPL o necesita añadir código MySQL en una aplicación comercial, puede comprarnos una licencia comercial. Consulte la Introducción a las Licencias MySQL para más información (http://www.mysql.com/company/legal/licensing/).

• El servidor de base de datos MySQL es muy rápido, fiable y fácil de usar.

Page 75: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Si esto es lo que está buscando, debería probarlo. El servidor MySQL también tiene una serie de características prácticas desarrolladas en cooperación con los usuarios. Puede encontrar comparaciones de rendimiento de MySLQL Server con otros sistemasde gestión de bases de datos en nuestra página de comparativas de rendimiento. Consulte Sección 7.1.4, “El paquete de pruebas de rendimiento (benchmarks) de MySQL”.MySQL Server se desarrolló originalmente para tratar grandes bases de datos mucho más rápido que soluciones existentes y ha sido usado con éxito en entornos de producción de alto rendimiento durante varios años. MySQL Server ofrece hoy en día una gran cantidad de funciones. Su conectividad, velocidad, y seguridad hacen de MySQL Server altamente apropiado para accederbases de datos en Internet

• MySQL Server trabaja en entornos cliente/servidor o incrustados

El software de bases de datos MySQL es un sistema cliente/servidor que consiste en un servidor SQL multi-threaded que trabaja con diferentes bakends, programas y bibliotecas cliente, herramientas administrativas y un amplio abanico de interfaces deprogramación para aplicaciones (APIs). También proporcionamos el MySQL Server como biblioteca incrustada multi-threaded que puede ligar en su aplicación para obtener un producto más pequeño, rápido y fácil de administrar.

Historia de MySQL

Empezamos con la intención de usar MySQL para conectar a nuestras tablas utilizando nuestras propias rutinas rápidas de bajo nivel (ISAM). Sin embargo y tras algunas pruebas, llegamos a la conclusión que MySQL no era lo suficientemente rápido o flexible para nuestras necesidades. Esto provocó la creación de una nueva interfaz SQL para nuestra base de datos pero casi con la misma interfaz API que MySQL. Esta API fue diseñada para permitir código de terceras partes que fue escrito para poder usarse con MySQL para ser fácilmente portado para el uso con MySQL.La derivación del nombre MySQL no está clara. Nuestro directorio base y un gran número de nuestras bibliotecas y herramientas han tenido el prefijo "my" por más de 10 años. Sin embargo, la hija del co-fundador Monty Widenius también se llama My. Cuálde los dos dió su nombre a MySQL todavía es un misterio, incluso para nosotros.

Page 76: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

El nombre del delfín de MySQL (nuestro logo) es "Sakila", que fue elegido por los fundadores de MySQL AB de una gran lista de nombres sugerida por los usuarios en el concurso "Name the Dolphin" (ponle nombre al delfín). El nombre ganador fue enviadopor Ambrose Twebaze, un desarrollador de software Open Source de Swaziland, África. Según Ambrose, el nombre femenino de Sakila tiene sus raíces en SiSwate, el idioma local de Swaziland. Sakila también es el nombre de una ciudad en Arusha, Tanzania,cerca del país de origen de Ambrose, Uganda.

Las principales características de MySQL

La siguiente lista describe algunas de las características más importantes del software de base de datos MySQL.

• Interioridades y portabilidad

• Escrito en C y en C++

• Probado con un amplio rango de compiladores diferentes

• Funciona en diferentes plataformas.

Page 77: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• Usa GNU Automake, Autoconf, y Libtool para portabilidad.

• APIs disponibles para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, y Tcl. • Uso completo de multi-threaded mediante threads del kernel. Pueden usarse fácilmente múltiple CPUs si están disponibles.

• Proporciona sistemas de almacenamientos transaccionales y no transaccionales.

• Usa tablas en disco B-tree (MyISAM) muy rápidas con compresión de índice.

• Relativamente sencillo de añadir otro sistema de almacenamiento. Esto es útil si desea añadir una interfaz SQL para una base de datos propia.

• Un sistema de reserva de memoria muy rápido basado en threads.

• Joins muy rápidos usando un multi-join de un paso optimizado.

• Tablas hash en memoria, que son usadas como tablas temporales.

• Las funciones SQL están implementadas usando una librería altamente optimizada y deben ser tan rápidas como sea posible.Normalmente no hay reserva de memoria tras toda la inicialización para consultas.

• El código MySQL se prueba con Purify (un detector de memoria perdida comercial) así como con Valgrind, una herramienta GPL (http://developer.kde.org/~sewardj/).

• El servidor está disponible como un programa separado para usar en un entorno de red cliente/servidor. También está disponible como biblioteca y puede ser incrustado (linkado) en aplicaciones autónomas. Dichas aplicaciones pueden usarse por sí mismas o en entornos donde no hay red disponible..

Page 78: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• Tipos de columnas

• Diversos tipos de columnas: enteros con/sin signo de 1, 2, 3, 4, y 8 bytes de longitud, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM, y tipos espaciales OpenGIS.

• Registros de longitud fija y longitud variable.

• Sentencias y funciones

• Soporte completo para operadores y funciones en las cláusulas de consultas SELECT y WHERE. Por ejemplo:mysql> SELECT CONCAT(first_name, ' ', last_name)-> FROM citizen-> WHERE income/dependents > 10000 AND age > 30;• Soporte completo para las cláusulas SQL GROUP BY y ORDER BY. Soporte de funciones de agrupación (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX(), MIN(), y GROUP_CONCAT()).

• Soporte para LEFT OUTER JOIN y RIGHT OUTER JOIN cumpliendo estándares de sintaxis SQL y ODBC.

• Soporte para alias en tablas y columnas como lo requiere el estándar SQL.

• DELETE, INSERT, REPLACE, y UPDATE devuelven el número de filas que han cambiado (han sido afectadas). Es posible devolver el número de filas que serían afectadas usando un flag al conectar con el servidor.

• El comando específico de MySQL SHOW puede usarse para obtener información acerca de la base de datos, el motor de base de datos, tablas e índices. El comando EXPLAIN puede usarse para determinar cómo el optimizador resuelve una consulta.

• Los nombres de funciones no colisionan con los nombres de tabla o columna. Por ejemplo, ABS es un nombre válido de columna.

Page 79: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

La única restricción es que para una llamada a una función, no se permiten espacios entre el nombre de función y el '(' a continuación.

• Puede mezclar tablas de distintas bases de datos en la misma consulta (como en MySQL 3.22).

• Seguridad

• Un sistema de privilegios y contraseñas que es muy flexible y seguro, y que permite verificación basada en el host. Las contraseñas son seguras porque todo el tráfico de contraseñas está encriptado cuando se conecta con un servidor.

• Escalabilidad y límites

• Soporte a grandes bases de datos. Usamos MySQL Server con bases de datos que contienen 50 millones de registros. También conocemos a usuarios que usan MySQL Server con 60.000 tablas y cerca de 5.000.000.000.000 de registros.

• Se permiten hasta 64 índices por tabla (32 antes de MySQL 4.1.2). Cada índice puede consistir desde 1 hasta 16 columnas o partes de columnas. El máximo ancho de límite son 1000 bytes (500 antes de MySQL 4.1.2).Un índice puede usar prefijosde una columna para los tipos de columna CHAR, VARCHAR, BLOB, o TEXT.

• Conectividad

• Los clientes pueden conectar con el servidor MySQL usando sockets TCP/IP en cualquier plataforma. En sistemas Windowsde la familia NT (NT,2000,XP, o 2003), los clientes pueden usar named pipes para la conexión. En sistemas Unix, los clientes pueden conectar usando ficheros socket Unix.• En MySQL 5.0, los servidores Windows soportan conexiones con memoria compartida si se inicializan con la opción --shared-memory. Los clientes pueden conectar a través de memoria compartida usando la opción --protocol=memory.

• La interfaz para el conector ODBC (MyODBC) proporciona a MySQL soporte para programas clientes que usen conexiones

Page 80: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

ODBC (Open Database Connectivity). Por ejemplo, puede usar MS Access para conectar al servidor MySQL. Los clientes pueden ejecutarse en Windows o Unix. El código fuente de MyODBC está disponible. Todas las funciones para ODBC 2.5 están soportadas, así como muchas otras.

• La interfaz para el conector J MySQL proporciona soporte para clientes Java que usen conexiones JDBC. Estos clientes pueden ejecutarse en Windows o Unix. El código fuente para el conector J está disponible.

• Localización

• El servidor puede proporcionar mensajes de error a los clientes en muchos idiomas.

• Soporte completo para distintos conjuntos de caracteres, incluyendo latin1 (ISO-8859-1), german, big5, ujis, y más.Por ejemplo, los caracteres escandinavos 'â', 'ä' y 'ö' están permitidos en nombres de tablas y columnas. El soporte para Unicode está disponible

• Todos los datos se guardan en el conjunto de caracteres elegido. Todas las comparaciones para columnas normales de cadenas de caracteres son case-insensitive.

• La ordenación se realiza acorde al conjunto de caracteres elegido (usando colación Sueca por defecto). Es posible cambiarla cuando arranca el servidor MySQL. Para ver un ejemplo de ordenación muy avanzada, consulte el código Checo de ordenación.MySQL Server soporta diferentes conjuntos de caracteres que deben ser especificados en tiempo de compilación y de ejecución.

• Clientes y herramientas

• MySQL server tiene soporte para comandos SQL para chequear, optimizar, y reparar tablas. Estos comandos están disponibles a través de la línea de comandos y el cliente mysqlcheck. MySQL también incluye myisamchk, una utilidad de líneade comandos muy rápida para efectuar estas operaciones en tablas MyISAM.

Page 81: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• Todos los programas MySQL pueden invocarse con las opciones --help o -? para obtener asistencia en línea.

Estabilidad de MySQL

Esta sección trata las preguntas "¿Qué estabilidad tiene MySQL Server?" y, "¿Puedo fiarme de MySQL Server para esteproyecto?" Intentaremos clarificar estas cuestiones y responder algunas preguntas importantes que preocupan a muchos usuariospotenciales. La información en esta sección se basa en datos recopilados de las listas de correo, que son muy activas para identificarproblemas así como para reportar tipos de usos.

El código original se remonta a los principios de los años 80. En TcX, la predecesora de MySQL AB, el código MySQL ha funcionado en proyectos desde mediados de 1996 sin ningún problema. Cuando el software de base de datos MySQL fue distribuido entre un público más amplio, nuestros nuevos usuarios rápidamente encontraron trozos de código no probados. Cada nueva versión desde entonces ha tenido pocos problemas de portabilidad incluso considerando que cada nueva versión ha tenido muchas nuevas funcionalidades.

Cada versión de MySQL Server ha sido usable. Los problemas han ocurrido únicamente cuando los usuarios han probado código de las "zonas grises". Naturalmente, los nuevos usuarios no conocen cuáles son estas zonas; esta sección, por lo tanto, trata de documentar dichas áreas conocidas a día de hoy. Las descripciones mayormente se corresponden con la versión 3.23, 4.0 y 4.1 de MySQL Server. Todos los bugs reportados y conocidos se arreglan en la

Page 82: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

última versión, con las excepciones listadas en las secciones de bugs y que están relacionados con problemas de diseño. Consulte Sección A.8, “Problemas conocidos en MySQL”.

El diseño de MySQL Server es multi capa, con módulos independientes. Algunos de los últimos módulos se listan a continuación con una indicación de lo bien testeados que están:

• Replicatión (Estable)Hay grandes grupos de servidores usando replicación en producción, con buenos resultados. Se trabaja para mejorar característicasde replicación en MySQL 5.x.

• InnoDB tablas (Estable)El motor de almacenamiento transaccional InnoDB es estable y usado en grandes sistemas de producción con alta carga de trabajo.

• BDB tablas (Estable)El código Berkeley DB es muy estable, pero todavía lo estamos mejorando con el interfaz del motor de almacenamientotransaccional BDB en MySQL Server.

• Búsquedas Full-text (Estable)Búsquedas Full-text es ampliamente usada.

• MyODBC 3.51 (Estable)MyODBC 3.51 usa ODBC SDK 3.51 y es usado en sistemas de producción ampliamente. Algunas cuestiones surgidas parecenser cuestión de las aplicaciones que lo usan e independientes del controlador ODBC o la base de datos subyacente.

Page 83: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Dimensiones máximas de las tablas MySQL

En MySQL 5.0, usando el motor de almacenamiento MyISAM, el máximo tamaño de las tablas es de 65536 terabytes (256 ^ 7 – 1 bytes). Por lo tanto, el tamaño efectivo máximo para las bases de datos en MySQL usualmente los determinan los límites de tamaño de ficheros del sistema operativo, y no por límites internos de MySQL.El motor de almacenamiento InnoDB mantiene las tablas en un espacio que puede ser creado a partir de varios ficheros. Esto permite que una tabla supere el tamaño máximo individual de un fichero. Este espacio puede incluir particiones de disco, lo que permitetablas extremadamente grandes. El tamaño máximo del espacio de tablas es 64TB.La siguiente tabla lista algunos ejemplos de límites de tamaño de ficheros de sistemas operativos. Esto es sólo una burda guía y no pretende ser definitiva. Para la información más actual, asegúrese de consultar la documentación específica de su sistema operativo.

Sistema operativo Tamaño máximo de ficheroLinux 2.2-Intel 32-bit 2GB (LFS: 4GB)Linux 2.4 (usando sistema de ficheros ext3) 4TBSolaris 9/10 16TBSistema de ficheros NetWare w/NSS 8TBwin32 w/ FAT/FAT32 2GB/4GBwin32 w/ NTFS 2TB (posiblemente mayor)MacOS X w/ HFS+ 2TB

En Linux 2.2, puede utilizar tablas MyISAM mayores de 2GB usando el parche para LFS (Large File Support) en el sistema de ficheros ext2. En Linux 2.4 y posteriores, existen parches para ReiserFS soportando grandes archivos (hasta 2TB). La mayoría dedistribuciones Linux se basan en el kernel 2.4 o 2.6 e incluyen todos los parches LFS necesarios. Con JFS y XFS, se permiten ficheros mayores de un petabyte para Linux. Sin embargo, el tamaño máximo de ficheros todavía depende de diversos factores, uno de ellos siendo el sistema de ficheros usado para almacenar tablas MySQL.

Page 84: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Para un resumen más detallado acerca de LFS en Linux, recomendamos la página de Andreas Jaeger Large File Support in Linux en http://www.suse.de/~aj/linux_lfs.html.

Usuarios de Windows, por favor tengan en cuenta que: FAT and VFAT (FAT32) no se consideran apropiados para sistemas de producción con MySQL. Use NTFS para ello.

Por defecto, MySQL crea tablas MyISAM con una estructura interna que permite un tamaño máximo de unas 4GB. Puede chequear el tamaño máximo de tabla para una tabla con el comando SHOW TABLE STATUS o con myisamchk -dv tbl_name.

Si necesita una tabla MyISAM con un tamaño mayor a 4GB (y su sistema operativo soporta ficheros grandes), el comando CREATE TABLE permite las opciones AVG_ROW_LENGTH y MAX_ROWS. También puede cambiar esas opciones con ALTER TABLE una vez que la tabla se ha creado, para aumentar el tamaño máximo de latabla.

Otros métodos para cambiar los límites de tamaño de ficheros para tablas MyISAM son:

• Si una tabla es de sólo lectura, puede usar myisampack para comprimirla. myisampack normalmente comprime una tabla al menos un 50%, lo que permite, a efectos prácticos, tablas mucho mayores. myisampack puede mezclar múltiples tablas en una misma tabla. • MySQL incluye la biblioteca MERGE que permite tratar una colección de tablas MyISAM con una estructura idéntica en una tabla MERGE.

Page 85: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Instalar MySQL

En este capítulo se describe cómo obtener e instalar MySQL:1. Debe determinarse si la plataforma donde se desea hacer la instalación está soportada. Nótese que no todos los sistemas soportados son igualmente adecuados para ejecutar MySQL. En algunas plataformas el funcionamiento será mucho más robusto y eficiente que en otras. 2. Debe elegirse la distribución que se instalará. Hay varias versiones de MySQL disponibles, y la mayoría lo están en varios formatos de distribución. Se puede elegir entre distribuciones prearmadas que contienen programas binarios (precompilados) obien código fuente. En caso de duda, debe elegirse una distribución binaria. También se provee acceso público al código fuente para quienes deseen ver los desarrollos más recientes y colaborar en el testeo de código nuevo. Para establecer qué versión ytipo de distribución debería usarse,

3. Descargar la distribución que se desea instalar. Para ver una lista de sitios desde los cuales se puede obtener MySQL,

Page 86: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

4. Instalar la distribución. Para instalar MySQL desde una distribución binaria. Para instalar MySQL a partir de una distribución de código fuente o desde el directorio de desarrollo actual.

5. Realizar cualquier ajuste que sea necesario con posterioridad a la instalación.

6. Si se desea ejecutar los scripts para medir el rendimiento de MySQL, debe estar disponible el soporte de Perl para MySQL.

Cuestiones generales sobre la instalación

Antes de instalar MySQL, se debería hacer lo siguiente:1. Determinarse si la plataforma donde se desea hacer la instalación está soportada.2. Elegirse la distribución que se instalará.3. Descargar la distribución que se desea instalar y verificar su integridad.

Sistemas operativos que MySQL soporta

En esta sección aparecen listados los sistemas operativos en los que es posible instalar MySQL.Se ha utilizado GNU Autoconfig, de modo que es posible portar MySQL a todos los sistemas modernos que tengan un compilador de C++ y una implementación funcional de subprocesos (threads) POSIX. (El soporte de subprocesos es necesario para el servidor. Para compilar únicamente el código del cliente, no se requiere más que el compilador de C++). Nosotros mismos desarrollamos yutilizamos el software ante todo en Linux (SuSE y Red Hat), FreeBSD, y Sun Solaris (Versiones 8 y 9), MySQL ha sido compilado correctamente en las siguientes combinaciones de sistemas operativos y paquetes de subprocesos. Nóteseque, para varios sistemas operativos, el soporte nativo de subprocesos funciona solamente en las versiones más recientes.

Page 87: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• AIX 4.x, 5.x con subprocesos nativos• BSDI 2.x with con el paquete MIT-pthreads. • BSDI 3.0, 3.1 y 4.x con subprocesos nativos. • Digital Unix 4.x con subprocesos nativos.• FreeBSD 2.x con el paquete MIT-pthreads. • FreeBSD 3.x and 4.x con subprocesos nativos. • FreeBSD 4.x con LinuxThreads.• HP-UX 10.20 con el paquete DCE threads o MIT-pthreads. • HP-UX 11.x con subprocesos nativos. • Linux 2.0+ con LinuxThreads 0.7.1+ o glibc 2.0.7+ para varias arquitecturas de CPU. • Mac OS X. • NetBSD 1.3/1.4 Intel y NetBSD 1.3 Alpha (requiere GNU make). • Novell NetWare 6.0. • OpenBSD > 2.5 con subprocesos nativos. OpenBSD < 2.5 con el paquete MIT-pthreads. • OS/2 Warp 3, FixPack 29 y OS/2 Warp 4, FixPack 4. • SCO OpenServer 5.0.X con una versión del paquete FSU Pthreads recientemente portada. • SCO UnixWare 7.1.x. • SCO Openserver 6.0.x. • SGI Irix 6.x con subprocesos nativos. • Solaris 2.5 y posteriores con subprocesos nativos en SPARC y x86. • SunOS 4.x con el paquete MIT-pthreads package. • Tru64 Unix. • Windows 9x, Me, NT, 2000, XP, y 2003.

Page 88: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

4.2 Crear y seleccionar una base de datos

Si el administrador crea su base de datos en el mismo momento que le otorga privilegios, puede comenzar a utilizarla, de lo contrario necesitará crearla:

mysql> CREATE DATABASE menagerie;

En ambientes Unix, los nombres de las bases de datos son case sensitive (al contrario que las palabras clave), de modo que siempredebe referirse a su base de datos como menagerie, y no Menagerie, MENAGERIE, o una variante similar. Esto también se aplica a los nombres de tablas. Esta restricción no existe en Windows, aunque puede utilizar el mismo esquema de mayúsculas cuando se refiera a bases de datos y tablas en una consulta dada.Al crear una base de datos, ésta no se selecciona para su uso, debe hacerlo explícitamente. Para convertir a menagerie en la base de datos actual, use este comando:

mysql> USE menagerieDatabase changed

Las bases de datos sólo necesitan ser creadas una sola vez, pero deben ser seleccionadas cada vez que se inicia una sesión de mysql. Puede hacerse a través del comando USE como se muestra en el ejemplo, o puede indicar la base de

Page 89: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

datos en la línea de comandos al ejecutar mysql. Simplemente debe indicar el nombre de la base de datos a continuación de los parámetros que necesite ingresar. Por ejemplo:

shell> mysql -h host -u user -p menagerieEnter password: ********

Advierta en el comando anterior que menagerie no es la contraseña. Si se quisiera suministrar la contraseña en la línea de comandos, después de la opción -p, debe hacerse sin dejar espacios en blanco (por ejemplo, pmypassword, no -p mypassword).De todos modos, colocar la contraseña en la línea de comandos no es recomendable porque lo expone a la vista de otros usuarios.

Crear una tabla

La creación de la base de datos ha sido una tarea sencilla, pero hasta ahora permanece vacía, como le muestra SHOW TABLES:

mysql> SHOW TABLES;Empty set (0.00 sec)

La parte difícil es decidir cómo debería ser la estructura de su base de datos: qué tablas necesitará, y qué columnas habrá en cada tabla.Querrá una tabla para contener un registro por cada mascota. Esta tabla puede llamarse pet, y debería contener, como mínimo, el nombre de cada animal. Dado que el nombre no es muy relevante por sí mismo, tendría que tener más información. Por ejemplo, si más de una persona en su familia tendrá mascotas, querrá listar también el dueño de cada animal. Y algunos otros datos descriptivos básicos, como especie y sexo.

Page 90: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

¿Qué hacer con la edad? Podría ser de interés, pero no es un buen dato para almacenar en una base de datos. La edad cambia a medida que pasa el tiempo, lo cual significa que debería actualizar la base de datos a menudo. En lugar de esto, es mejor almacenar un valor fijo, como la fecha de nacimiento. De este modo, cada vez que requiera saber la edad, podrá calcularla como la diferencia entre la fecha de nacimiento y la fecha actual. MySQL provee funciones para realizar cálculos con fechas, por lo que no es dificultoso.Almacenar la fecha de nacimiento en lugar de la edad tiene otras ventajas:

• Puede usar la base de datos para tareas como generar recordatorios para los próximos cumpleaños de mascotas. (Si piensa que este tipo de consultas no es importante, considere que es lo mismo que haría en un contexto de base de datos de negocios para identificar aquellos clientes a los que habrá que enviar una tarjeta por su cumpleaños, para conseguir ese toque personal con la asistencia del ordenador).• Puede calcular edades en relación a otras fechas además de la actual. Por ejemplo, almacenar la fecha de muerte de una mascota le posibilita calcular la edad que tenía a ese momento.Probablemente pensará en otros tipos de información que resultarían útiles dentro de la tabla pet pero los identificados hasta ahora son suficientes: name (nombre), owner (propietario), species (especie), sex (sexo), birth (nacimiento) y death (muerte).

Debe usar la sentencia CREATE TABLE para especificar la estructura de una tabla:mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

El tipo de dato VARCHAR es una buena elección para las columnas name, owner, y species porque los datos que allí se almacenan no son de longitud uniforme. En realidad no es necesario que todas estas columnas tengan la misma longitud ni que ésta sea 20. En MySQL 5.0.3 y versiones posteriores, normalmente se puede adoptar cualquier longitud entre 1 y 65535, según lo que se crea más razonable. (Nota: Anteriormente a MySQL 5.0.3, el límite de longitud era 255.) Si en el futuro debiera aumentar la longitud de estos campos, MySQL tiene la sentencia ALTER TABLE.

Hay varios tipos de datos que podrían usarse para representar el sexo en los registros de animales, tal como 'm' y 'f', o 'male' (masculino) y 'female' (femenino). Lo más simple es usar los caracteres 'm' y 'f'.Es obvio el uso del tipo de dato DATE para las columnas birth y death.Luego de crear una tabla, SHOW TABLES debería producir una salida:

Page 91: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

mysql> SHOW TABLES;+---------------------+| Tables in menagerie |+---------------------+| pet |+---------------------+

Para verificar que la tabla ha sido creada en la forma esperada, utilice la sentencia DESCRIBE:

mysql> DESCRIBE pet;+---------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+---------+-------------+------+-----+---------+-------+| name | varchar(20) | YES | | NULL | || owner | varchar(20) | YES | | NULL | || species | varchar(20) | YES | | NULL | || sex | char(1) | YES | | NULL | || birth | date | YES | | NULL | || death | date | YES | | NULL | |+---------+-------------+------+-----+---------+-------+

DESCRIBE puede ser utilizada en cualquier momento, por ejemplo, si olvida los nombres o el tipo de dato de las columnas de la tabla.

Page 92: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Cargar datos en una tabla

Luego de crear la tabla, necesitará completarla con datos. Para esto, le serán de utilidad las sentencias LOAD DATA e INSERT.

Suponga que los registros de mascotas fueran como los mostrados a continuación. (Observe que MySQL espera que las fechas tengan el formato 'AAAA-MM-DD', esto puede ser diferente a lo que acostumbra utilizar).

name owner species sex birth deathFluffy Harold cat f 1993-02-04Claws Gwen cat m 1994-03-17Buffy Harold dog f 1989-05-13Fang Benny dog m 1990-08-27Bowser Diane dog m 1979-08-31 1995-07-29Chirpy Gwen bird f 1998-09-11Whistler Gwen bird 1997-12-09Slim Benny snake m 1996-04-29

Page 93: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Dado que está comenzando con una tabla vacía, una forma fácil de completarla es creando un fichero de texto que contenga una línea por cada animal, y luego insertando el contenido del fichero en la tabla mediante una sola sentencia.

Para esto, debería crear un fichero de texto llamado pet.txt, conteniendo un registro por línea, con cada valor separado por un carácter de tabulación, y dispuestos en el orden en el cual se especificaron las columnas en la sentencia CREATE TABLE. Para valores ausentes (como sexo desconocido o fechas de muerte de animales con vida), puede usar valores NULL. Para representar estos valores en el archivo de texto, utilice \N (barra diagonal y N mayúscula). Por ejemplo, el registro de Whistler se vería del modo siguiente (el espacio en blanco entre cada valor es un solo carácter de tabulación):

name owner species sex birth deathWhistler Gwen bird \N 1997-12-09 \N

Para cargar el fichero pet.txt dentro de la tabla pet, utilice este comando:

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;

Si trabaja en Windows, con un editor que emplea \r\n (retorno de carro + nueva línea) como caracteres de fin de línea, debería usar:

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet-> LINES TERMINATED BY '\r\n';

(En un ordenador Apple bajo OS X, probablemente quiera utilizar LINES TERMINATED BY '\r'.)Opcionalmente puede especificar en la sentencia LOAD DATA los caracteres que actuarán como separador de campo y fin de línea, pero los valores por defecto son tabulación y nueva línea. Estos son suficientes para que la sentencia lea correctamente el fichero pet.txt Si ocurre un error al ejecutar la sentencia, probablemente se deba a que su instalación de MySQL no tiene habilitada por defecto la capacidad de manejar archivos locales.

Page 94: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Cuando lo que desea es agregar nuevos registros de a uno por vez, la sentencia INSERT resulta de utilidad. De esta sencilla manera, se suministran valores para cada columna, dispuestos en el orden en el cual se especificaron las columnas en la sentencia CREATE TABLE statement. Suponga que Diane obtiene un nuevo hamster llamado "Puffball". Se podría agregar un nuevo registro, usando la sentencia INSERT de este modo:

mysql> INSERT INTO pet -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

Observe que las cadenas alfanuméricas y las fechas son representadas como cadenas delimitadas por apóstrofos. También, con INSERT, se pueden insertar valores NULL directamente, para indicar un valor ausente. No se debe utilizar \N como se hace con LOAD DATA.

A partir de este ejemplo queda demostrado que lleva mucho más trabajo realizar una carga inicial de registros empleando varias sentencias INSERT que si se hace mediante la sentencia LOAD DATA.

Extraer información de una tablaLa sentencia SELECT es utilizada para traer información desde una tabla. La sintaxis general de esta sentencia es:

SELECT seleccionar_EstoFROM desde_tablaWHERE condiciones;

seleccionar_esto es lo que se quiere ver. Puede ser una lista de columnas, o * para indicar “todas las columnas.” desde_tablaindica la tabla donde están los datos a recuperar. La cláusula WHERE clause is optional. es opcional. Si está presente, condiciones representa las condiciones que cada registro debe cumplir para retornar como resultado.

Seleccionar todos los datosLa forma más simple de SELECT recupera todo lo que hay en la tabla:

mysql> SELECT * FROM pet;+----------+--------+---------+------+------------+------------+| name | owner | species | sex | birth | death |+----------+--------+---------+------+------------+------------+

Page 95: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

| Fluffy | Harold | cat | f | 1993-02-04 | NULL || Claws | Gwen | cat | m | 1994-03-17 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL || Fang | Benny | dog | m | 1990-08-27 | NULL || Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 || Chirpy | Gwen | bird | f | 1998-09-11 | NULL || Whistler | Gwen | bird | NULL | 1997-12-09 | NULL || Slim | Benny | snake | m | 1996-04-29 | NULL || Puffball | Diane | hamster | f | 1999-03-30 | NULL |+----------+--------+---------+------+------------+------------+

Esta forma de SELECT es útil si se quiere revisar la tabla completa, por ejemplo, después de haberla cargado con un conjunto de datos inicial. Por ejemplo, puede ocurrir que la fecha de nacimiento de Bowser no parezca correcta. Consultando los papeles de pedigri, se descubre que el año correcto de nacimiento es 1989, no 1979. Existen al menos dos formas de solucionarlo:

• Editando el fichero pet.txt para corregir el error, vaciando la tabla y volviéndola a llenar con los datos. Para esto se usan las sentencias DELETE y LOAD DATA:

mysql> DELETE FROM pet;mysql> LOAD DATA LOCAL INFILE 'pet.txt' INTO TABLE pet;

No obstante, si opta por esto, deberá volver a cargar el registro de Puffball.• Corrigiendo únicamente el registro erróneo. Para esto se usa la sentencia UPDATE:

mysql> UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';

UPDATE modifica solo el registro en cuestión y no requiere que se vuelva a llenar la tabla.

4.3 Entrar consultasCerciórese de haberse conectado al servidor, tal como se describe en la sección anterior. Esto en sí mismo no selecciona ninguna base de datos para trabajar. En este punto es más importante aprender un poco más acerca de cómo realizar consultas que ir directamente a crear tablas, cargar datos, y recuperarlos. Esta sección describe los principios básicos del ingreso de comandos, empleando varias consultas que puede realizar para familiarizarse con la forma en que funciona mysql.

Page 96: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Aquí tiene un comando simple que ordena al servidor que muestre su número de versión y la fecha actual. Ingréselo a continuación del prompt mysql> y presione Enter:

mysql> SELECT VERSION(), CURRENT_DATE;

+----------------+--------------+| VERSION() | CURRENT_DATE |+----------------+--------------+| 5.0.7-beta-Max | 2005-07-11 |+----------------+--------------+1 row in set (0.01 sec) mysql>

Esta consulta le muestra varias cosas acerca de mysql:

• Un comando normalmente consiste en una sentencia SQL seguida de punto y coma. (Hay excepciones donde el punto y coma puede omitirse. QUIT, mencionado anteriormente, es una de ellas. Luego conocerá otras.)

• Cuando ingresa un comando, mysql lo envía al servidor para ser ejecutado e imprime los resultados. A continuación muestra de nuevo el prompt mysql> para informarle que está listo para otro comando.

• mysql imprime los resultados de la consulta en forma tabulada (filas y columnas). La primera fila contiene etiquetas para las columnas. Las filas siguientes son los resultados de la consulta. Generalmente, el nombre de cada columna es el nombre del campo que trae desde la base de datos. Si está trayendo el valor de una expresión, en lugar del contenido de un campo o columna de una tabla (como en el ejemplo anterior), mysql etiqueta la columna usando el texto de la expresión.

• mysql informa cuántas filas fueron devueltas y cuánto tiempo le tomó ejecutarse a la consulta, lo cual da una idea aproximada del rendimiento del servidor. Estos valores son imprecisos porque representan tiempo de reloj corriente (no

Page 97: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

tiempo de CPU), y además porque están afectados por factores como la carga del servidor o la latencia de red. (Para simplificar los ejemplos de este capitulo, a partir de ahora no se mostrará la línea “rows in set”.)

Las palabras clave pueden ingresarse en cualquier combinación de minúsculas y mayúsculas. Las siguientes consultas son equivalentes:

mysql> SELECT VERSION(), CURRENT_DATE;mysql> select version(), current_date;mysql> SeLeCt vErSiOn(), current_DATE;

Aqui tiene otra consulta que demuestra que mysql puede usarse como calculadora:

mysql> SELECT SIN(PI()/4), (4+1)*5;+------------------+---------+| SIN(PI()/4) | (4+1)*5 |+------------------+---------+| 0.70710678118655 | 25 |+------------------+---------+1 row in set (0.02 sec)

Las consultas mostradas hasta ahora han sido relativamente cortas, sentencias de una sola línea. Se puede inclusive ingresar múltiples sentencias en una misma línea. Solamente deben separarse con punto y coma:

mysql> SELECT VERSION(); SELECT NOW();

+----------------+| VERSION() |+----------------+| 5.0.7-beta-Max |+----------------+1 row in set (0.00 sec)+---------------------+| NOW() |+---------------------+

Page 98: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

| 2005-07-11 17:59:36 |+---------------------+1 row in set (0.00 sec)No es necesario que un comando sea ingresado en una sola línea, de ese modo, comandos extensos que requieren varias líneas no son un problema. mysql determina cuando una sentencia ha llegado a l final observando si termina en un punto y coma, no si se llegó al final de la línea física. (En otras palabras, mysql acepta un formato libre para las entradas: recolecta líneas pero no las ejecuta hasta que encuentra el punto y coma.)

Aqui tiene una sentencia de múltiples líneas:

mysql> SELECT-> USER()-> ,-> CURRENT_DATE;+---------------+--------------+| USER() | CURRENT_DATE |+---------------+--------------+| jon@localhost | 2005-07-11 |+---------------+--------------+1 row in set (0.00 sec)

Observe en este ejemplo que el prompt cambia de mysql> a -> después que se ha ingresado la primera línea de una consulta de múltiples líneas. Esta es la forma en que mysql advierte que no se ha completado la sentencia y aún espera por el resto. El prompt es un aliado, puesto que suministra información valiosa. Si se emplea, siempre se sabrá lo que mysql está esperando.

Si durante el ingreso de un comando decide que no quiere ejecutarlo, cancélelo tipeando \c:

mysql> SELECT-> USER()-> \c

Page 99: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

mysql>

Una vez más observe el prompt. Cambia a mysql> después de que ingresa \c, informándole que mysql está listo para un nuevo comando.

La siguiente tabla muestra cada uno de los indicadores que podrá ver y sintetiza lo que dicen acerca del estado en que se encuentra mysql:

Prompt Significado

mysql> Listo para un nuevo comando.

-> Esperando la siguiente línea en un comando de múltiples líneas.'> Esperando la siguiente línea, se encuentra abierta una cadena que comienza con apostrofo (''')."> Esperando la siguiente línea, se encuentra abierta una cadena que comienza con comillas dobles ('"').`> Esperando la siguiente línea, se encuentra abierta una cadena que comienza con tilde ('`')./*> Esperando la siguiente línea, se encuentra abierto un comentario que comienza con /*.

El prompt /*> fue introducido en la serie 5.0 a partir de MySQL 5.0.6.

Es frecuente que se origine una sentencia de múltiples líneas cuando accidentalmente le da entrada a un comando de una sola línea pero olvida terminarlo con punto y coma. En ese caso, mysql aguarda por más caracteres:

mysql> SELECT USER()->

Page 100: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Si esto le ocurre (considera que ha ingresado una sentencia completa pero solamente obtiene un prompt ->), la mayoría de las veces es porque mysql está esperando por el punto y coma. Si no advierte lo que el indicador trata de decirle, podría demorar un buen tiempo en hacer lo que necesita. Ingrese un punto y coma para completar la sentencia, y mysql la ejecutará:

mysql> SELECT USER()-> ;+--------------------+| USER() |+--------------------+| joesmith@localhost |+--------------------+

Los prompts '> y "> aparecen durante el ingreso de cadenas. Puede escribir cadenas delimitadas por ''' o '"' (por ejemplo, 'hola' o "adiós"), y mysql le permite ingresar cadenas divididas en múltiples líneas. Cuando ve un prompt '> o "> significa que ha comenzado a ingresar una cadena comenzando con ''' o '"' pero no ha ingresado el correspondiente carácter de terminación. A menudo esto significa que inadvertidamente omitió este carácter. Por ejemplo:

mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;'>

Si ingresa esta sentencia SELECT, presiona ENTER y espera por el resultado, nada ocurrirá. En lugar de asombrarse por el tiempo que consume la consulta, note lo que el prompt '> le está diciendo. Indica que mysql espera por el final de una cadena inconclusa. (¿Ve el error en la sentencia? La cadena 'Smith no tiene el apóstrofo de cierre.)

¿Qué hacer llegado a este punto? Lo más simple es cancelar el comando. No obstante, no puede simplemente tipear \c en este caso, ¡porque mysql interpretará que es parte de la cadena que está ingresando!. En lugar de eso, tipee el carácter de cierre que falta y entonces ingrese \c.>:

Page 101: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;'> '\cmysql>

El prompt cambia de nuevo a mysql>, informando que mysql está listo para un nuevo comando.El prompt `> es similar a '> y "> , pero informa que está pendiente de completar un identificador delimitado por tildes.

Es importante conocer el significado de estos indicadores, ya que si por error se ingresa una cadena incompleta, todo lo que se ingrese posteriormente será aparentemente ignorado por mysql — incluyendo el comando QUIT. Esto puede ser sumamente desconcertante, en particular si no se conoce lo que debe hacer para terminar la línea y cancelar el comando.

Seleccionar registros específicosComo se ha visto en la sección anterior, es fácil recuperar una tabla en su totalidad. Sólo debe omitir la cláusula WHERE en la sentencia SELECT. Pero, generalmente, no se desea ver la tabla completa, especialmente cuando alcanza un gran tamaño. En cambio, usualmente, se tiene interés en obtener una respuesta para una consulta en particular, en cuyo caso se especifican algunas restricciones para la información que se traerá. A continuación se verán algunas consultas que responden preguntas acerca de las mascotas.

Se pueden seleccionar sólo algunos registros de la tabla. Por ejemplo, si quisiera verificar los cambios realizados sobre la fecha de nacimiento de Bowser, seleccione el registro de Bowser de esta manera:

mysql> SELECT * FROM pet WHERE name = 'Bowser';+--------+-------+---------+------+------------+------------+| name | owner | species | sex | birth | death |+--------+-------+---------+------+------------+------------+| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |+--------+-------+---------+------+------------+------------+

La salida confirma que el año fue correctamente registrado como 1989, ya no es 1979.

Page 102: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Normalmente, las comparaciones de cadenas no son case sensitive, por eso puede escribir el nombre como 'bowser', 'BOWSER', etc. El resultado de la consulta será el mismo.

Se pueden indicar condiciones a cumplir por cualquier columna, no solamente por name. Por ejemplo, si quisiera saber qué animales han nacido luego de 1998, necesita evaluar la columna birth:

mysql> SELECT * FROM pet WHERE birth > '1998-1-1';+----------+-------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+----------+-------+---------+------+------------+-------+| Chirpy | Gwen | bird | f | 1998-09-11 | NULL || Puffball | Diane | hamster | f | 1999-03-30 | NULL |+----------+-------+---------+------+------------+-------+

Se pueden combinar condiciones, por ejemplo para localizar perros hembra:

mysql> SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';+-------+--------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+-------+--------+---------+------+------------+-------+| Buffy | Harold | dog | f | 1989-05-13 | NULL |+-------+--------+---------+------+------------+-------+

La consulta anterior emplea el operador lógico AND. También existe el operador OR:

mysql> SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';+----------+-------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+----------+-------+---------+------+------------+-------+| Chirpy | Gwen | bird | f | 1998-09-11 | NULL || Whistler | Gwen | bird | NULL | 1997-12-09 | NULL || Slim | Benny | snake | m | 1996-04-29 | NULL |+----------+-------+---------+------+------------+-------+

Page 103: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

AND and OR pueden ser combinadas, si bien AND tiene mayor precedencia que OR. Si utiliza ambos operadores, es buena idea emplear paréntesis para indicar explícitamente la forma en que las condiciones deben agruparse:

mysql> SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm')-> OR (species = 'dog' AND sex = 'f');

+-------+--------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+-------+--------+---------+------+------------+-------+| Claws | Gwen | cat | m | 1994-03-17 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+-------+--------+---------+------+------------+-------+

Page 104: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

4.4 Formularios Electrónicos

Estamos ya bastante familiarizados con diversos tipos de formularios en papel: albaranes de pedido, propuestas de gas-tos, formularios para envío de fax, etc. aunque puede haber grandes diferencias de unos a otros, lo cierto es que todos ellos tienen unos cuantos aspectos en común:

Todos los formularios contienen un texto estándar y espacios en blanco o campos en donde se ha de introducir la información.

El texto y los campos están organizados en forma de cuadrícula, con espacios en blanco para la entrada de datos. Los formularios en papel son conocidos habitualmente por su dificultad para rellenarlos, y en el caso de formularios

rellenos a mano, su dificultad para descifrarlos posteriormente.

Los formularios electrónicos vienen a minimizar muchas de las desventajas de los que se presentan en papel. Es posible diseñar un formulario electrónico de manera que contenga información de ayuda para la persona que tenga que rellenar-lo. Estos formularios electrónicos pueden contener campos de texto de una longitud prefijada, o bien de longitud variable. Los campos de lista desplegable ofrecen una serie de opciones de entre las cuales el usuario debe elegir una. Para las respuestas del tipo "si" o "no", puede crearse campos con casillas de verificación de forma que el usuario se puede limitar a hacer clic con el ratón para que aparezca una "X" en la casilla adecuada.

También es posible especificar una serie de respuestas "por omisión" en campos específicos, con vistas a facilitar aún más la labor de complementación del formulario.

Puesto que el formulario se rellena desde la propia computadora, se evitan todos los posibles problemas de interpretación de los datos introducidos, como sucede con los formularios en papel rellenos a mano. Además, si la computadora está conectada a una red, los formularios electrónicos pueden ser cumplimentados y compartidos de la misma forma que se comparte cualquier otro tipo de documento, eliminando así por completo la necesidad de los formularios en papel.Windows viene con muchos programas accesorios útiles, incluyendo un procesador de texto elemental (WordPad), un programa de gráficos (Paint) y un programa de comunicación (HyperTerminal). También proporciona varias herramientas

Page 105: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

útiles, como Calculadora (Calculator) y Block de notas (Notepad). Para otras funciones (de acuerdo a las necesidades), se utiliza el Microsoft Office, en el cual es posible diseñar formularios electrónicos que garantizan una rápida y correcta recogida de información; en cualquiera de sus aplicaciones: Word, Excel, Power Point y, la más adecuada y/o diseñada para este fin específico, Access

4.5 Creación de un informe rápido

Los informes de base de datos están definidos por bandas de informe. Estas bandas de informes se definen cinco tipos diferentes de líneas de informe por ejemplo la cabecera que aparecen en la parte superior de cada página, líneas de de-talle y resúmenes de informe. Cuando se utiliza la organización de informe rápido no es necesario aprender sobre los di -ferentes tipos de bandas; todo lo que se necesita es decir a Dbase que cree el formato del informe. Dbase coloca las entradas en las bandas del informe cuando crea un informe rápido. Crea una banda cabecera de página que contiene la fecha, número de páginas y nombre de campo. Una banda de detalle contiene las entradas de la base de datos. La banda de resumen de informe contiene los totales de todos los campos numéricos y flotantes.Se puede comprobar al aspecto de un formato de informe visualizándolo en pantalla. Dbase visualizará las entradas de los registros en lugar de los patrones. Se puede ir hacia delante para ver las páginas posteriores del informe, pero no se puede revisualizar pantallas de informaciones previas.

Para crear un informe rápido:

o Desplazar el subrayado en el panel de datos al archivo del que se requiere un informe rápido. o Pulsar la tecla de informe rápido (DESPL –F9) o Teclear V para visualizar el informe en pantalla o Pulsar la BARRA DE ESPACIO para ver cada pantalla del informe y volver al Centro de Control.

Se puede crear un informe rápido desde cualquier panel de Centro de Control (excepto desde el panel de aplicaciones, si hay un archivo de datos activo. Se pulsa la tecla de Informe Rápido (DESPL –F9) para activarlo. También se puede crear-se el modo a través del panel de datos del centro de control. El informe que se crea, utiliza la base de datos actual a me -nos que se seleccione otra base de datos en el panel datos del centro de control y se pulsa la tecla de informe rápido (DESPL. – F9)

Page 106: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Para imprimir un informePara imprimir un informe con la impresora implícita:

o Convertir en actual la base de datos de la que se requiere crear un informe. o Pulsar la tecla de informe rápido(DESPL.-F9) o Teclear B para la opción comenzar a imprimir.

Para imprimir un informe con otra opción de impresora:

o Convertir en actual la base de datos de la que se quiere crear un informe.o Pulsar la tecla de informe rápido (DESPL.-F9)o Teclear D para la opción destinatario o Teclear P para la opción Printer Model hasta que la dbase visualice una breve descripción de

la impresora. o Teclear B para la opción Bejín Printing.

Creación y almacenamiento de un informe personalizado:

Los informes personalizados ofrecen lo último en posibilidades de personalización. Sin embargo, toda esta flexibilidad re-quiere un compromiso puesto que lleva más tiempo crear un informe personalizado que crear un informe rápido. Se pue-de combinar las ventajas de ambos planteamientos cuando sólo se necesitan realizar pequeños cambios a un informe rá-pido utilizando las opciones del menú de disposición rápida. Estas opciones permiten seleccionar un formato para crear rápidamente un diseño de informe que se pueda modificar posteriormente.Se pueden añadir y eliminar campos desde el diseño de informe. Se puede salvar la disposición del informe modificado y proseguir su ampliación con el tiempo. La inversión que se realiza personalizando un informe dará beneficios a lo largo de la vida de la aplicación de la base.

Para crear una disposición rápida para un informe personalizado:

Page 107: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

o Active la base de datos que vaya a utilizar para el informe. o Pulse flecha derecha tres veces para moverse al panel de informe (report panel) o Pulse intro o la tecla de diseño (DESPL.- F2) para introducirse a la pantalla de diseño de informes. o Subraye Quick Layouts (Disposición rápida) pulse intro o teclee Q para seleccionar la disposición rápida del

menú de despliegue layout (composición) o Mueva el subrayado a la opción de composición que se quiera y pulse INTRO o teclee la primera letra de la

opción de composición.

4.6 Cuestiones de seguridad generalEsta sección describe algunos temas generales de seguridad que hay que tener en cuenta, y qué se puede hacer para aumentar la seguridad de la instalación MySQL contra ataques o errores de uso. Para encontrar información específica sobre el sistema de control de accesos que MySQL utiliza para crear cuentas de usuarios y comprobar el acceso a las bases de datos.

Guía de seguridad generalCualquiera que utilice MySQL en un ordenador conectado a Internet debería leer esta sección para evitar los errores de seguridad más comunes.Al tratar el tema de la seguridad, hacemos hincapié en la necesidad de proteger totalmente la máquina completa (no únicamente el servidor MySQL) contra todos los tipos de ataques posibles; intercepción pasiva de paquetes, alteración, reproducción de comandos (playback), y denegación de servicio. Aquí no tratamos todos los aspectos de disponibilidad y tolerancia a fallos.Para todas las conexiones, consultas, y otras operaciones que los usuarios pueden intentar realizar, MySQL utiliza seguridad basada en Listas de Control de Acceso (ACLs). También hay algún soporte para conexiones cifradas mediante SSL entre clientes y servidores MySQL. Muchos de los conceptos que aquí se exponen no son específicos de MySQL; las mismas ideas generales se pueden aplicar a cualquier aplicación.Al ejecutar MySQL, siga siempre que sean posibles estas recomendaciones:

Page 108: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• ¡No de nunca a nadie (excepto a la cuenta root de MySQL acceso a la tabla user en la base de datos mysql! Esto es crítico. La clave cifrada es la verdadera clave en MySQL. Cualquiera que sepa cual es la clave que hay en la tabla user y tenga acceso a la máquina host de la cuenta registrada puede acceder fácilmente como ese usuario.

• Estudie el sistema de privilegios de acceso de MySQL. Las sentencias GRANT y REVOKE se utilizan para controlar el acceso a MySQL. No otorgue más privilegios de los necesarios. Nunca otorgue privilegios a un mismo usuario sin tener en cuenta el equipo desde el que se conecta.Lista de comprobaciones:

• Pruebe el comando mysql -u root. Si es capaz de conectar al servidor sin la necesidad de introducir una clave, tiene problemas. ¡Cualquiera puede conectar a su servidor MySQL como el usuario root de MySQL con privilegios totales! Revise las instrucciones de instalación de MySQL, prestando atención en concreto a la información sobre establecer una clave para el usuario root.

• Utilice la sentencia SHOW GRANTS y compruebe quién tiene acceso a qué. Después utilice la sentencia REVOKE para denegar los privilegios que no son necesarios.

• No almacene ninguna clave sin cifrar en su base de datos. Si alguien tuviera acceso a su ordenador, el intruso podría obtener la lista completa de claves y utilizarlas. En vez de eso, utilice MD5(), SHA1(), o cualquier otra función de hashing de un sentido.

• No elija claves que puedan aparecer en un diccionario. Existen programas especiales para romperlas. Incluso claves como ``xperro98'' son muy malas. Es mucho mejor ``oweei98'', que contiene la misma palabra ``perro'' pero escrita desplazándose una tecla a la izquierda en un teclado QWERTY convencional. Otro método es usar ``Mtupc'', que ha sido tomada de las primeras letras de cada palabra de la frase ``María tuvo un pequeño corderito.'' Así es fácil de recordar y escribir, pero difícil de adivinar para cualquiera que no la conozca.

• Invierta en un firewall. Le protegerá de al menos el 50% de todos los tipos de vulnerabilidades de cualquier software. Ponga MySQL tras el firewall o en una zona desmilitarizada (DMZ).Lista de comprobaciones:

Page 109: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• Intente escanear sus puertos desde Internet utilizando una herramienta como nmap. MySQL utiliza el puerto 3306 por defecto. Este puerto no debería ser accesible desde lugares no confiables. Otra manera simple de probar si el puente MySQL está abierto o no es intentar el siguiente comando desde alguna máquina remota, donde server_host es la máquina en la que su servidor MySQL se está ejecutando:

shell> telnet server_host 3306

Si consigue conectar y algunos caracteres extraños, el puerto está abierto, y debería cerrarlo en su firewall o router, a menos que tenga una buena razón para mantenerlo abierto. Si el comando telnet no consigue conectar o la conexión es rechazada, entonces el puerto se encuentra bloqueado, que es como queremos que esté.• No confíe en ningún dato enviado por los usuarios de sus aplicaciones. Pueden intentar engañar a su código introduciendo secuencias de caracteres especiales en formularios webs, URLs, o cualquier aplicación que haya desarrollado. Asegúrese de que su aplicación permanece segura si un usuario introduce algo como ``; DROP DATABASE mysql;''. Este es un ejemplo algo extremo, pero los mayores agujeros de seguridad y pérdidas de datos pueden ocurrir como resultado de hackers utilizando técnicas similares, si no se está preparado para ellas.Un error común es proteger únicamente valores de tipo cadena de caracteres. Recuerde comprobar los datos numéricos también.

Si una aplicación genera una consulta como SELECT * FROM table WHERE ID=234 cuando un usuario introduce el valor 234, el usuario podría introducir el valor 234 OR 1=1 para provocar que la aplicación genere la consulta SELECT * FROM table WHERE ID=234 OR 1=1. Como resultado, el servidor extraerá todos los registros en la tabla. Esto, además de exponer cada registro, causa una carga excesiva en el servidor. La manera más simple de protegerse frente a este tipo de ataque es utilizar comillas simples alrededor de las constantes numéricas:

SELECT * FROM table WHERE ID='234'.

Si el usuario entrase información extra, todo sería parte de la cadena de caracteres. En un contexto numérico, MySQL automáticamente convierte esta cadena en un número, y elimina cualquier carácter no numérico del final que la cadena pueda contener.

Administración de bases de datos

Page 110: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

A veces la gente piensa que si una base de datos contiene sólo datos de dominio público, no tiene por qué ser protegida. Esto es incorrecto. Aunque sea admitible mostrar cualquier registro de la base de datos, siempre se debería proteger contra ataques de tipo denegación de servicio (por ejemplo, aquellos que se basan en la técnica del párrafo precedente, que causan que el servidor malgaste recursos). Si no, el servidor podría quedar inservible para sus usuarios legítimos.

Lista de comprobaciones:

• Intente introducir comillas simples y dobles (''' y '"') en todos sus formularios web. Si obtiene cualquier clase de error MySQL, investigue el problema sin demora.

• Intente modificar las URLs dinámicas añadiendo las cadenas %22 ('"'), %23 ('#'), y %27 (''').

• Intente modificar los tipos de datos en las URLs dinámicas de tipos numéricos a alfanuméricos, usando los caracteres mostrados en los ejemplos previos. Su aplicación debería ser segura contra estos y otros ataques similares.

• Intente introducir letras, espacios, y símbolos especiales en vez de números en los campos numéricos. Su aplicación debería eliminarlos antes de pasarlos a MySQL, o en todo caso generar un error. ¡Pasar valores sin comprobar a MySQL es muy peligroso!

• Compruebe el tamaño de los datos antes de pasárselos a MySQL.

• Haga que su aplicación se conecte a la base de datos utilizando un nombre de usuario diferente del que utiliza para tareas administrativas. No dé a sus aplicaciones ningún acceso que no necesiten.

• Muchas interfaces de programación de aplicaciones proveen alguna manera de preceder con caracteres de escape los caracteres especiales en sus datos. Usados adecuadamente, esto previene que los usuarios de las aplicaciones introduzcan valores que provoquen que la aplicación genere sentencias con efectos diferentes a los que usted pretendía:

• API MySQL de C: Utilice la función mysql_real_escape_string().

Page 111: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• MySQL++: Utilice los modificadores escape y quote para streams

• PHP: Utilice la función mysql_escape_string(), que está basada en la función del mismo nombre de la API MySQL de C. (Con versiones anteriores a PHP 4.0.3, utilice addslashes() en cambio.) En PHP 5, puede utilizar la extensión mysqli, que soporta los protocolos de autentificación y clave de acceso mejorados de MySQL, así como las sentencias preparadas con placeholders.

• DBI de Perl: Utilice el método quote() o utilice placeholders.

• JDBC de Java: Utilice un objeto PreparedStatement y placeholders.

Otras interfaces de programación deberían tener capacidades similares.

• No transmita datos sin cifrar por Internet. Esta información es accesible para cualquiera que tenga el tiempo y la habilidad para interceptarla y utilizarla para sus propios propósitos. En vez de eso, utilice un protocolo de cifrado como SSL o SSH. MySQL soporta conexiones SSL internas desde la versión 4.0.0. El redireccionamiento de puertos de SSH se puede utilizar para crear un tunel cifrado (y comprimido) para la comunicación.

• Aprenda a utilizar las herramientas tcpdump y strings. En la mayoría de los casos, usted puede comprobar si los flujos de datos de MySQL están cifrados ejecutando un comando como el siguiente:

shell> tcpdump -l -i eth0 -w - src or dst port 3306 | strings

(Esto funciona en Linux, y debería funcionar, con pequeñas modificaciones en otros sistemas.) Atención: Si no ve los datos en formato de texto, esto no siempre quiere decir que la información esté realmente cifrada. Si necesita un alto nivel de seguridad, debería consultar a un experto en la materia.

Hacer que MySQL sea seguro contra ataques

Page 112: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

Cuando se conecta a un servidor MySQL, debería utilizar una clave. La clave no se transmite en texto llano a través de la conexión.El tratamiento de las claves durante la conexión de un cliente ha sido mejorado en MySQL 4.1.1 para ser muy seguro. Si todavía está utilizando claves del tipo anterior a 4.1.1, el algoritmo de cifrado no es tan potente como el nuevo algoritmo; con un poco de esfuerzo un atacante inteligente que pueda interceptar el tráfico entre el cliente y el servidor podría romper la clave. Si la conexión entre el cliente y el servidor pasa a través de una red no segura, debería utilizar un tunel SSH para cifrar la comunicación.Toda la demás información se transmite como texto, y puede ser leída por cualquiera que pueda observar la conexión. Si esto le preocupa, utilice el protocolo comprimido para hacer que el tráfico sea mucho más difícil de descifrar. Para hacer la conexión aún más segura, debería utilizar SSH para conseguir una conexión TCP/IP cifrada entre el servidor MySQL y el cliente MySQL. Puede encontrar un cliente SSH Open Source en http://www.openssh.org/, y un cliente comercial en http://www.ssh.com/.En MySQL 5.0, puede utilizar también el soporte interno de OpenSSL. Para convertir un sistema MySQL en seguro, debería considerar seriamente las siguientes sugerencias:

• Utilice claves para todos los usuarios MySQL. Un programa cliente no conoce necesariamente la identidad de la persona utilizándolo.Es común en las aplicaciones cliente/servidor que el usuario pueda especificar cualquier nombre de usuario al programa cliente. Por ejemplo, cualquiera puede utilizar el programa mysql para conectarse como cualquier otra persona, simplemente invocándolo de la siguiente manera: mysql -u otro_usuario nombre_bd cuando otro_usuario no tiene clave. Si todos los usuarios tienen una clave, conectarse utilizando la cuenta de otro usuario se vuelve mucho más difícil. Para cambiar la clave de un usuario, utilice la sentencia SET PASSWORD. También es posible alterar la tabla user en la base de datos mysql directamente. Por ejemplo, para cambiar la clave de todas las cuentas MySQL que tienen por nombre de usuario root, haga lo siguiente:

shell> mysql -u rootmysql> UPDATE mysql.user SETPassword=PASSWORD('newpwd')-> WHERE User='root';mysql> FLUSH PRIVILEGES;

Page 113: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• Nunca ejecute el servidor MySQL con el usuario root de Unix. Esto es extremadamente peligroso porque cualquier usuario con el privilegio FILE es capaz de crear ficheros como root (por ejemplo, ~root/.bashrc). Para prevenir esto, mysqld rechaza ejecutarse como root a menos que se utilice explícitamente la opción --user=root. En vez de eso, mysqld puede (y debe) ser ejecutado mediante un usuario normal sin privilegios. Puede crear una cuenta de Unix específica llamada mysql para hacerlo todo aún más seguro. Utilice esta cuenta tan solo para administrar MySQL. Para ejecutar mysqld mediante un usuario de Unix diferente, añada la opción user que especifica el nombre de usuario al grupo [mysqld] del fichero de opciones /etc/my.cnf o al fichero de opciones my.cnf en el directorio de datos del servidor.Por ejemplo:

[mysqld]user=mysql

Esto provoca que el servidor se inicie mediante el usuario designado, lo ejecute usted manualmente o mediante mysqld_safe o mysql.server.

Ejecutar mysqld como un usuario Unix diferente de root no significa que necesite cambiar el usuario root de la tabla user. Los usuarios de las cuentas MySQL no tienen nada que ver con los usuarios de las cuentas Unix.

• No permita el uso de enlaces simbólicos a tablas. (Esto puede desactivarse con la opción --skip-symbolic-links.) Esto es especialmente importante si ejecuta mysqld como root, porque cualquiera que tenga acceso de escritura al directorio de datos del servidor ¡podría entonces borrar cualquier fichero en el sistema!.

• Asegúrese de que el único usuario Unix con permisos de lectura o escritura en los directorios de la base de datos es el usuario que ejecuta mysqld.

• No otorgue los privilegios PROCESS o SUPER a usuarios no-administrativos. La salida del de mysqladmin processlist muestra el texto de cualquier sentencia que se esté ejecutando, así que cualquier usuario al que se permita ejecutar ese comando puede ser capaz de ver si otro usuario ejecuta una sentencia UPDATE user SET password=PASSWORD('not_secure'). mysqld reserva una conexión extra para usuarios que tengan el privilegio SUPER, así que un usuario root puede conectarse y comprobar la actividad del servidor aún cuando todas las conexiones normales estén en uso.

Page 114: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

El privilegio SUPER puede utilizarse para cerrar conexiones de cliente, cambiar el funcionamiento del servidor modificando el valor de variables del sistema, y controlar servidores de replicación.

• No otorgue el privilegio FILE a usuarios no-administrativos. Cualquier usuario que posea este privilegio puede escribir un archivo en cualquier de lugar del sistema de ficheros con los privilegios del demonio mysqld. Para hacer esto un poco más seguro, los archivos generados con SELECT ... INTO OUTFILE no sobrescriben archivos existentes, y pueden ser escritos por cualquiera.

El privilegio FILE puede también ser utilizado para leer cualquier archivos que sea legible por cualquiera o accesible para el usuario Unix que ejecuta el servidor. Con este privilegio, podría por ejemplo leer cualquier fichero e insertarlo en una tabla de la base de datos. Esto podría utilizarse, por ejemplo, utilizando LOAD DATA para cargar /etc/passwd en una tabla, que podría ser mostrada después con un SELECT.

• Si no confía en sus DNS, podría utilizar números IP en vez de nombres en las tablas de permisos (tablas grant). En cualquier caso, debería ser muy cuidadoso en crear registros en las tablas de permiso utilizando nombres que contengan caracteres comodines.

• Si quiere restringir el número de conexiones permitidas para una misma cuenta, puede hacerlo estableciendo la variable max_user_connections de mysqld. La sentencia GRANT también soporta opciones de control de recursos para limitar la extensión de uso de servidor permitido a una cuenta. Consulte Sección 13.5.1.3, “Sintaxis de GRANT y REVOKE”.

Opciones de arranque para mysqld relacionadas con la seguridad

Las siguientes opciones de mysqld afectan a la seguridad:

Page 115: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• --allow-suspicious-udfsEsta opción controla si las funciones definidas por el usuario que sólo tienen un símbolo xxx para la función principal se pueden cargar. Por defecto, la opción está desactivada y sólo UDFs que tengan al menos un símbolo auxiliar pueden cargarse. Esto previene intentos de cargar funciones desde ficheros objetos compartidos que no contengan UDFs legítimos. Para MySQL 5.0, esta opción se añadió en MySQL 5.0.3.

• --local-infile[={0|1}]Si arranca el servidor con --local-infile=0, los clientes no pueden usar LOCAL en comandos LOAD DATA .

• --old-passwordsFuerza al servidor a generar hashes de contraseñas cortos (pre-4.1) para las nuevas contraseñas. Esto es útil para compatibilidad cuando el servidor debe soportar antiguos programas cliente.

• (OBSOLETO) --safe-show-databaseEn versiones previas de MySQL, esta opción provoca que el comando SHOW DATABASES muestre los nombers de sólo aquellas bases de datos para las que el usuario tiene algún tipo de privilegio. En MySQL 5.0, esta opción no está disponible ya que es el comportamiento por defecto, y hay un privilegio SHOW DATABASES que puede usarse para controlar el acceso a los nombres de las bases de datos para cada cuenta. Consulte Sección 13.5.1.3, “Sintaxis de GRANT y REVOKE”.

• --safe-user-createSi está activada, un usuario no puede crear nuevos usuarios con el comando GRANT a no ser que el usuario tenga el privilegio INSERT para la tabla mysql.user . Si desea que un usuario tenga la habilidad de crear nuevos usuarios con los privilegios que el usuario tiene derecho a otorgar, debe otorgar al usuario el siguiente privilegio:

mysql> GRANT INSERT(user) ON mysql.user TO 'nombre_usuario'@'nombre_host';

Esto asegura que el usuario no pueda cambiar ninguna columna de privilegios directamente, pero debe usar el comando GRANT para dar privilegios a otros usuarios.

Page 116: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• --secure-authDesactiva autenticación para cuentas que usen antiguas contraseñas (pre-4.1)

• --skip-grant-tablesEsta opción hace que el servidor no use el sistema de privilegios en absoluto. Esto da a todo el mundo acceso total a todas las bases de datos! (Puede decirle a un servidor en ejecución que arranque usando las tablas de permisos de nuevo usando mysqladmin flush-privileges o el comando mysqladmin reload, o mediante el comando FLUSH PRIVILEGES.)

• --skip-name-resolveLos nombres de equipo no se resuelven. Todo valor en la columna Host en la tabla de permisos deben ser números IP o localhost.

• --skip-networkingNo permite conexiones TCP/IP a través de la red. Todas las conexiones a mysqld se realizan mediante ficheros socket de Unix.

• --skip-show-databaseCon esta opción, el comando SHOW DATABASES se permite sólo a usuarios que tengan el privilegio SHOW DATABASES , y el comando muestra todos los nombres de bases de datos. Sin esta opción , SHOW DATABASES está permitido a todos los usuarios, pero muestra cada nombre de base de datos sólo si el usuario tiene el privilegio SHOW DATABASES o algún privilegio para la base de datos.

Cuestiones relacionadas con la seguridad y LOAD DATA LOCAL

Page 117: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

El comando LOAD DATA puede cargar un fichero que esté localizado en el equipo servidor, o puede cargar un fichero localizado en el equipo cliente cuando se especifica la palabra clave LOCAL.Hay dos aspectos de seguridad potenciales al soportar la versión LOCAL de los comandos LOAD DATA:

• La transferencia del fichero desde el equipo cliente al equipo servidor se inicia mediante el servidor MySQL. En teoría, puede construirse un servidor modificado de forma que le diga al programa cliente que transfiera un fichero elegido por el servidor en lugar del fichero especificado por el cliente en el comando LOAD DATA . Tal servidor podría acceder a cualquier fichero en el equipo cliente al que el usuario cliente tuviese acceso de lectura.

• En un entorno Web en el que los clientes se conecten mediante un servidor Web, un usuario podría usar LOAD DATA LOCAL para leer cualquier fichero al que el servidor Web tuviese acceso de lectura (asumiendo que el usuario pudiese ejecutar cualquier comando contra el servidor SQL). En este entorno, el cliente respecto al servidor MySQL es el servidor Web, no el programa ejecutado por el usuario para conectar al servidor Web.Para tratar estos problemas, hemos cambiado el funcionamiento de LOAD DATA LOCAL en MySQL 3.23.49 y MySQL 4.0.2 (4.0.13 en Windows):

• Por defecto, todos los clientes MySQL y bibliotecas en distribuciones binarias se compilan con la opción --enable-local-infile para ser compatible con la versión MySQL 3.23.48 y anteriores.

• Si compila MySQL de los ficheros fuentes pero no usa la opción --enable-local-infile para configure, LOAD DATA LOCAL no puede usarse por ningún cliente a no ser que se escriba explícitamente para invocar mysql_options(... MYSQL_OPT_LOCAL_INFILE, 0).

• Puede desactivar todos los comandos LOAD DATA LOCAL desde el lado del servidor arrancando mysqld con la opción - -local-infile=0.

• Para el cliente de línea de comando mysql, LOAD DATA LOCAL puede activarse especificando la opción --local-infile[=1] , o deshabilitarse con la opción --local-infile=0 . De forma similar, para mysqlimport, las opciones --local o -L permite la carga de datos locales. En cualquier caso, el uso exitoso de una operación de carga local requiere que el servidor lo permita.

Page 118: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

• Si usa LOAD DATA LOCAL en scripts de Perl scripts u otros programas que lean del grupo [client] en los ficheros de opciones, puede añadir la opción local-infile=1 a ese grupo. De todos modos, para evitar que esto cause problemas en programas que no entiendan local-infile, especifíquelo usando el prefijo loose- :

[client]loose-local-infile=1

• Si LOAD DATA LOCAL INFILE está desactivado, tanto en el servidor o el cliente, un cliente que trate de ejecutar dicho comando recibe el siguiente mensaje de error:

ERROR 1148: The used command is not allowed with this MySQL version

Page 119: Base Datos Completo

DIRECCION GENERAL DE EDUCACION TECNOLOGICA INDUSTRIAL COORDINACION DE ENLACE OPERATIVO DE AGUASCALIENTES

CENTRO DE BACHILLERATO TECNICO EN COMPUTACION ASIGNATURA: BASE DE DATOS I .PERIODO: AGOSTO 07 – ENERO 08 SEMESTRE: 5 CICLO ESCOLAR: 2007 – 2008.PROFESOR(A): L.I. ALEJANDRO ISRAEL MERCADO LOPEZ ESPECIALIDAD: PROGRAMADOR . GRUPO: A .

BIBLIOGRAFÍA

Libro MySQL 5.0 Reference Manualwww.Monografías.com/trabajos7/bada/bada.shtmlhttp://www.monografias.com/trabajos12/guiainf/guiainf.shtml