Title: Bases de datos en PHP con MySQL
1Bases de datos en PHP con MySQL
- Introducción a la ingeniería en computación
- UTM
2Qué es una base de datos?
- Una base de datos (BD) es una colección de
información organizada de tal forma que un
programa pueda seleccionar rápidamente conjuntos
de datos deseados. - Las bases de datos tradicionales se organizan por
campos, registros y archivos. - Un campo es una pieza simple de información.
- Un registro es un conjunto completo de campos.
- Un archivo es un conjunto de registros
- Una base de datos está determinada por un
conjunto de archivos. - Para accesar a la información de una base de
datos es necesario un sistema manejador de bases
de datps (Database Management system). Este
programa permite entrar, organizar, seleccionar
la información contenida en la BD.
Es un conjunto exhaustivo no redundante de datos
estructurados organizados independientemente de
su utilización y su implementación en máquina
accesibles en tiempo real y compatibles con
usuarios concurrentes con necesidad de
información diferente.
3Sistemas de gestión de bases de datos
- Un conjunto de programas que permiten almacenar,
modificar, y extraer información de una base de
datos. Hay diferentes tipos de DBMS desde los muy
pequeños para operar sobre PCs hasta los muy
grandes que operan sobre mainframes. - Un DBMS contiene
- DDL Lenguaje de Definición de Datos
- DML Lenguaje de Manipulación de Datos
- SQL Lenguaje de Consulta.
- Entre los DBMS mas comunes están Oracle,
SqlServer, Informix, Sysbase, MySQL, postgreSQL. - Una BD es una colección de archivos
interrelacionados almacenados en conjunto sin
redundancia y un DBMS es un conjunto de numerosas
rutinas de software interrelacionadas cada una de
ellas es responsable de una determinada tarea.
4Algunas Aplicaciones con DBMS
- Sistemas de reservación
- Inventarios
- Sistema de consulta de una biblioteca
- Sistema para control de Recursos humanos
- Bases de datos topográficas, etc
- El modelo relacional
- Este es el modelo que se está empleando con más
frecuencia en la práctica, debido el rápido
entendimiento por parte de los usuarios que no
tienen conocimientos profundos sobre Sistemas de
Bases de Datos - En este modelo toda la información se representa
a través de arreglos bidimensionales o tablas. - Las operaciones básicas son
- Seleccionar renglones de alguna tabla (SELECT)
- Seleccionar columnas de alguna tabla (PROJECT)
- Unir o juntar información de varias tablas (JOIN)
5Cómo diseñar una BD?
- Las etapas de diseño de una base de datos son
- Diseño conceptual
- Diseño lógico
- Diseño físico
- El diseño conceptual se refiere a identificar qué
datos serán usados para una aplicación, por
ejemplo para una agenda serían ? - El diseño lógico se refiere a la descripción de
cada pieza de información y las relaciones que
existen entre ellas. - En esta etapa se definen las tablas (y su
contenido) que se van a usar, relaciones entre
los datos, campos llave, así como la
normalización de dichos datos. - Las tablas se relacionan con otras teniendo
columnas en común, dicha columna puede aparecer
en más de dos tablas. Existen tres tipos de
relación uno a uno, uno a muchos y muchos a
muchos. - Ejemplo de uno a uno un profesor estará
solamente en un cubo, cada departamento solamente
tiene un jefe. - Ejemplo de uno a muchos los profesores que están
en cierto instituto. Los alumnos que son de
cierta carrera. - Ejemplo de muchos a muchos un alumno puede
asistir a más de un curso, cada curso puede tener
más de un alumno.
6Normalización
- Es el proceso para eliminar redundancia y
aumentar la estabilidad y rendimiento de una BD.
Ayuda a determinar qué dato pertenece a qué tabla
y las relaciones entre las columnas de una tabla. - Primera forma normal (1NF)
- Cada atributo de la tabla es atómico debe
almacenar el dato más pequeño posible, esto para
facilitar la búsqueda y ordenamiento de los
datos. Ejemplo el nombre de una persona puede
ocasionar problemas, ya que se podrían hacer
búsquedas por nombre o por apellidos. Entonces es
necesario tener un campo para el nombre y otro
para apellidos. - No existen atributos multivaluados por ejemplo
un libro puede tener más de un autor, y además
tener estar en más de una categoría. Para este
caso dichos atributos deben ser movidos a otra
tabla.
72NF
- Todas las columnas deben depender directamente de
la llave primaria. En caso de encontrar atributos
que no dependan de la clave primaria deberán ser
enviados a otra tabla.
8 93NF
- Se cumple con esta forma cuando se tienen
columnas independientes. Es decir cuando una
columna no puede ser derivada de otra. - Por ejemplo no es necesario un campo edad si se
tiene por ejemplo la fecha de nacimiento. - Llaves
- Es una columna o grupo de, que funciona como un
identificador único en una columna.
10El diseño físico
- Se hace un refinamiento del diseño lógico y se
elige qué DBMS se usará. En esta etapa se
determina - Los datos que se usarán más comunmente
- Columnas que requieran índices
- Áreas que necesitarán más espacio físico por un
mayor incremento de la información que habrá en
ella - Si es factible hacer una desnormalización de los
datos para obtener una mejora en el rendimiento
de la BD - SQL
- El lenguaje de consulta estructurado (SQL) es un
lenguaje de base de datos normalizado, utilizado
por los diferentes motores de bases de datos para
realizar determinadas operaciones sobre los datos
o sobre la estructura de los mismos.
11Componentes de SQL
- El lenguaje SQL está compuesto por comandos,
cláusulas, operadores y funciones de agregado.
Estos elementos se combinan en las instrucciones
para crear, actualizar y manipular las bases de
datos. - Comandos
- Existen dos tipos de comandos SQL
- Los DLL que permiten crear y definir nuevas bases
de datos, campos e índices. - Los DML que permiten generar consultas para
ordenar, filtrar y extraer datos de la base de
datos. - Comandos DLL
- CREATE Utilizado para crear nuevas tablas, campos
e índices - DROP Empleado para eliminar tablas e índices
- ALTER Utilizado para modificar las tablas
agregando campos o cambiando la definición de los
campos.
12 - Comandos DML
- SELECT Utilizado para consultar registros de la
base de datos que satisfagan un criterio
determinado - INSERT Utilizado para cargar lotes de datos en la
base de datos en una única operación. - UPDATE Utilizado para modificar los valores de
los campos y registros especificados - DELETE Utilizado para eliminar registros de una
tabla de una base de datos - Cláusulas
- Las cláusulas son condiciones de modificación
utilizadas para definir los datos que desea
seleccionar o manipular. - FROM Utilizada para especificar la tabla de la
cual se van a seleccionar los registros - WHERE Utilizada para especificar las condiciones
que deben reunir los registros que se van a
seleccionar - GROUP BY Utilizada para separar los registros
seleccionados en grupos específicos - ORDER BY Utilizada para ordenar los registros
seleccionados de acuerdo con un orden específico
13 - Operadores lógicos
- AND Es el "y" lógico. Evalua dos condiciones y
devuelve un valor de verdad sólo si ambas son
ciertas. - OR Es el "o" lógico. Evalúa dos condiciones y
devuelve un valor de verdar si alguna de las dos
es cierta. - NOT Negación lógica. Devuelve el valor contrario
de la expresión. - Operadores de Comparación
- lt Menor que
- gt Mayor que
- ltgt Distinto de
- lt Menor ó Igual que
- gt Mayor ó Igual que
- Igual que
- BETWEEN Utilizado para especificar un intervalo
de valores. - LIKE Utilizado en la comparación de un modelo
- In Utilizado para especificar registros de una
base de datos
14 - Funciones de Agregado
- Las funciones de agregado se usan dentro de una
cláusula SELECT en grupos de registros para
devolver un único valor que se aplica a un grupo
de registros. - AVG Utilizada para calcular el promedio de los
valores de un campo determinado - COUNT Utilizada para devolver el número de
registros de la selección - SUM Utilizada para devolver la suma de todos los
valores de un campo determinado - MAX Utilizada para devolver el valor más alto de
un campo especificado - MIN Utilizada para devolver el valor más bajo de
un campo especificado
15Supongamos la BD para una librería con la
siguiente estructura
autorLibro autorLibro
Field Type
ISBN varchar(20)
Nombre varchar(40)
Apellidos varchar(40)
Libros Libros
Field Type
ISBN varchar(20)
titulo varchar(80)
precio float
editorial varchar(80)
edicion varchar(20)
annoEdic int(11)
Idioma varchar(40)
existencia tinyint(4)
Ventas Ventas
Field Type
id int(11)
RFC varchar(30)
ISBN varchar(20)
Cliente varchar(60)
Fecha date
Cantidad int(11)
PrecioUnidad float
16Mostrar todos los datos que están en la tabla
libros
- Select from libros
- Otra opción es poner exactamente qué campos
quiere mostrar.
ISBN titulo precio editorial edicion annoEdic Idioma existencia
84-181-36662-0 Fundamentos de programacion 325.23 McGraw Hill 3 2002 Español 7
84-89660-00-X Fundamentos de Algoritmia 259.95 Prentice Hall 1 1997 Español 7
84-189-76952-0 Redes para todos 215.62 Prentice Hall 2 1999 Español 7
83-298-37952-x Arquitectura de computadoras 250 Prentice Hall 2 1999 Español 7
33-588-37741-x 1001 tips para programar en Java 257.35 McGraw Hill 2 1997 Español 7
17Otras consultas
- select titulo, precio, precio1.15 from libros
- select titulo, precio, precio.15 from libros
where preciogt250 - select titulo, precio, precio.15 from libros
where preciogt250 order by precio - select titulo, precio, precio.15 from libros
where precio between 220 and 300 order by precio
18Consultas que implican más de una tablaMostrar
apellido del autor y el título del libro.
- select autorlibro.apellidos, libros.titulo from
autorlibro, libros where libros.ISBN
autorlibro.ISBN
Joyanes Aguilar Fundamentos de programacion
Brassard Fundamentos de Algoritmia
Bratley Fundamentos de Algoritmia
Gibbs Redes para todos
Mano Arquitectura de computadoras
Chan 1001 tips para programar en Java
Griffith 1001 tips para programar en Java
Iasi 1001 tips para programar en Java
19Más consultas
- select autorlibro.apellidos, libros.titulo from
autorlibro, libros where libros.ISBN
autorlibro.ISBN and autorlibro.apellidos like
'Jo - Si hacemos la siguiente consulta
- SELECT FROM ventas
- La siguiente consulta
- select sum(preciounidadcantidad) from ventas
- select sum(preciounidadcantidad) from ventas
where fecha '2003-12-13' - Arrojaría
id RFC ISBN Cliente Fecha Cantidad PrecioUnidad
1 ZILJ-690122 84-181-36662-0 Ziga León Jorge 2003-12-13 2 210
2 SAHC-850226 84-89660-00-X Santos Hernandez Cristina 2003-12-13 1 255.95
sum(preciounidadcantidad)
675.94999694824
20 - select autorlibro.apellidos, libros.titulo,
libros.precio from autorlibro, libros where
libros.ISBN autorlibro.ISBN and
autorlibro.apellidos like 'Joy order by titulo - select autorlibro.apellidos, libros.titulo,
libros.precio from autorlibro, libros where
libros.ISBN autorlibro.ISBN and
(autorlibro.apellidos like 'Joy' or
autorlibro.apellidos like 'Br') order by titulo
apellidos titulo precio
Joyanes Aguilar Fundamentos de programacion 325.23
apellidos titulo precio
Bratley Fundamentos de Algoritmia 259.95
Brassard Fundamentos de Algoritmia 259.95
Joyanes Aguilar Fundamentos de programacion 325.23
21La instrucción DELETE
- Crea una consulta de eliminación que elimina los
registros de una o más de las tablas listadas en
la cláusula FROM que satisfagan la cláusula
WHERE. Esta consulta elimina los registros
completos, no es posible eliminar el contenido de
algún campo en concreto. Su sintaxis es - DELETE FROM Tabla WHERE criterio
- Ejemplo
- delete from ventas where fecha gt '2003-12-16'
22INSERT
- Insertar un único Registro
- INSERT INTO Tabla (campo1, campo2, .., campoN)
- VALUES (valor1, valor2, ..., valorN)
- INSERT INTO ventas (id, RFC, ISBN, Cliente,
Fecha, Cantidad, PrecioUnidad) VALUES (5,
'SAHC-850226', '33-588-37741-x', 'Santos
Hernandez Cristina', '2003-12-14', 6, 250) - Si los datos del registro a insertar le son
enviados en el mismo orden en que están definidos
en la tabla, se puede usar la siguiente sintaxis - INSERT INTO Tabla VALUES (valor1, valor2, ...,
valorN) - También es posible insertar datos generados por
una consulta. - INSERT INTO Tabla SELECT TablaOrigen. FROM
TablaOrigen
23Actualización de valores
- No genera ningún resultado. Para saber qué
registros se van a cambiar, hay que examinar
primero el resultado de una consulta de selección
que utilice el mismo criterio y después ejecutar
la consulta de actualización. - Update tabla set campo1valor1, campo2valor2
, where condiciones - update libros set precioprecio0.95
- update libros set sueldosueldo1.05 where sueldo
gt 45.50
24USANDO PHP y MySQLConexión a la BD
- lt?php
- function Conectarse()
- if (!(linkmysql_connect("localhost","usuario"
,"Password"))) - echo "Error conectando a la base de datos."
- exit() //es posible también la instrucción
die(mensaje) -
- if (!mysql_select_db("base_datos",link))
- echo "Error seleccionando la base de
datos." - exit()
-
- return link
-
- linkConectarse()
- echo "Conexión con la base de datos
conseguida.ltbrgt" - mysql_close(link) //cierra la conexion
- ?gt
25Instrucciones para conexión a BD en MySQL
- Al ejecutar la instrucción mysql_connect se crea
un vínculo entre la base de datos y la pagina
PHP, este vínculo será usado posteriormente en
las consultas que hagamos a la base de datos. - Finalmente, una vez que hemos terminado de usar
el vínculo con la base de datos, lo liberaremos
con la instrucción mysql_close para que la
conexión no quede ocupada. - mysql_query sirve para hacer una consulta a la
base de datos en el lenguaje de consultas SQL - mysql_fetch_array se extraen los datos de la
consulta a un array. - mysql_free_result liberamos la memoria usada en
la consulta.
26 - ltbodygt
- lt?php
- include("conex.php") //en este archivo está
la función conectarse - link conectarse()
- result mysql_query("select titulo, precio
from libros",link) - ?gt
- ltTABLE BORDER1 CELLSPACING1 CELLPADDING1gt
- ltTRgtltTDgtTitulolt/TDgtltTDgtPreciolt/TDgtlt/TRgt
- lt?php
- while(row mysql_fetch_array(result))
- printf("lttrgtlttdgtslt/tdgtlttdgtslt/tdgtlt/trgt",
rowtitulo",rowprecio") -
- mysql_free_result(result)
- mysql_close(link)
- ?gt
- lt/tablegt
- lt/bodygt
27Inserción de registros
- lt?php
- include("conex.php")
- linkConectarse()
- //Petición de los datos desde la
otra forma - nombre_GET'nombre'
- apellidos_GET'apellidos'
- //ejecución de la inserción
- mysql_query ("insert into prueba
(Nombre,Apellidos) values ('nombre','apellidos')
",link) - mysql_close(link)
- ?gt
28Bibliografía
- Tutoriales SQL
- http//www.programacion.com/tutorial/sql/
- http//www.wwits.net/programs/dbtutorindex.phtml
- PHP y MySQL
- http//www.webestilo.com/php/php07a.phtml
- Libros
- Database Design Guide Pervasive Software
(e-book) - FUNDAMENTOS DE BASES DE DATOS - KORTH, HENRY F.
- Usen después de instalar el PHP-triad
- http//localhost/phpmyadmin para definir sus
tablas y hacer las pruebas necesarias