[Php-avanzado] Tablas ClasificadosMiramar ( I`m Back !!! )
Ezequiel Mujica
ezequielmujica en gmail.com
Dom Oct 18 22:57:18 ARST 2009
Hola Leo... no me perdÃ... pero los tiempos que tengo son mÃnimos :S
Van mis comentarios intercalados y las tablas corregidas en adjunto ...
Saludos, Ezequiel
> CREATE TABLE provincia (
> idprovincia INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> nombre VARCHAR(100) NULL,
> PRIMARY KEY(idprovincia)
> )
> TYPE=InnoDB;
>
> CREATE TABLE nivelacceso (
> idnivelacceso INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> nivel CHAR NULL,
> PRIMARY KEY(idnivelacceso)
> )
> TYPE=InnoDB;
>
> CREATE TABLE rubro (
> idrubro INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> nombre VARCHAR(80) NULL,
> destacado CHAR(1) NULL,
> imagen VARCHAR(150) NULL,
> PRIMARY KEY(idrubro)
> )
> TYPE=InnoDB;
>
> CREATE TABLE xxx (
> idxxx INT NOT NULL,
> palabra VARCHAR(25) NULL,
>
> // Dale un ancho mayor, para poder incluir alguna frase o comodines para
> tratar como expresiones regulares.
>
* // OK, LE DI 200 DE ANCHO, ESPERO QUE ALCANCE :D*
>
> PRIMARY KEY(idxxx)
> )
> TYPE=InnoDB;
>
> CREATE TABLE tipos_publicidad (
> idtipos_publicidad INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> tipo VARCHAR(5) NULL,
>
> // Solo 5??? g-r-a-t-i-s son 6 letras y ya no cabe... ni hablar de tipo
> c-o-m-e-r-c-i-o El espacio en disco es muy barato!
>
*// ES VERDAD, PENSABA CODIFICARLO... PERO VISTO LOS COMENTARIOS DECIDI
DARLE ALGO MAS DE ESPACIO.*
>
> PRIMARY KEY(idtipos_publicidad)
> )
> TYPE=InnoDB;
>
> CREATE TABLE moneda (
> idmoneda INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> moneda VARCHAR(30) NULL,
> PRIMARY KEY(idmoneda)
> )
> TYPE=InnoDB;
>
> CREATE TABLE estado_aviso (
> idestado_aviso INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> estado VARCHAR(10) NULL,
> PRIMARY KEY(idestado_aviso)
> )
> TYPE=InnoDB;
>
> CREATE TABLE empresas (
> idempresa INT NOT NULL AUTO_INCREMENT,
> nombre VARCHAR(100) NOT NULL,
> domicilio VARCHAR(100) NULL,
> email VARCHAR(80) NULL,
> telefono VARCHAR(50) NULL,
> celular VARCHAR(50) NULL,
> PRIMARY KEY(idempresa)
> )
> TYPE=InnoDB;
>
> CREATE TABLE usuarios_root (
> idusuarios_root INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> nivelacceso_idnivelacceso INTEGER UNSIGNED NOT NULL,
> nombre VARCHAR(100) NULL,
> apellido VARCHAR(100) NULL,
> login VARCHAR(30) NULL,
> pass VARCHAR(30) NULL,
> email VARCHAR(100) NULL,
> habilitado BOOL NULL,
> PRIMARY KEY(idusuarios_root, nivelacceso_idnivelacceso),
>
> // Esta clave doble te va a dar varios dolores de cabeza. Por qué la
> clave no es simplemente idusuarios_root??? Asà los id de usuario son
> únicos.
>
*// ES VERDAD... CORREGIDO...*
>
> INDEX usuarios_root_FKIndex1(nivelacceso_idnivelacceso),
> FOREIGN KEY(nivelacceso_idnivelacceso)
> REFERENCES nivelacceso(idnivelacceso)
> ON DELETE NO ACTION
> ON UPDATE CASCADE
> )
> TYPE=InnoDB;
>
> CREATE TABLE localidad (
> idlocalidad INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> provincia_idprovincia INTEGER UNSIGNED NOT NULL,
> nombre VARCHAR(80) NULL,
> codpostal VARCHAR(10) NULL,
> PRIMARY KEY(idlocalidad),
> INDEX localidad_FKIndex1(provincia_idprovincia),
> FOREIGN KEY(provincia_idprovincia)
> REFERENCES provincia(idprovincia)
> ON DELETE NO ACTION
> ON UPDATE CASCADE
> )
> TYPE=InnoDB;
>
> CREATE TABLE publicidad (
> idpublicidad INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> rubro_idrubro INTEGER UNSIGNED NOT NULL,
> empresas_idempresa INT NOT NULL,
> tipos_publicidad_idtipos_publicidad INTEGER UNSIGNED NOT NULL,
> nombre VARCHAR(100) NULL,
> largo SMALLINT UNSIGNED NULL,
> ancho SMALLINT UNSIGNED NULL,
>
> // Que largo y ancho se limiten solo a 256 suena a muy poco... supongo
> que ahà irá una medida en pÃxeles.
>
*// CORREGIDO, LA VERDAD NO ME DI CTA. DE LA LIMITACION DE LOS 256..
PASADO A INT.*
>
> url VARCHAR(100) NULL,
> path VARCHAR(100) NULL,
> ubicacion VARCHAR(30) NULL,
> impresiones INTEGER UNSIGNED NULL,
> clics INTEGER UNSIGNED NULL,
> PRIMARY KEY(idpublicidad, rubro_idrubro, empresas_idempresa,
> tipos_publicidad_idtipos_publicidad),
> INDEX publicidad_FKIndex1(rubro_idrubro),
> INDEX publicidad_FKIndex2(empresas_idempresa),
> INDEX publicidad_FKIndex3(tipos_publicidad_idtipos_publicidad),
> FOREIGN KEY(rubro_idrubro)
> REFERENCES rubro(idrubro)
> ON DELETE CASCADE
> ON UPDATE CASCADE,
> FOREIGN KEY(empresas_idempresa)
> REFERENCES empresas(idempresa)
> ON DELETE CASCADE
> ON UPDATE CASCADE,
> FOREIGN KEY(tipos_publicidad_idtipos_publicidad)
> REFERENCES tipos_publicidad(idtipos_publicidad)
> ON DELETE NO ACTION
> ON UPDATE CASCADE
> )
> TYPE=InnoDB;
>
> CREATE TABLE usuario (
> idusuario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> localidad_idlocalidad INTEGER UNSIGNED NOT NULL,
> nombre VARCHAR(100) NOT NULL,
> apellido VARCHAR(100) NOT NULL,
> fecha_nac DATE NULL,
> login VARCHAR(25) NOT NULL,
> email VARCHAR(100) NOT NULL,
> pass VARCHAR(25) NOT NULL,
> habilitado BOOL NOT NULL,
> domicilio VARCHAR(30) NULL,
> telefono VARCHAR(25) NULL,
> celular VARCHAR(25) NULL,
> PRIMARY KEY(idusuario),
> INDEX usuario_FKIndex1(localidad_idlocalidad),
> FOREIGN KEY(localidad_idlocalidad)
> REFERENCES localidad(idlocalidad)
> ON DELETE NO ACTION
> ON UPDATE CASCADE
> )
> TYPE=InnoDB;
>
> CREATE TABLE aviso (
> idaviso INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> usuario_idusuario INTEGER UNSIGNED NOT NULL,
> rubro_idrubro INTEGER UNSIGNED NOT NULL,
> moneda_idmoneda INTEGER UNSIGNED NOT NULL,
> estado_aviso_idestado_aviso INTEGER UNSIGNED NOT NULL,
> titulo VARCHAR(50) NOT NULL,
> detalle TEXT NOT NULL,
> precio FLOAT NULL,
> stock INTEGER UNSIGNED NULL,
> alta DATE NULL,
> baja DATE NULL,
> visitas INTEGER UNSIGNED NULL DEFAULT 0,
> habilitado BOOL NULL,
> destacados INTEGER UNSIGNED ZEROFILL NULL DEFAULT 000,
> prioridad SMALLINT UNSIGNED NULL,
> PRIMARY KEY(idaviso, usuario_idusuario, rubro_idrubro,
> moneda_idmoneda, estado_aviso_idestado_aviso),
> INDEX aviso_FKIndex1(usuario_idusuario),
> INDEX aviso_FKIndex2(rubro_idrubro),
> INDEX aviso_FKIndex3(moneda_idmoneda),
> INDEX aviso_FKIndex4(estado_aviso_idestado_aviso),
> FOREIGN KEY(usuario_idusuario)
> REFERENCES usuario(idusuario)
> ON DELETE CASCADE
> ON UPDATE CASCADE,
> FOREIGN KEY(rubro_idrubro)
> REFERENCES rubro(idrubro)
> ON DELETE CASCADE
> ON UPDATE CASCADE,
> FOREIGN KEY(moneda_idmoneda)
> REFERENCES moneda(idmoneda)
> ON DELETE NO ACTION
> ON UPDATE CASCADE,
> FOREIGN KEY(estado_aviso_idestado_aviso)
> REFERENCES estado_aviso(idestado_aviso)
> ON DELETE NO ACTION
> ON UPDATE CASCADE
> )
> TYPE=InnoDB;
>
> CREATE TABLE fotos (
> idfoto INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
> aviso_estado_aviso_idestado_aviso INTEGER UNSIGNED NOT NULL,
> aviso_moneda_idmoneda INTEGER UNSIGNED NOT NULL,
> aviso_rubro_idrubro INTEGER UNSIGNED NOT NULL,
> aviso_usuario_idusuario INTEGER UNSIGNED NOT NULL,
> aviso_idaviso INTEGER UNSIGNED NOT NULL,
>
> // Pues no... con solo el aviso_idaviso y usando la relación tenés el
> estado, la moneda, el rubro y el usuario. Estos 4 campos no van acá.
>
* // CORREGIDO A MANOPLA... LA HERRAMIENTA CASE ESTABA EMPERRADA EN NO
DEJARME SACAR LOS DEMAS CAMPOS...*
>
> path VARCHAR(100) NULL,
> PRIMARY KEY(idfoto, aviso_estado_aviso_idestado_aviso,
> aviso_moneda_idmoneda, aviso_rubro_idrubro, aviso_usuario_idusuario,
> aviso_idaviso),
> INDEX fotos_FKIndex1(aviso_idaviso, aviso_usuario_idusuario,
> aviso_rubro_idrubro, aviso_moneda_idmoneda,
> aviso_estado_aviso_idestado_aviso),
> FOREIGN KEY(aviso_idaviso, aviso_usuario_idusuario,
> aviso_rubro_idrubro, aviso_moneda_idmoneda,
> aviso_estado_aviso_idestado_aviso)
> REFERENCES aviso(idaviso, usuario_idusuario, rubro_idrubro,
> moneda_idmoneda, estado_aviso_idestado_aviso)
> ON DELETE NO ACTION
> ON UPDATE NO ACTION
> )
> TYPE=InnoDB;
>
>
> Saludos!
>
> PD: prometo responder más rápido el siguiente.
> --
>
> Leonardo Tadei
> leonardot en pegasusnet.com.ar
> http://blog.pegasusnet.com.ar
> Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/private/php-avanzado/attachments/20091018/82f89ff1/attachment.htm
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : clasificadosmiramar_18.10.09.sql
Tipo : text/x-sql
Tamaño : 5729 bytes
Descripción: no disponible
Url : http://www3.fi.mdp.edu.ar/cgi-bin/mailman/private/php-avanzado/attachments/20091018/82f89ff1/attachment.bin
Más información sobre la lista de distribución Php-avanzado