Question:
Date: 15-02-2019 09:12:27
(In Spanish)
hoy me he dado cuenta de un detalle, y me gustaría que alguien con más conocimientos que yo me pudiera aclarar dudas.
Me he dado cuenta que las claves foráneas no funcionan de la misma manera si las defino en una tabla o en otra, por ejemplo:
Si tenemos 3 tablas:
usuarios
usuarios_roles
agencias
La tabla Usuarios guarda los datos personales, la de usuarios_roles, es donde le asigno el role que tendrá para permisos dentro de la aplicación y la de agencias es por así decirlo la oficina comercial del usuario.
La clave foránea por ejemplo... donde tendría que ponerla? en la tabla agencias? o en la tabla usuarios?
No funciona de la misma manera, por ejemplo, en la de usuarios_roles, tuve que poner una clave foránea que en un inicio tenía en la tabla usuarios pero al insertar un usuario siempre me daba error, y la cambié a la tabla usuarios_roles y funciona bien.
Si lo que quiero es que si se borra un usuario, se borre la agencia?, donde tendría que crear la clave? en la tabla usuarios o en la tabal de agencias? Votes: 0 - Answers: 5 - Views: 12 Share on: Google Facebook Twitter LinkedIn Link
Claves Foráneas, Foreing Key[Resolved]
Hola Compañeros,hoy me he dado cuenta de un detalle, y me gustaría que alguien con más conocimientos que yo me pudiera aclarar dudas.
Me he dado cuenta que las claves foráneas no funcionan de la misma manera si las defino en una tabla o en otra, por ejemplo:
Si tenemos 3 tablas:
usuarios
usuarios_roles
agencias
La tabla Usuarios guarda los datos personales, la de usuarios_roles, es donde le asigno el role que tendrá para permisos dentro de la aplicación y la de agencias es por así decirlo la oficina comercial del usuario.
La clave foránea por ejemplo... donde tendría que ponerla? en la tabla agencias? o en la tabla usuarios?
No funciona de la misma manera, por ejemplo, en la de usuarios_roles, tuve que poner una clave foránea que en un inicio tenía en la tabla usuarios pero al insertar un usuario siempre me daba error, y la cambié a la tabla usuarios_roles y funciona bien.
Si lo que quiero es que si se borra un usuario, se borre la agencia?, donde tendría que crear la clave? en la tabla usuarios o en la tabal de agencias? Votes: 0 - Answers: 5 - Views: 12 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 15-02-2019 17:26:36 Hola
Te dejo algunos link de la comunidad al respecto al tema.
Videotutorial » Instalación de MySQL Workbench, modelado (DER) de un BLOG y creación de bases de datos MySQL
DER con MySQL Workbench: ¿Cuál es el significado de los iconos de relación?
Videotutorial » El modelado DER (Diagrama Entidad Relación) desde cero
Espero que te sirvan como ayuda
Saludos Votes: 1 - Link answer -
Date: 15-02-2019 20:04:42 Hola la referencia se toma de la llave primaria por ejemplo
cada usuario tiene un rol ,entonces digamos que tenga estos datos en la tabla
tabla usuario
id_usuario -> llave primaria
id_rol ->llave foranea
nombre
tabla roles
id_rol ->llave primaria
tipo_rol
tabla agencia
id_agencia->primaria
id_usuario->foranea
agencia
seria
alter table usuarios add constraint RolUsu foreign key (id_rol) references roles (id_rol) on cascade delete on update delete
para la agencia
alter table agencia add constraint AgentUsu foreign key (id_usuario) references agencia (id_usuario) on cascade delete on update delete
es normal que te marque error ya que cada usuario tiene un rol si no hay un rol creado digamos creado va a dar a la nada.
la de agencia tiene usuarios por lo tanto tomaria refencia de usuarios
Votes: 0 - Link answer -
Date: 20-02-2019 22:29:20 Hola Fran la llave foranea apunta desde la tabla dependiente a la tabla principal o del dato dependiente al dato principal. Votes: 0 - Link answer
-
Date: 27-02-2019 08:20:26 En si en la entidad relacion siempre te muestra como va, y por si no lo has estudiado te comento, la recomendacion principal es en la tabla la llave y una tabla de relacion para ello, ejemplo:
usuarios
usuario_id (llave auto incrementable de la bd)
usuarios_idsys (llave para el sistema)
usuario_nombre
rol
rol_id (llave auto incrementable de la bd)
rol_idsys (llave para el sistema)
rol_nombre
usuarios_roles
usuarios_roles_id (llave auto incrementable de la bd)
usuarios_roles_rol (llave para el sistema)
usuarios_roles_usuario (llave para el sistema)
y asi puedes ocupar facilmente las llaves enlazadas sin problema, aguiliza las cosas, y sobre todo en una sola tabla tienes a la mano las cosas (si no necesitas informacion de rol y usuarios al mismo tiempo)
Saludos...
Stryfe™ Votes: 0 - Link answer -
Date: 24-03-2019 23:20:44 Hola a tod@s y gracias por vuestras respuestas...
al final lo solucioné poniendo como dato en la tabla de usuarios_roles NULL a las IDS,
Ernesto Esteves, cuando dices en tu ejemplo (llave para el sistema) a que te refieres?, me puedes explicar un poco más? tipo de dato y para que la usas? Votes: 0 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In