Cita:
Iniciado por Geometra Hola, yo separaria usuarios de las demas tablas. respecto a la herencia que comentas no se i el termino cabe pero te recomendaria buscar sobre "Generalizacion y Especializacion" y claro su cardinalidad.
Hola Geometra, estuve leyendo sobre Generalizacion y Esppecializacion pero la verdad no me ayudo mucho, tengo conocimiento de OOP, lo que no se es como implementarlo correctamente en una BD (mas precisamente MySQL), y cuando conviene una u otra situacion, si fuese C++ no lo dudaria un segundo, crearia usuarios y heredaria a comerciantes, etc.
Cita:
Iniciado por gnzsoloyo; Básicamente, si no lo haces así, estarías desnormalizando la estructura de tablas, desperdiciando espacio de disco y creando un modelo de datos ineficiente.
Hola gnzsoloyo, para mi lo logico seria aplicar una estructura de herencia, pero eso en un lenguaje OOP, en Base de Datos desconozco que es lo que mas conviene a la larga, incluso no se como implementarlo tampoco.
Lo que se me ocurrio es hacer una Tabla USUARIOS, y otra COMERCIANTES, y en comerciantes poner un UsuarioID (clave foranea que apunte a USUARIOS).
Voy a abrir un tema en el foro de MySQL sobre esto porque me parece estoy haciendo lio.
Ya de entrada me esta dando miedo como me va quedando el diseño por normalizar tanto, te muestro lo que me quedo para agregar una simple direccion:
Asique por ejemplo si quiero obtener los Comercios de cierta ciudad supongo que voy a tener que hacer una consulta donde:
Busca las direcciones de los comercios en Comercios_has_Direcciones
Con esa direccion me fijo si tiene asociada alguna CalleConNumero o CalleConCalle
Con esa CalleConNumero me fijo la calle
Con esa calle me fijo la Localidad
De entrada no se me ocurre como hacerlo en menos de dos consultas (porque CalleConNumero y CalleConCalle me rompen un poco el esquema asique hasta ahi llego con INNER JOINS).
Pero ademas de eso, internamente supongo MySQL o el motor que sea tiene que pasar por 7 tablas. Asique ya ni se si es buena idea armar todo ese esquema o poner un campo CiudadID dentro de Comercios y listo.