[Php-avanzado] Leo: A ver que te parece esto...

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Vie Nov 27 11:13:47 ARST 2009


Hola Carolina,

	ahora los votos están bien.

	Lo de "no me di cuenta y me quedó en la cabeza el funcionamiento q
habias planteado anteriormente." se me escapa: la versión que tenía una
sola tabla de votos, tenía un discriminador que era clave foránea del
tipo de cosa, pero no un "voto" entero. La idea era tener un
"tipo_de_cosa" y no un "tipo_de_voto".

	Mandame así como está pasado en limpio para archivarlo como la
normalización de tu proyecto.

	Seguimos!

El vie, 27-11-2009 a las 09:47 -0300, Silverzero escribió:
> 
> 
> 2009/11/22 Leonardo Tadei - Pegasus Tech Supply
> <leonardot en pegasusnet.com.ar>
>         Hola Carolina,
>         
>         El vie, 13-11-2009 a las 00:35 -0300, Silverzero escribió:
>         > ok, porque presentía la posibilidad de que podría
>         mamarrachear, no
>         > borré las tablas anteriores, asi que lo dejo como antes, y
>         ya que
>         > estamos para seguir con la linea dejo las tablas de votos
>         > tradicionales, asi no me hago lío y listo...
>         
>         
>                Ok.
>         
>         > y agregué la tabla "publico" (id, publico) para poner 2
>         registros:
>         > adulto, niño y le agregue un campo refiriendo a esto a cada
>         tabla de
>         > evento, actividad y lugar.
>         
>         
>                Carolina: volviste a modificar los requerimientos
>         entonces???
>                Así no vas a terminar más!!!
>                Mandame los requerimientos nuevos en los que se
>         mencione al Público y
>         sus tipos para poder evaluar las nuevas tablas.
>         
>                Por otra parte, te sugiero que _no_ hagas este cambio
>         ahora, y sigas
>         con tu enorme tesis sin agregarle cosas nuevas.
>                Ya tendrás tiempo de hacer la versión 2, la 3 y todas
>         las que quieras.
>                Carolina!!!!!!!!!!!!!!!!!!
>         
>         > Muchas gracias nuevamente, y disculpame por favor Leo que
>         tengas que
>         > revisar todo a cada rato...acá van:
>         
>         
>                No es molestia.
>                Yo anduve con lag por las VII Jornadas de Software
>         Libre...
>         
>                En esta corrección, voy a hacer de cuenta que no hay
>         referencia al
>         Público. Ok?
> 
> Oki doki!
> 
>         
>         
>         > -- phpMyAdmin SQL Dump
>         > -- version 2.11.9.5
>         > -- http://www.phpmyadmin.net
>         > --
>         > -- Servidor: localhost
>         > -- Tiempo de generación: 13-11-2009 a las 01:32:26
>         > -- Versión del servidor: 5.0.81
>         > -- Versión de PHP: 5.2.9
>         >
>         > SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
>         >
>         > --
>         > -- Base de datos: `salimas_sitio`
>         > --
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `actividades`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `actividades` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `fecha` date NOT NULL,
>         >   `desde` date NOT NULL,
>         >   `hasta` date NOT NULL,
>         >   `horario` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `titulo` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `descripcion` text collate utf8_unicode_ci NOT NULL,
>         >   `imagen` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `url` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `precio` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `id_visitante` int(11) NOT NULL,
>         >   `id_lugar` int(11) NOT NULL,
>         >   `id_stat` int(2) NOT NULL,
>         
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=2 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `actividadesXcat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `actividadesXcat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `id_act` int(11) NOT NULL,
>         >   `id_cat` int(11) NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         
>         
>                Ok. Esto es una relación muchos a muchos de las
>         Actividades con las
>         Categrías.
>         
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `actividadesXsubcat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `actividadesXsubcat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `id_act` int(11) NOT NULL,
>         >   `id_subcat` int(11) NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         
>         
>                Ok. Esto es una relación muchos a muchos de las
>         Actividades con las
>         SubCategrías.
>         
>         
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `actividades_cat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `actividades_cat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `nombre` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         
>         
>                Ok. Las Categorías...
>         
>         > --
>         > -- Estructura de tabla para la tabla `actividades_subcat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `actividades_subcat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `id_actividad_cat` int(11) NOT NULL,
>         >   `nombre` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         
>         
>                Ok. Las Subcategorías ahora tienen una Categoría a la
>         que hacen
>         referencia.
>         
>                Yo sigo sin encontrarle sentido a que una Actividad
>         pueda tener una
>         Categoría y no una Subcategoría, en vez de usar el simplísimo
>         modelo de
>         tener siempre una Subcategoría para las Actividades, pero que
>         no lo
>         entienda no significa nada.
>                La normalización, en el escenario que vos planteás en
>         tu SRS está bien.
> 
> Entiendo lo que decís, lo que pasa es que en cada publicación van a
> figurar como links todas las subcategorías en las que dicha
> publicación fue puesta, y si entre esas hubiera una categoría sin
> subcategoría (o sea, una subcategoría con nombre igual a la
> categoría), figuraría en el listado ese y sería redundante...(aunque
> podría filtrar ese listado para que no muestre una subcategoría si
> tiene el mismo nombre que categoría, pero no sería complicarla mas?).
> Ademas cada link va a funcionar como filtro de busqueda por dicha
> subcategoria y si hubiera una subcategoria=categoria, filtraría igual
> que con categoría y sería redundante también.
> 
> 
>         
>         > --
>         > -- Estructura de tabla para la tabla `diccionario`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `diccionario` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `frase` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=38 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `eventos`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `eventos` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `fecha` date NOT NULL,
>         >   `desde` date NOT NULL,
>         >   `hasta` date NOT NULL,
>         >   `horario` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `titulo` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `descripcion` text collate utf8_unicode_ci NOT NULL,
>         >   `imagen` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `url` varchar(100) collate utf8_unicode_ci NOT NULL,
>         >   `precio` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `id_visitante` int(11) NOT NULL,
>         >   `id_lugar` int(11) NOT NULL,
>         >   `id_stat` int(2) NOT NULL,
>         
>         
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=4 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `eventosXcat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `eventosXcat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `id_eve` int(11) NOT NULL,
>         >   `id_cat` int(11) NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `eventosXsubcat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `eventosXsubcat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `id_eve` int(11) NOT NULL,
>         >   `id_subcat` int(11) NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `eventos_cat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `eventos_cat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `nombre` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `eventos_subcat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `eventos_subcat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `id_evento_cat` int(11) NOT NULL,
>         >   `nombre` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         
>         
>                Ok para los Eventos...
>         
>         > --
>         > -- Estructura de tabla para la tabla `localidades`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `localidades` (
>         >   `cod_loc` int(4) NOT NULL auto_increment,
>         >   `cod_prov` int(2) NOT NULL,
>         >   `desc` varchar(31) collate utf8_unicode_ci NOT NULL,
>         >   PRIMARY KEY  (`cod_loc`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=2383 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `lugares`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `lugares` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `fecha` date NOT NULL,
>         >   `nombre` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `direccion` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `telefono` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `email` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `horario` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `precio` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `descripcion` text collate utf8_unicode_ci NOT NULL,
>         >   `imagen` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `url` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `id_visitante` int(11) NOT NULL,
>         >   `cod_loc` int(4) NOT NULL,
>         >   `id_stat` int(2) NOT NULL,
>         
>         
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=11 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `lugaresXcat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `lugaresXcat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `id_lug` int(11) NOT NULL,
>         >   `id_cat` int(11) NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `lugaresXsubcat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `lugaresXsubcat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `id_lug` int(11) NOT NULL,
>         >   `id_subcat` int(11) NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `lugares_cat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `lugares_cat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `nombre` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `lugares_subcat`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `lugares_subcat` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `id_lugar_cat` int(11) NOT NULL,
>         >   `nombre` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         
>         
>                Ok para los lugares.
>         
>         > --
>         > -- Estructura de tabla para la tabla `provincias`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `provincias` (
>         >   `cod_prov` int(2) NOT NULL,
>         >   `desc` varchar(30) collate utf8_unicode_ci NOT NULL,
>         >   PRIMARY KEY  (`cod_prov`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci;
>         >
>         
>         
>                [borré las cosas que sobraban acá...]
> 
> ok!
>  
> 
>         
>         
>         > --
>         > -- Estructura de tabla para la tabla `status`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `status` (
>         >   `id` int(11) NOT NULL,
>         >   `stat` varchar(10) collate utf8_unicode_ci NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `visitantes`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `visitantes` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `fecha` date NOT NULL,
>         >   `nombres` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `apellidos` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `alias` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `email` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `pass` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `avatar` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `ocupacion` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `about` text collate utf8_unicode_ci NOT NULL,
>         >   `intereses` text collate utf8_unicode_ci NOT NULL,
>         >   `url` varchar(50) collate utf8_unicode_ci NOT NULL,
>         >   `id_stat` int(2) NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8
>         COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=3 ;
>         >
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `votos_actividades`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `votos_actividades` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `voto` int(11) NOT NULL,
>         >   `puntaje` int(11) NOT NULL,
>         >   `id_ref` int(11) NOT NULL,
>         >   `id_tipo` int(11) NOT NULL,
>         >   `id_visitante` int(11) NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         
>         
>                Por qué voto es un entero?
>                Mejor dicho: para qué hay un campo "voto"???
>         
>         > -- --------------------------------------------------------
>         >
>         > --
>         > -- Estructura de tabla para la tabla `votos_eventos`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `votos_eventos` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `voto` int(11) NOT NULL,
>         >   `puntaje` int(11) NOT NULL,
>         >   `id_ref` int(11) NOT NULL,
>         >   `id_tipo` int(11) NOT NULL,
>         >   `id_visitante` int(11) NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         
>         
>                Idem anterior
>         
>         > --
>         > -- Estructura de tabla para la tabla `votos_lugares`
>         > --
>         >
>         > CREATE TABLE IF NOT EXISTS `votos_lugares` (
>         >   `id` int(11) NOT NULL auto_increment,
>         >   `voto` int(11) NOT NULL,
>         >   `puntaje` int(11) NOT NULL,
>         >   `id_ref` int(11) NOT NULL,
>         >   `id_tipo` int(11) NOT NULL,
>         >   `id_visitante` int(11) NOT NULL,
>         >   PRIMARY KEY  (`id`)
>         > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
>         > AUTO_INCREMENT=1 ;
>         
>         
>                idem anterior.
>         
>         
>                Me da le leve sensación de que la estructura para los
>         votos (la de cada
>         tabla, no hay problema en usar tablas separadas) no se
>         corresponde con
>         el funcionamiento...
>         
>                También hacés referencia a un id_tipo en las 3 tablas
>         pero ahora no hay
>         tipo, según decís al principio de este mail.
> 
> si, me equivoqué ahi, no me di cuenta y me quedó en la cabeza el
> funcionamiento q habias planteado anteriormente.
> 
> Entonces las 3 tablas de votos la dejamos asi:
> 
> CREATE TABLE IF NOT EXISTS `votos_**********` (
> >   `id` int(11) NOT NULL auto_increment,
> >   `puntaje` int(11) NOT NULL,
> >   `id_ref` int(11) NOT NULL,
> >   `id_visitante` int(11) NOT NULL,
> >   PRIMARY KEY  (`id`)
> > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
> > AUTO_INCREMENT=1 ;
> 
>         
>                Si no cambiás los requerimeintos, para tu SRS original
>         las tablas están
>         bien, excepto las de los votos.
>         
>                Ponete YA a escribir la parte que hace funcionar esto,
>         y mientras
>         charlamos de los votos. Asumo que ya tenés armadas las
>         pantallas, los
>         formularios y la estética, y solo te falta conectarlos con las
>         tablas,
>         porque si no vas a estar muy apretada para llegar a tiempo con
>         todo
>         esto...
> 
> Si ya tengo bastante de la estética, tengo algunas funciones y otras
> cositas.
>  
> 
>         
>                Seguimos!!!
>                Dale que falta poco!!!
>         
>         
>         
> 
> Gracias Leo!
> Saludos! 


-- 

Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado