New question

Question:

 
  0  
 
Date: 15-02-2019 09:12:27 (In Spanish)

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?
Tags: Database - MySQL - Question - SQL Votes: 0 - Answers: 5 - Views: 12 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  •  
  • 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
     
  •  
      0  
     
    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
 
frjcbbae garagebible.com