[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