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

Silverzero silverzero.52 en gmail.com
Jue Nov 12 20:52:11 ARST 2009


Me hiciste pensar mucho, lo cual es bueno, cada vez estoy ampliando mi
visión normalizacionística...de a poco, pero ahi voy.

Ahora, con la aparición de esta tabla nueva que mencionaste para hacer la
conexión con los votos se me ocurrió implementarla para lo demás. Se podría
hacer una tabla de Categorias y después que referencien el Tipo, en vez de
tener una tabla de categorías para Eventos, otra para Actividades y otra más
para Lugares.

Ahora lo que me puse en duda es: será mejor hacer la tabla Categorias (id,
id_tipo, cat) y repetir los registros comunes entre por ejemplo, eventos y
actividades?...o será mejor hacer la tabla de Categorias con (id, cat) y
otra tabla que los relacione con (id, id_tipo, id_cat)?. También pasaría lo
mismo con las subcategorías, porque de hecho todas las subcategorias entre
eventos y actividades son las mismas.

Además sería más fácil para implementar el tema de SALI+ Kids, ya que podría
agregar en Tipos eventos_kids, actividades_kids, y lugares_kids y como
tambien usan las mismas categorias las referenciaría en Tipos_Cat
directamente, sin tener que crear nuevas tablas.

Después cuando llegue el momento de relacionar los
eventos/asctividades/lugares con las categorías tendría que solamente
apuntar a Categorías y no a la relación Tipos_Cat, cierto? Sería Eventos_Cat
(id, id_eve, id_cat) porque ya sabemos que es un evento no tendría sentido
mirar la relación...

La relación la necesitaría porque por ejemplo yo listo el menú de categorías
del sitio directamente desde la tabla para no tener que tirar cada botón a
mano...ahora por ejemplo lo listo haciendo una consulta para que me muestre
todos los registros de la tabla eventos_cat, actividades_cat y lugares_cat.
Y también para cuando quieran publicar se necesita.

Bueno ¿Qué opinás?

Acá te mando las tablas de cómo quedaría según este planteamiento (a las que
son relaciones les puse una "X", por ejemplo eventosXcat, porque el guión
bajo me confunde ya que lo uso para nombrar tablas sin relaciones tambien,
por eso trataba de buscarle otro nombre antes):

PD: Lo de que me preguntabas de la tabla votos que no era autoincremental
era porque estaba probando en el sitio un script de votos hechos en ajax que
venia con esa tabla y la tenia que usar asi para probar, pero ni me sirve
porque vota por ip, y yo necesito por usuario, y lo que me explicaste vos
tiene mucho mas sentido. =)

Ahi va!!
Gracias por tu super ayudas Leo!

-- phpMyAdmin SQL Dump
-- version 2.11.9.5
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 12-11-2009 a las 20:41:34
-- 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_act_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 `actividadesXsubcat`
--

CREATE TABLE IF NOT EXISTS `actividadesXsubcat` (
  `id` int(11) NOT NULL auto_increment,
  `id_act` int(11) NOT NULL,
  `id_act_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 `categorias`
--

CREATE TABLE IF NOT EXISTS `categorias` (
  `id` int(11) NOT NULL auto_increment,
  `cat` 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 `catXsubcat`
--

CREATE TABLE IF NOT EXISTS `catXsubcat` (
  `id` int(11) NOT NULL auto_increment,
  `id_cat` 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 `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_eve_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_eve_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 `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_lug_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_lug_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 `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;

-- --------------------------------------------------------

--
-- 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 `subcategorias`
--

CREATE TABLE IF NOT EXISTS `subcategorias` (
  `id` int(11) NOT NULL auto_increment,
  `id_cat` int(11) NOT NULL,
  `subcat` 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 `tipos`
--

CREATE TABLE IF NOT EXISTS `tipos` (
  `id` int(11) NOT NULL auto_increment,
  `tipo` varchar(50) collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
AUTO_INCREMENT=4 ;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `tiposXcat`
--

CREATE TABLE IF NOT EXISTS `tiposXcat` (
  `id` int(11) NOT NULL auto_increment,
  `id_tipo` 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 `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`
--

CREATE TABLE IF NOT EXISTS `votos` (
  `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 ;
------------ 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/20091112/5f65ce74/attachment.htm 


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