Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

otra forma de hacer este esquema de de base de datos

Estas en el tema de otra forma de hacer este esquema de de base de datos en el foro de Mysql en Foros del Web. Estoy intentando realizar un esquema de base de datos para la creacion de un tablon de venta de coches pero no consigo hacer bien la ...
  #1 (permalink)  
Antiguo 08/08/2011, 13:59
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
otra forma de hacer este esquema de de base de datos

Estoy intentando realizar un esquema de base de datos para la creacion de un tablon de venta de coches pero no consigo hacer bien la estructura yo realice las tablas y campos de esta manera pero claro no es la correcta si alguien me pudiera decir la manera correcta de hacerlo.

tabla_ciudad
id_ciudad .................... ciudades
1................................. boyaca
2.................................. bolivar
3 ...................................cauca
4 ...................................choco

marca_coche
id_marca....................... marca ................. id_ciudad
1......................................renault.... .............................1
2......................................peugeot.... ............................1
3 ..................................... opel..................................... 1
4......................................renault ..................................2
5......................................peugeot.... ............................ 2
6....................................... opel..................................... 2

modelo_coche
id_modelo...................... modelo......... id_marca
1...................... ..............laguna..........................1
2 .......................................clio ............................1
3.........................................expres.. .....................1
4........................................407...... .......................2
5.........................................607..... ...................... 2
6....................................... 207.............................. 2
7....................................... vectra........................3
8.........................................zafira.. ...................... 3
9.......................................... corsa........................3

la tabla de las marcas como veis tengo que repetir constantemente las marcas para diferenciarlo de las diferentes ciudades no hay alguna manera mas correcta de hacer esto?

Última edición por roboty; 08/08/2011 a las 14:04
  #2 (permalink)  
Antiguo 08/08/2011, 15:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: otra forma de hacer este esquema de de base de datos

Esa es la manera correcta. Lo que puede no existir es ese ID numérico que usas, porque el verdadero identificador de una empresa, y de un modelo no es ese.
Todo el resto surge de lo que se denomina normalización de bases de datos, y en tanto tu base cumpla con las 1FN, 2FN y 3FN, por más retorcido que te parezca, está bien hecho. SI lo que te molesta es lo larga que resulta una consulta bajo este tipo de esquemas mi sugerencia es que aprendas a ser paciente con eso, porque lo que ganas es mayor a lo que pierdes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/08/2011, 15:55
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: otra forma de hacer este esquema de de base de datos

gnzsoloyo gracias por tu aclaracion, pero tengo una duda para mostrar las diferentes consultas, imaginando que tengo otra tabla con la descripcion del coche esa tabla se llama tabla_anuncio con un campo descripcion y quiero mostrar la descripcion, solo la descripcion de todo los anuncios que haigan publicados del coche renaul laguna de la ciudad de boyoca
yo hice algo asin:

Código MySQL:
Ver original
  1. SELECT tabla_anuncio.descripcion
  2. FROM tabla_anuncio,tabla_ciudad,marca_coche,modelo_coche
  3. WHERE marca_coche.marca=renault
  4. modelo_coche.modelo=laguna
  5. tabla_ciudad.ciudades=boyaca

no se si es la manera correcta de hacerlo?
  #4 (permalink)  
Antiguo 08/08/2011, 16:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: otra forma de hacer este esquema de de base de datos

En términos generales, es correcto: Se necesita cruzar todas las tablas para obtener esa información porque tienes tres parámetros repartidos en tres tablas distintas, y lo que quieres conseguir está en la cuarta.
En estas situaciones la cosa se resuelve mayormente con la creación de vistas (VIEW), que son tablas virtuales basadas en una consulta estandarizada, y que a los efectos de la performance son mucho más funcionales.
En tu caso sería así:
Código MySQL:
Ver original
  1. CREATE OR REPLACE VIEW veravisos
  2. SELECT TA.descripcion
  3. FROM TA.tabla_anuncio, MC.marca,  MO.modelo, TC.ciudades
  4.     INNER JOIN tabla_ciudad TC ON TA.id_ciudad = TC.id_ciudad
  5.     INNER JOIN marca_coche MC ON TC.id_ciudad = MC.id_ciudad
  6.     INNER JOIN modelo_coche MO ON MC.id_modelo = MO.id_modelo;

Usando una vista definida más o menos así, para obtener lo que deseas simplemente sería:
Código MySQL:
Ver original
  1. SELECT descripcion
  2. FROM veravisos
  3.     marca = 'renault'
  4.     AND  modelo = 'laguna'
  5.     AND ciudades = 'boyaca'

Ten en cuenta que la vista debe responder a una consulta genérica, no debe incluir los valores a buscados. Esos se usan cuando realizas la consulta a la vista.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/08/2011, 16:27
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: otra forma de hacer este esquema de de base de datos

perdona puse mal la consulta era asin:
Código MySQL:
Ver original
  1. SELECT tabla_anuncio.descripcion
  2. FROM tabla_anuncio,tabla_ciudad,marca_coche,modelo_coche
  3. WHERE marca_coche.marca=renault
  4. modelo_coche.modelo=laguna
  5. tabla_ciudad.ciudades=boyaca
  6. marca_coche.id_marca=modelo_coche.id_modelo
  7. marca_coche.id_ciuda=tabla_ciudad.id_ciudad
  #6 (permalink)  
Antiguo 08/08/2011, 16:31
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: otra forma de hacer este esquema de de base de datos

a vale la consulta que me posteastes seria la correcta pero la mia no seria valida?
de todas formas me quedo con la tuya que que es mucho mas funcional gracias y saludos.
  #7 (permalink)  
Antiguo 08/08/2011, 19:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: otra forma de hacer este esquema de de base de datos

Lo que yo te postee era la forma de crear una vista...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, esquema, tabla, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:19.