Base de datos

Buenas noches tengo una pregunta es que ya me he demorado mucho tiempo tratando de hacer esto pero no puedo bueno al grano, tengo dos tablas unas se llama casas que se compune por un: id_casa, estrato, dirección y otra que se llama habitante que se compone por Id_habitante nombre apellido edad, pero la verdad he intentado de mil maneras y no las he podido relacionar puesto que hay mucha redundancia entre las tablas, estaba pensando en una relación de varios a varios pero no se por favor necesito ayuda.
Respuesta
1
En primer lugar, no veo la redundancia que comentas en las tablas, creo que los atributos están bien definidos y delimitados.
Evidentemente, depende del contexto que quieras dar al dominio de la base de datos. Si pretendes hacer una relación M:N (varios a varios); esto es, que una casa pueda tener varios habitantes y que un habitante pueda tener varias casas, necesitarás una tabla intermedia que contenga las claves principales, de forma que cada registro en ellas indique una relación entre un habitante y una casa, pudiendo tener tantos registros como combinaciones se produzcan.
Si prefieres realizar una relación 1:N (cada casa puede tener varios habitantes, pero cada habitante sólo puede tener una casa), simplemente habría que propagar la clave de la tabla Casa a la tabla Habitante, quedando ésta última configurada así:
Id_habitante (clave principal), nombre, apellido, edad, id_casa (clave ajena).
Vistos los nombres, yo vería más lógico esta última opción, ya que el término "habitante" da la sensación de una cardinalidad 1:N (es lógico que un habitante HABITE sólo en una casa (otra cosa es que la relación fuera "POSEE")).
Si perfecto le entiendo de hecho suena más lógico que un habitante pertenezca solamente a una casa, mi duda era puesto que en la tabla habitantes luego de hacer esta relación de 1:m para colocar varios habitantes digamos cuatro en la tabla habitantes el id_casa se repetía cuatro veces por decir algo id casa 1, ahí era la redundancia que veía, y puesto que el i_D habitante se repite en todas las casas eso me llevo a pensar en la relación de muchos a muchos pero pues haré lo que ud me inidico es decir hacer la relación de 1:M, si es posible una ultima aclaración, me serviría muchísimo muchas gracias. Me Aclaro mucho.
En realidad eso no se considera redundancia, ya que solamente se trata de un índice que hace referencia a otra tabla (redundancia sería si pusieras todos los datos de la casa en la tabla de habitantes (ahí se repetirían innecesariamente 4 veces los mismos datos, mientras que de esta otra forma, solamente hacemos 4 veces referencia a un único registro de datos).
Para realizar la relación 1:M, únicamente tienes que hacer una "propagación de clave"; es decir, coger la clave de la tabla con cardinalidad 1 y copiarla en la tabla con cardinalidad N.
En este caso, quedaría así:
Casa --> id_casa, estrato, dirección
Habitante --> id_habitante, nombre, apellido, edad, id_casa.
Cuando quieras consultar los datos de la casa de un habitante, basta con conectar las dos tablas mediante el campo id_casa.
Digamos que "casa" sería como un directorio. Te pongo un ejemplo: cada casa tiene un código postal. Las dos primeras cifras indican la ciudad, así pues, no necesitas indicar la ciudad, ya que a partir del código postal puedes consultar otra tabla que contenga una lista de ciudades con sus respectivos códigos: reduces la redundancia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas