Base de Datos

download Base de Datos

of 67

description

Principales caracterisc

Transcript of Base de Datos

Base de Datos I

Base de Datos IConceptos Bsicos y DefinicionesPropiedades de una base de datosUna base de datos es un conjunto de elementos de datos interrelacionados, administrados como unidad. (esta definicin es muy amplia) Microsoft: Access crea toda la base en un solo archivo, por lo que se puede definir como el archivo que contiene los elementos de datos.Oracle: Lo define como un conjunto de archivos administrados por una instancia de su producto de software de base de datos.Componentes y caractersticas de un SGBDProgramacin: Cualquier lenguaje para crear software.

Interfaces: El grafico que relacionara la entrada de informacin a la base de datos.

Base de datos: El lugar lgico donde se almacenara la informacin.Arquitectura de un SGBDEsquema Externo: Los esquemas externos reflejan la informacin preparada para el usuario final, el esquema conceptual refleja los datos y relaciones de la base de datos y el esquema interno la preparacin de los datos para ser almacenados.Arquitectura de un SGBDEsquema Conceptual: El esquema conceptual contiene la informacin lgica de la base de datos. Su estructuracin y las relaciones que hay entre los datos. Se trata de la propuesta terica de los datos (es quiz la ms importante).Arquitectura de un SGBDEsquema Interno: El esquema interno contiene informacin sobre cmo estn almacenados los datos en disco. Es el esquema ms cercano a la organizacin real de los datos.Ventajas de BDsControl sobre la redundancia de datos.Mejora la integridad de datos.Consistencia de datos.Comparticin de datos.Mantenimiento de estndares.Mejora la Seguridad.Accesabilidad.Desventajas de una BDCostos de equipos adicionales.Vulnerabilidad a fallos.Base de Datos IModelos de DatosModelo de datos.Instituto Nacional Estadounidense de Estndares (ANSI):Esquema conceptual, que especifica las expresiones permitidas por el modelo mismo, comunica las reglas y definiciones esenciales de los datos a los usuarios.Esquema lgico, que describe la semntica de tablas, clases orientadas a objetos, etc. Representadas por una tecnologa de manipulacin en particular (MySQL).Esquema fsico, que detalla los medios en los que se almacena la informacin, como puede ser, particiones de disco.Red (exp)Registros: Campos, registros de informacin.Conjuntos: La relacin entre tablas.JerrquicoSe utiliza la estructura tipo rbol.Entidad - RelacinEntidad: Caractersticas del registro que se vaya a guardar. Ej. Modelos de automviles en una agencia.Debe tener al menos un dato irrepetible.Relacin: Refleja la comunicacin que tendrn las tablas entre si.1-1 (uno a uno).1-n (uno a muchos).n-n (muchos a muchos).Normalizacin de base de datosFormalizacin 0:La tabla no ha tenido ningn acomodo de informacin.UsuariosNombreEmpresaDireccion_Empresaurl1url2JoeABC1 Work LaneAbc.comXyz.comJillXYZ1 Job StreetAbc.comXyz.comNormalizacin de base de datosFormalizacin 1:Eliminar grupos repetitivos de las tablas individuales.Crear una tabla separada por cada grupo de datos relacionados.Identificar cada grupo de datos relacionados con una clave primaria.UsuariosNombreEmpresaDireccion_Empresaurl1url2JoeABC1 Work LaneAbc.comXyz.comJillXYZ1 Job StreetAbc.comXyz.comNormalizacin de base de datosFormalizacin 1:UsuariosuserIDNombreEmpresaDireccion_Empresaurl1JoeABC1 Work LaneAbc.com1JoeABC1 Work LaneXyz.com2JillXYZ1 Job StreetAbc.com3JillXYZ1 Job StreetXyz.comNormalizacin de base de datosFormalizacin 2:Crear tablas separadas para aquellos grupos de datos que se aplican a varios registros.Relacionar esas tablas mediante una llave externa.Normalizacin de base de datosFormalizacin 2:UsuariosuserIDNombreEmpresaDireccion_Empresa1JoeABC1 Work Lane2JillXYZ1 Job StreetUrlsurlIDRelUserIDUrl11ABC21XYZ32ABC42XYZNormalizacin de base de datosFormalizacin 3:Eliminar aquellos campos que no dependan de la llave primaria.En este caso, nombre de empresa y direccin no tiene nada que ver con el campo UserID, as que deben de tener su propia tabla.EmpresasempresaIDNombredireccin1ABC1 work lane2XYZ1 job StreetNormalizacin de base de datosFormalizacin 3:EmpresasempresaIDNombredireccin1ABC1 work lane2XYZ1 job StreetUrlsurlIDRelUserIDUrl11ABC21XYZ32ABC42XYZUsuariosuserIDNombreempresaid1Joe12Jill2Base de Datos IComandos Bsicos MySQLCreate database NombreBase;Crea la base de datos con el nombre especificado.Ej.: create database universidad;Show databases;Muestra las bases de datos creadas por el usuario maestro. Root.Ej.: show databases;Use NombreBase;Para modificar la base de datos.Ej.: use universidad;Create table nombretabla (id int(8), campo1 varchar(4), campon(4));Crear tablas en la base de datos.Ej.: create tabla alumnos(id int(8) primary key, nombre varchar(20), carrera varchar(10), semestre int(2));Insert into nombretabla values (id,nombre,carrera,semestre);Crear registros en la tabla.Ej.: Insert into alumnos values (107347,Carlos Guzman,ISC,9);selectBuscar registros de una tablaEj.: select * from alumnos;Select atributo,atributon from tabla;Buscar registros de una tablaEj.: select matricula,nombre from alumnos;Show tables;Mostrar las tablas de una base de datosuna vez hemos accedido a la base de datos es con el siguiente comandoShow tables;Mostrar las tablas de una base de datosuna vez hemos accedido a la base de datos es con el siguiente comandoDescribe tabla;Mostrar las columnas de una tabla determinadaSi no hemos accedido a la base de .atos as:Drop tabla nombretabla;Eliminar una tabla y su contenido.Truncate table nombretabla;Eliminar el contenido de la tabla (los registros) pero no su estructura.Rename table nombretabla to nuevo nombreRenombrar una tabla.Rename table nombretabla to nuevo nombreRenombrar una tabla.Condicionante WhereEs una especificacin cuando queremos realizar una seleccin de manera especifica.

Ej. Select * from alumnos where id=valor;Delete from table where id=valor;Borra una tupla especifica de alguna tabla.

Ej. delete from alumnos where id=valor;Update nombretabla set atributo=valoretc where atributo=valor;Cambia el valor de un atributo, en las tuplas donde se cumpla la condicion

Ej. update alumnos set nombre=tu nombre where id=valor;Base de Datos IComandos Bsicos MySQLAtributos de camposAuto_increment: se ocupa cuando queremos que un identificador se incremente automaticamente.Not null: cuando queremos que un dato no puede quedar vaco.Primary key: seleccionar la llave primaria de la tabla.Foreign key: seleccionar el campo con el que se relacionara a otra tabla.Ejercicio practicoCrear una base de datos nueva.Crear una tabla llamada animales.El campo id deber ser not null e auto_increment.El campo nombre deber ser not null.La llave primaria deber ser el id.Ej. Create table animales (id int(8) not null auto_increment, nombre char(30) not null, primary key (id));Ejercicio practicoInsertar 4 tuplas.Ej. Insert into animales (nombre) values (perro),(gato),(leon),(tigre);Realizar un select a todos los campos de la tabla animales.alter table nombretabla drop atributo;Elimina el atributo especificado en la tabla.alter table nombretabla add foreign key (atributo _tabla _principal) references segunda_tabla(atributo_segunda_tabla)Relaciona dos tablas con las llaves primarias y foraneas.

Ej. Alter table alumnos add foreign key (id_telelfono) references telefono(id_tel);

Ejercicio: referenciar todas las dems tablas.Select alumno.nombre,telefono.telefono from alumno inner join telefono on alumno.id_telefono = telefono.id_telefono where id_alumno=10;Select alumno.nombre,telefono.telefono from alumno inner join telefono on alumno.id_telefono = telefono.id_telefonoEsta busqueda apareceria todos los registros.Con el where es para filtrar los registros.Base de Datos IInsercin de fecha y hora en campos.TimestampLa funcion timestamp inserta la fecha y hora al momento de la accion determinada.Esto es en un campo tipo timestamp.Funciona para MySQL 4.1 o superior.Creacion de tablaCreate table tiempo(fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

Tabla con un campo timestamp que toma un valor de fecha automtico tanto en inserciones como en actualizaciones.Creacion de tabla 2Create table tiempo2(fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

Tabla con un campo timestamp que toma un valor de fecha automatico tanto en inserciones pero no en actualiaciones.Creacion de tabla 3Create table tiempo3(fecha TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

Tabla con campo timestamp que toma un valor de fecha automtico en actualizaciones pero NO en insercionesInserts en tablasINSERT INTO tabla tiempo2 VALUES();SELECT * FROM tiempo2;

Ejemplo de insercin en una tabla con un campo DEFAULT CURRENT_TIMESTAMPInserts en tablasINSERT INTO tabla tiempo3 VALUES();ALTER TABLE tiempo3 ADD COLUMN descripcion VARCHAR(20);UPDATE tiempo3 SET descripcion =texto;SELECT * FROM tiempo3;

Ejemplo de actualizacion de un campo con la propiedad ON UPDATE CURRENT_TIMESTAMPNOTA IMPORTANTEEn MySQL solamente puede haber un campo DEFAULT CURRENT_TIMESTAMP por cada tabla.Base de Datos IMtodos para llaves forneasUsando alterCreate table clientes(cliente_id int(8) primary key, apellido char(20), nombre char(20), direccin char(20), ciudad char(20));Create table pedido(pedido_id int primary key, No_orden int(8),cliente_id int(8));Alter table pedido add foreign key (cliente_id) references clientes(cliente_id);Pantallas-alter

Sin usar alterCreate table clientes(cliente_id int(8) primary key, apellido char(20), nombre char(20),direccin char(20),ciudad char(20));Create table pedido(pedido_id int(8) primary key, No_orden int(8),cliente_id int(8), foreign key(cliente_id) references cliente(cliente_id));Pantallas-no alter

Inner join a 2 tablasSelect clientes.nombre,clientes.apellido,pedidos.no_orden from clientes INNER JOIN pedidos ON clientes.clientes_id = pedidos.clientes_id;Pantallas-inner join

Agregar tabla nacionalidadCreate table nacionalidad (id_nacionalidad int(8) primary key, pas char(50));Llenar con 3 pases.

Agregar columna id_nacionalidad en clientes.Alter table clientes add id_nacionalidad int(8);Alter table clientes add foreign key (id_nacionalidad) references nacionalidad (id_nacionalidad);Describe clientes;Nueva columna agregada

Agregar informacin a nueva columna

Inner join a 3 tablasSELECT clientes.nombre,clientes.apellido,pedido.no_orden,nacionalidad.pas FROM clientes INNER JOIN nacionalidad ON clientes.id_nacionalidad = nacionalidad.id_nacionalidad INNER JOIN pedidos ON clientes.clientes_id = pedidos.clientes_id;Pantallas-inner join

FIN ;D