sábado, 16 de agosto de 2008

Comprendiendo la Integridad Referencial

En este pequeño tutorial tratare de explicar brevemente como funciona una integridad referencial (iremos de lo básico a lo más avanzado pero de apoco jeje)...

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.


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 )
);
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
);
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` (
`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.


Clic para ampliar

En el siguiente tutorial realizare los 4 operaciones básicas de Insert, Delete, Update y Select....

ir a la segunda Parte

miércoles, 13 de agosto de 2008

EspaBiblio Sistema de Gestión y Automatización de Bibliotecas

EspaBiblio es un sistema adaptado por mi (Se basa en OpenBiblio)... comencé con este proyecto a mediados del año 2005, luego el año 2007 estuvo congelado por falta de tiempo y recursos para mantener el proyecto, pero nuevamente esta online.... realmente he conseguido un buen proyecto.


Espabiblio nace bajo el alero de un sistema para gestión de Bibliotecas desarrollado en PHP y MySQL por Dave Stevens (Código Libre y gratuitito) de EE.UU. llamado OpenBiblio, específicamente de la versión o Relace 0.5.1, proyecto que ya lleva más de 4 años.

El nombre EspaBiblio quiere decir "Biblioteca En Español" y el desarrollo o la adaptación y continuación de OpenBiblio a espaBiblio la lleva a cabo Jorge Lara Cravero, Administrador de Linux y Web Master.

EspaBiblio es un sistema automatizado de gestión de biblioteca, incluye las funcionalidades de Circulación, Catalogación, Administración de staff, permisos de funcionarios, OPAC, Informes, Estadísticas, Impresión de Cartas, etiquetas, soporta la Importación en Formato estándar Bibliotecológico MARC o USMARC y clasificación de estatus, como disponible, prestado, en reparación agrega soporte para reservas, etc..

Entre las nuevas funcionalidades de EspaBiblio en Su versión 2.0 se agrega la funcionalidad de crear las etiquetas con códigos de barras automaticamente.

Una vez catalogados los items solo es necesario ir a la pestaña reportes y generar las etiquetas (incluidos los codigos de barra).

Otra funcionalidad importante es la habilitación de recuperar la información de la Library of Congress (Biblioteca del Congreso) utilizando SRU (Search Retrival URL), que devuelve un formulario XML y el resultado se exporta automaticamente a EspaBiblio.

Como sus Bases de Datos están realizadas en MySQL soporta también exportación a formatos de Microsoft exel, word, SQL, LaTeX, CSV y XML.

La administración de la Biblioteca ofrece una interfaz intuitiva con un diseño de pestañas y barra lateral.

EspaBiblio puede ser instalado en Windows 98se, 2000, XP, 2003, Linux, Macintosh OS X, UNIX, en general cualquier sistema Operativo con soporte de Apache, PHP y MySQL.

Todo esto le ofrece una solución de bajo costo para la automatización de Bibliotecas, ya sean privadas, para escuelas, bibliotecas públicas, colecciones, etc.

¿Por qué EspaBiblio?

1. Es intuitiva y fácil de usar
2. Se Ajusta a los estándares
3. Requiere una sencilla administración y no se necesita experiencia
4. Está diseñado con las características requeridas por la mayoría de las bibliotecas, lo que la hace compatible con muchos flujos de trabajo

El código abierto amenaza a Microsoft

En su informe anual la compañía de Redmond advierte de la creciente amenaza que el software de código abierto supone para su modelo de negocio.

Micro$oft afirma que se enfrenta a una creciente presión por parte de los vendedores de código abierto, quienes, según Microsoft, roban sus ideas y se benefician de su propiedad intelectual.

“Una serie de empresas compiten con nosotros utilizando un modelo de negocio de código abierto modificando y distribuyendo software a usuarios a un coste nominal para después ganar dinero con servicios y productos complementarios”, dice el informe.

“Estas empresas no sostienen los costes de investigación y desarrollo del software. Algunas de estas compañías pueden aprovecharse de ideas de Microsoft que les ofrecemos de forma gratuita o con bajos royalties”.

Microsoft también señala en su informe anual que la comunidad de fuente abierta ha perjudicado su negocio, desarrollando copias con menos funciones de sus aplicaciones para luego venderlas a menor precio, forzando una bajada de los mismos.

Otras amenazas señaladas por la compañía incluyen copias ilegales, las relativas a la seguridad de su software y una intensa presión competitiva.

(fuente www.vnunet.es)

Nuevos ataques SQL (SQL Injection)

Las páginas web de China se han convertido en el objetivo de los hackers

Investigadores de F-Secure informan de que los atacantes están utilizando una vulnerabilidad SQL para infectar de código malicioso a páginas web. Después el código redirige al usuario a una página que intenta explotar una serie de vulnerabilidades del propio sistema del usuario e instalar malware.

“Con la mirada puesta en China estos días tiene sentido que los creadores de malware centren su atención en este tipo de páginas web”, dice F-Secure.

Otras compañías de seguridad también han recibido informes de ataques SQL, aunque se estima que menos de 4000 páginas web están actualmente infectadas

(Fuente www.vnunet.es)