Hace muy poco gracias a mis nuevos colegas descubrí un motor de base de datos relacionales llamado Firebird (es Open Source) y deriva de Interbase de Borland ... (avísenme si estoy equivocado) Veremos los ejemplos en Mysql y Firebird para ver las diferencias que se nos presentan.
Este ejemplo (pertenece a mi profesor de taller de bases de datos y el código e complementación a mí). la idea es crear lo siguiente:
*- 1 Base de Datos llamada informatica con 2 tablas fabricantes y articulos donde relacionaremos los articulos a un proveedor.
Primero en Firebrid (esto usando la versión 2.1)
Supongamos que ya hemos creado la base de datos informatica
CREATE TABLE FABRICANTES (
CODIGO INTEGER NOT NULL,
NOMBRE VARCHAR(100) CHARACTER SET NONE COLLATE NONE);
ALTER TABLE FABRICANTES ADD CONSTRAINT PKFABRICANTES PRIMARY KEY (CODIGO);
# Aquí Indico la llave Primaria
______________________________________________________________________________________
CREATE TABLE ARTICULOS (
CODIGOART INTEGER NOT NULL,
NOMBRE VARCHAR(100) CHARACTER SET NONE NOT NULL COLLATE NONE,
PRECIO INTEGER,
CODFRABICANTE INTEGER NOT NULL);
ALTER TABLE ARTICULOS ADD CONSTRAINT PKARTICULOS PRIMARY KEY (CODIGOART,CODFRABICANTE);
# Llave Primaria
ALTER TABLE ARTICULOS ADD CONSTRAINT FK_ARTICULOS FOREIGN KEY (CODFRABICANTE) REFERENCES FABRICANTES(CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
# Genero la relación de Fabricantes a Artículos
Nota 1: Siempre que relacionemos tablas debemos fijarnos que la tabla a la que haremos referencia exista.
Nota 2: En firebird todo es con mayúsculas.
Nota 3: ON DELETE CASCADE ON UPDATE CASCADE; quiere decir que cuando eliminemos un fabricante también eliminaremos los productos asociados a él en la tabla articulos. (los mismo al actualizar datos)... asi que cuidado con esto.
Nota 4: La cláusula CONSTRAINT , Se utiliza en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar índices.
Nota 5: CHARACTER SET NONE COLLATE NONE Sirve para seleccionar la codificacion de caracteres en el ejemplo no seleccione ningún tipo.
Nota 2: En firebird todo es con mayúsculas.
Nota 3: ON DELETE CASCADE ON UPDATE CASCADE; quiere decir que cuando eliminemos un fabricante también eliminaremos los productos asociados a él en la tabla articulos. (los mismo al actualizar datos)... asi que cuidado con esto.
Nota 4: La cláusula CONSTRAINT , Se utiliza en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar índices.
Nota 5: CHARACTER SET NONE COLLATE NONE Sirve para seleccionar la codificacion de caracteres en el ejemplo no seleccione ningún tipo.
Clic para agrandar Imagen
En la imagen se ve una pequeña leyenda donde Parent es la tabla padre y Child la tabla hija.
Ahora para que observemos que el código SQL es muy similar lo haremos en Mysql Server
(Forma de hacerlo Mysql)
CREATE TABLE `fabricantes` (
`CODIGO` int(11) NOT NULL,
`NOMBRE` varchar(100) default NULL,
PRIMARY KEY (`CODIGO`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `articulos` (
`CODIGOART` int(11) NOT NULL,
`NOMBRE` varchar(100) default NULL,
`PRECIO` int(11) default NULL,
`CODFRABICANTE` int(11) NOT NULL,
PRIMARY KEY (`CODIGOART`,`CODFRABICANTE`),
KEY `CODFRABICANTE` (`CODFRABICANTE`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `articulos`
ADD CONSTRAINT `articulos_ibfk_1` FOREIGN KEY (`CODFRABICANTE`) REFERENCES `fabricantes` (`CODIGO`) ON DELETE CASCADE ON UPDATE CASCADE;
(Forma estandar de codificar las tablas Mysql tambien reconocera este código como estandar SQL)
CREATE TABLE FABRICANTES(
CODIGO INTEGER NOT NULL ,
NOMBRE VARCHAR( 100 )
);NOMBRE VARCHAR( 100 )
ALTER TABLE FABRICANTES ADD CONSTRAINT PKFABRICANTES PRIMARY KEY ( CODIGO ) ;
ALTER TABLE fabricantes ENGINE = InnoDB;
CREATE TABLE ARTICULOS(
CODIGOART INTEGER NOT NULL ,
NOMBRE VARCHAR( 100 ) ,
PRECIO INTEGER,
CODFRABICANTE INTEGER NOT NULL
);NOMBRE VARCHAR( 100 ) ,
PRECIO INTEGER,
CODFRABICANTE INTEGER NOT NULL
ALTER TABLE ARTICULOS ADD CONSTRAINT PKARTICULOS PRIMARY KEY ( CODIGOART, CODFRABICANTE ) ;
ALTER TABLE articulos ENGINE = InnoDB
ALTER TABLE `articulos` ADD FOREIGN KEY ( `CODFRABICANTE` ) REFERENCES `informatica`.`articulos` (
ALTER TABLE `articulos` ADD FOREIGN KEY ( `CODFRABICANTE` ) REFERENCES `informatica`.`articulos` (
`CODFRABICANTE`
) ON DELETE CASCADE ON UPDATE CASCADE ;Nota 1: Para trabajar con relaciones en Mysql siempre debemos utilizar InnoDB para dar soporte a la integridad referencial.
Nota 2: Si nos fijamos vale lo mismo escribrir int o integer (recomiendo utilizar integer ya que otras bases de datos no soportan int abreviado y nos podemos mal acostumbrar)
Nota 3: A diferencia de Firebird (CHARACTER SET NONE NOT NULL COLLATE NONE) en mysql utilizamos DEFAULT CHARSET=latin1; (en ambos casos el motor asumio esa codificacion por defecto ya que yo no seleccione ningun tipo por lo que asumiremos que son sus valores por defecto.
Nota 2: Si nos fijamos vale lo mismo escribrir int o integer (recomiendo utilizar integer ya que otras bases de datos no soportan int abreviado y nos podemos mal acostumbrar)
Nota 3: A diferencia de Firebird (CHARACTER SET NONE NOT NULL COLLATE NONE) en mysql utilizamos DEFAULT CHARSET=latin1; (en ambos casos el motor asumio esa codificacion por defecto ya que yo no seleccione ningun tipo por lo que asumiremos que son sus valores por defecto.
Clic para ampliar
En el siguiente tutorial realizare los 4 operaciones básicas de Insert, Delete, Update y Select....
ir a la segunda Parte
ir a la segunda Parte