alanezz / Syllabus-2019-1

26 stars 13 forks source link

Región con Parque y Región con Viñas #81

Closed hbkim94 closed 5 years ago

hbkim94 commented 5 years ago

Hola!

Tengo una duda con respecto a llaves foráneas para este caso. Si bien tanto regiones-parques y regiones-viñas son de relación 1:N, no sé si sea correcto poner el id de región como llave foránea para ambas o si podría generarse alguna irregularidad al hacer eso.

Edit: Vi que se podía usar la misma llave foránea pero con "distintos nombres" para los constraint, pero no estoy muy segura a qué se refiere eso. Sería bakán si me lo pudieran aclarar.

De antemano gracias!

ppotin commented 5 years ago

Hola! Cómo bien dices puedes usar la misma llave foránea en dos tablas. En realidad lo que estas haciendo es referenciar a la misma columna id de la tabla regiones en la tabla parques y en la tabla viñas. Ahora bien, al crear las tablas sí puedes llamar de la misma manera a esa llave foránea y no habría ningún problema en la base de datos. Sin embargo, no es buena practica en tu modelación ya que podría llevarte a confusiones futuras. Un ejemplo de lo que podrías hacer seria lo siguiente,

CREATE TABLE Parques(
  id_parque int, id_region_p int,
  PRIMARY KEY(id_parque),
  FOREIGN KEY(id_region_p) REFERENCES Regiones(id),
)
CREATE TABLE Viñas(
  id_viña int, id_region_v int,
  PRIMARY KEY(id_viña),
  FOREIGN KEY(id_region_v) REFERENCES Regiones(id),
)

En este caso la columna id de la tabla regiones es referenciada con un nombre diferente en las dos restricciones evitando confusiones.

Espero que te haya quedado claro! Saludos!

hbkim94 commented 5 years ago

Me quedó súper claro, muchas gracias : )