Buscar este blog

sábado, 26 de febrero de 2011

BD TALLER MECANICO

Modelo Entidad-relacion

CÓDIGO

CREATE DATABASE TALLER;
USE TALLER

CREATE TABLE IF NOT EXISTs `CLIENTE`(
`RFC` varchar(10) not null PRIMARY KEY,
`Nombre` varchar (60) not null,
`Direccion` varchar (60) not null,
`tel` varchar(10)
)ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `MECANICO`(
`Idmec` varchar(10) not null PRIMARY KEY,
`Nombre` varchar (60) not null,
`Direccion` varchar (60) not null,
`tel` varchar(10),
`Costoxhora` DECIMAL(2) not null
)ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `VEHICULO`(
`Matricula` varchar (10) not null PRIMARY KEY,
`Modelo` varchar (60) not null,
`Color` varchar (60),
`Fecha_ent` datetime not null,
`Hora_ent` datetime not null,
`RFC` varchar (10) not null,
`Mec` varchar(10) not null,
FOREIGN KEY (`RFC`) REFERENCES `CLIENTE` (`RFC`),
FOREIGN KEY (`Mec`) REFERENCES `MECANICO` (`Idmec`)
)ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `REPUESTO`(
`Idrep` varchar(10) not null PRIMARY KEY,
`Descripción` varchar (60) not null,
`CostoUnit` int not null,
`PrecioUnit` int not null
)ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `HOJAP`(
`Idhoja` varchar (10) not null PRIMARY KEY,
`concepto` varchar (100) not null,
`Cantidad` int not null,
`Reparacion` varchar(10) not null,
`Idmec` varchar(10) not null,
FOREIGN KEY (`Idmec`) REFERENCES `MECANICO` (`Idmec`),
FOREIGN KEY (`Reparacion`) REFERENCES `REPUESTO` (`Idrep`)
)ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `FACTURA`(
`Nofact` varchar(10) not null PRIMARY KEY,
`Fecha` datetime not null,
`Imp_pesos` decimal(2) not null,
`Imp_dol` decimal(2) not null,
`RFC` varchar(10) not null,
`Idhoja` varchar(10) not null,
FOREIGN KEY (`RFC`) REFERENCES CLIENTE (`RFC`),
FOREIGN KEY (`Idhoja`) REFERENCES HOJAP (`Idhoja`)
)ENGINE = InnoDB;

TABLAS DE LA BD
 DESCRIPCION TABLA CLIENTE Y VEHICULOCON UN INSERT


DESCRIPCION DE LAS DEMAS TABLAS

 JUMM.

domingo, 20 de febrero de 2011

BD Biblioteca

DIAGRAMA RELACIONAL DE BD DE BIBLIOTECA


NORMALIZACIÓN

Aqui dejo un video, que es el q mas me convencio de todos los encontre acerca de la normalizacon de una base de datos, lo recomiendo, esta muy bien explicado. :)



OK despues de haber visto lo que significa normalizaciín, veamos un ejemplo de una pequeña biblioteca :


CodLibro
Titulo
Autor
Editorial
NombreLector
FechaDev
1001
Variable compleja
Murray Spiegel
McGraw Hill
Pérez Gómez, Juan
15/04/2005
1004
Visual Basic 5
E. Petroustsos
Anaya
Ríos Terán, Ana
17/04/2005
1005
Estadística
Murray Spiegel
McGraw Hill
Roca, René
16/04/2005
1006
Oracle University
Nancy Greenberg y Priya Nathan
Oracle Corp.
García Roque, Luis
20/04/2005
1007
Clipper 5.01
Ramalho
McGraw Hill
Pérez Gómez, Juan
18/04/2005
Esta tabla no cumple el requisito de la Primera Forma Normal (1NF) de sólo tener campos atómicos, pues el nombre del lector es un campo que puede (y conviene) descomponerse en apellido paterno, apellido materno y nombres. Tal como se muestra en la siguiente tabla.
1NF
CodLibro
Titulo
Autor
Editorial
Paterno
Materno
Nombres
FechaDev
1001
Variable compleja
Murray Spiegel
McGraw Hill
Pérez
Gómez
Juan
15/04/2005
1004
Visual Basic 5
E. Petroustsos
Anaya
Ríos
Terán
Ana
17/04/2005
1005
Estadística
Murray Spiegel
McGraw Hill
Roca

René
16/04/2005
1006
Oracle University
Nancy Greenberg
Oracle Corp.
García
Roque
Luis
20/04/2005
1006
Oracle University
Priya Nathan
Oracle Corp.
García
Roque
Luis
20/04/2005
1007
Clipper 5.01
Ramalho
McGraw Hill
Pérez
Gómez
Juan
18/04/2005
Como se puede ver, hay cierta redundancia característica de 1NF.
La Segunda Forma Normal (2NF) pide que no existan dependencias parciales o dicho de otra manera, todos los atributos no clave deben depender por completo de la clave primaria. Actualmente en nuestra tabla tenemos varias dependencias parciales si consideramos como atributo clave el código del libro.
Por ejemplo, el título es completamente identificado por el código del libro, pero el nombre del lector en realidad no tiene dependencia de este código, por tanto estos datos deben ser trasladados a otra tabla.
2NF
CodLibro
Titulo
Autor
Editorial
1001
Variable compleja
Murray Spiegel
McGraw Hill
1004
Visual Basic 5
E. Petroustsos
Anaya
1005
Estadística
Murray Spiegel
McGraw Hill
1006
Oracle University
Nancy Greenberg
Oracle Corp.
1006
Oracle University
Priya Nathan
Oracle Corp.
1007
Clipper 5.01
Ramalho
McGraw Hill

La nueva tabla sólo contendrá datos del lector.

CodLector
Paterno
Materno
Nombres
501
Pérez
Gómez
Juan
502
Ríos
Terán
Ana
503
Roca

René
504
García
Roque
Luis
Hemos creado una tabla para contener los datos del lector y también tuvimos que crear la columna CodLector para identificar unívocamente a cada uno. Sin embargo, esta nueva disposición de la base de datos necesita que exista otra tabla para mantener la información de qué libros están prestados a qué lectores. Esta tabla se muestra a continuación:

CodLibro
CodLector
FechaDev
1001
501
15/04/2005
1004
502
17/04/2005
1005
503
16/04/2005
1006
504
20/04/2005
1007
501
18/04/2005
Para la Tercera Forma Normal (3NF) la relación debe estar en 2NF y además los atributos no clave deben ser mutuamente independientes y dependientes por completo de la clave primaria. También recordemos que dijimos que esto significa que las columnas en la tabla deben contener solamente información sobre la entidad definida por la clave primaria y, por tanto, las columnas en la tabla deben contener datos acerca de una sola cosa.
En nuestro ejemplo en 2NF, la primera tabla conserva información acerca del libro, los autores y editoriales, por lo que debemos crear nuevas tablas para satisfacer los requisitos de 3NF.
3NF
CodLibro
Titulo
1001
Variable compleja
1004
Visual Basic 5
1005
Estadística
1006
Oracle University
 1007
Clipper 5.01

CodAutor
Autor
801
Murray Spiegel
802
E. Petroustsos
803
Nancy Greenberg
804
Priya Nathan
806
Ramalho

CodEditorial
Editorial
901
McGraw Hill
902
Anaya
903
Oracle Corp.
Aunque hemos creado nuevas tablas para que cada una tenga sólo información acerca de una entidad, también hemos perdido la información acerca de qué autor ha escrito qué libro y las editoriales correspondientes, por lo que debemos crear otras tablas que relacionen cada libro con sus autores y editoriales.

CodLibro
codAutor
1001
801
1004
802
1005
801
1006
803
1006
804
1007
806

CodLibro
codEditorial
1001
901
1004
902
1005
901
1006
903
1007
901
Y el resto de las tablas no necesitan modificación.


CodLector
Paterno
Materno
Nombres
501
Pérez
Gómez
Juan
502
Ríos
Terán
Ana
503
Roca

René
504
García
Roque
Luis

CodLibro
CodLector
FechaDev
1001
501
15/04/2005
1004
502
17/04/2005
1005
503
16/04/2005
1006
504
20/04/2005
1007
501
18/04/2005


jueves, 3 de febrero de 2011

SISTEMAS GESTORES DE BASE DE DATOS (SGBD)

El dia de hoy hablaremos acerca de los diferentes Sistemas Gestores de Base de Datos o mejor conocidos como  (SGBD) que existen y para ello es importante saber a que nos estamos refiriendo.

Segun wikipedia:
"Los sistemas de gestión de bases de datos (en inglés database management system, abreviado DBMS) son un tipo de software muy específico, dedicado a servir de interfaz entre la base de  datos, el usuario y las aplicaciones que la utilizan.

En estos sistemas se proporciona un conjunto coordinados de sistemas , procedimientos y lenguajes que permiten a los distintos usuarios realizar sus tareas habituales con los datos, garantizando además la seguridad con los mismos.

El éxito  de SGBD reside en mantener la seguridad e integridad de los datos.  Entre las distintas herramientas que proporcionan están:
  • Herramientas para la creación y especificación de los datos
  • Herramientas para administrar y crear la estructura física requeridas en las unidades de almacenamiento
  • Herramientas para la manipulación de los datos de las bases de datos, para añadir, modificar, suprimir o consultar datos
  • Herramientas de recuperación en caso de desastres
  • Herramientas para la creación de copias de seguridad
  • Herramientas para la gestión de la comunicación de la bd
  • Herramientas para la creación de aplicaciones que utilicen esquemas externos de los datos
  • Herramientas para la importación y exportación de los datos.


Existen diferentes SGDB en el mercado, para todas las necesidades de cada uno de los usuarios. Todos se puede adecuar a diferentes lenguajes de programación, a continuación se muestra  una forma de clasificarlos, así como algunos lenguajes con los que se pueden relacionar, los que considero los mas comerciales.

SGBD libres
    * PostgreSQL :
  • Un lenguaje propio llamado PL/PgSQL (similar al PL/SQL de oracle).
  • C.
  • C++.
  • Java PL/Java web.
  • PL/Perl.
  • plPHP.
  • PL/Python.
  • PL/Ruby.
  • PL/sh.
  • PL/Tcl.
  • PL/Scheme.
  • Lenguaje para aplicaciones estadísticas R por medio de PL/R.
    * Firebird:
  • ·         C++
  • ·         Eiffel
  • ·         Java
  • ·         C
  • ·         .Net
  • ·         COBOL
  • ·         Delphy
  • ·         Phyton
  • ·         Perl
  • ·         PHP
  • ·         Visual Basic
    * SQLite
  • ·         C++
  • ·         Java
  • ·         Phyton
  • ·         RealBasic
  • ·         Lazarus
  • ·         AppleScript
  • ·         VB 6
  • ·         Gambas
  • ·         PHP
  •     * DB2 Express-C
  •     * Apache Derby
  • ·         C++
  • ·         Eiffel
  • ·         Java
  • ·         C
  • ·         .Net
  • ·         Delphy
  • ·         Phyton
  • ·         Perl
  • ·         PHP
  • ·         Visual Basic
GBD no libres
    * MySQL: Licencia Dual, depende del uso. No se sabe hasta cuándo permanecerá así, ya que ha sido comprada por Oracle. Sin embargo, existen 2 versiones: una gratuita que sería equivalente a la edición "express" SQL server de Microsoft Windows, y otra más completa de pago.
  • ·         C++
  • ·         Eiffel
  • ·         Java
  • ·         C
  • ·         .Net
  • ·         COBOL
  • ·         Delphy
  • ·         Phyton
  • ·         Perl
  • ·         PHP
  • ·         Visual Basic
  • ·         Ruby
  • ·         Gambas
  • ·         Real basic
  • ·         Harbor
  • ·         Pascal
  • ·         Smalltalk
  • ·         SAP(lenguaje  ABAP)
    * Advantage Database
    * dBase
    * FileMaker
    * Fox Pro
    * gsBase
    * IBM DB2: Universal Database (DB2 UDB)
    * IBM Informix
    * Interbase de CodeGear, filial de Borland
    * MAGIC
    * Microsoft Access
  • ·         C++
  • ·         Eiffel
  • ·         Java
  • ·         C
  • ·         .Net
  • ·         Delphy
  • ·         Phyton
  • ·         Perl
  • ·         PHP
  • ·         Visual Basic
    * Microsoft SQL Server
  • ·         C++
  • ·         Java
  • ·         C
  • ·         .Net
  • ·         Delphy
  • ·         Phyton
  • ·         Perl
  • ·         PHP
  • ·         Visual Basic
    * NexusDB
    * Open Access
    * Oracle

  • ·         C++
  • ·         Eiffel
  • ·         Java
  • ·         C
  • ·         .Net
  • ·         C#
  • ·         Delphy
  • ·         Phyton
  • ·         Perl
  • ·         PHP
  • ·         Visual Basic
  • ·         Ruby
  • ·         Gambas
    * Paradox
    * PervasiveSQL
    * Progress (DBMS)
    * Sybase ASE
    * Sybase ASA
    * Sybase IQ
    * WindowBase
    * IBM IMS Base de Datos Jerárquica
    * CA-IDMS

 SGBD no libres y gratuitos
    * Microsoft SQL Server Compact Edition Basica
    * Sybase ASE Express Edition para Linux (edición gratuita para Linux)
    * Oracle Express Edition 10