PostgreSQL - FOREIGN KEY

 
Vista:
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

FOREIGN KEY

Publicado por aldo (131 intervenciones) el 06/11/2015 00:55:32
Estoy intentando relacionar dos tablas pero me arroja este error:

1
there is no unique constraint matching given keys for referenced table "usuarios"
la idea es relacionarlas con las columnas id_especialidad

¿debo comenzar relacionandolas desde citas hacia usuarios? o viceversa?

ya que debe ser de uno a muchos, alli si estoy claro, pero me da el error mencionado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE citas
(
  id_cita serial NOT NULL,
  fecha date NOT NULL,
  id_paciente integer,
  id_especialidad integer,
  observacion text,
  CONSTRAINT citas_pkey PRIMARY KEY (id_cita),
  CONSTRAINT citas_id_especialidad_fkey FOREIGN KEY (id_especialidad)
      REFERENCES especialidad (id_especialidad) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT citas_id_paciente_fkey FOREIGN KEY (id_paciente)
      REFERENCES pacientes (id_paciente) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)


Y
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE usuarios
(
  id_usuario serial NOT NULL,
  id_especialidad integer,
  nombres character varying(30),
  apellidos character varying(30),
  email character varying(30),
  usuario_login text,
  usuario_pass text,
  CONSTRAINT usuarios_pkey PRIMARY KEY (id_usuario)
)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 14
Ha aumentado 1 puesto en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

FOREIGN KEY

Publicado por Rafael (21 intervenciones) el 06/11/2015 12:53:55
a ver aqui no estas relacionando las tablas mencionadas ... vaya que tus scripts no tienen muestran dicha relacion ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

FOREIGN KEY

Publicado por zendi (131 intervenciones) el 06/11/2015 18:33:23
hola bueno estoy tratando de realizarlo pero me da un error:

1
2
3
alter table citas id_especialidad_fkey FOREIGN KEY (id_especialidad)
      REFERENCES usuarios (id_especialidad) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio

FOREIGN KEY

Publicado por Julio (6 intervenciones) el 06/11/2015 23:36:24
Hola Aldo.
Creo que hay un fallo de concepto las tablas de relacionan por una clave primaria , o en algún vado por una clave única, en tu caso id_especialidad no es ni lo uno ni lo otro, de ahí el error.
Entonces dependiendo de lo que quieras hacer , o creas una tabla de especialidades y televisar tus tablas a través de la pk id_especi lidades, o bien , buscas otro tipo de relación.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

FOREIGN KEY

Publicado por aldo (131 intervenciones) el 06/11/2015 23:48:08
aqui esta el codigo para crear la relacion:
1
2
ALTER TABLE citas ADD CONSTRAINT citas_usuarios FOREIGN KEY (id_especialidad) REFERENCES usuarios (id_especialidad)
MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION;

pero es extraño ya que tengo varias tablas con foreign key y funcionan.

la de citas esta asi:
y funciona con la de pacientes.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE citas
(
  id_cita serial NOT NULL,
  fecha date NOT NULL,
  id_paciente integer,
  id_especialidad integer,
  observacion text,
  CONSTRAINT citas_pkey PRIMARY KEY (id_cita),
  CONSTRAINT citas_id_especialidad_fkey FOREIGN KEY (id_especialidad)
      REFERENCES especialidad (id_especialidad) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT citas_id_paciente_fkey FOREIGN KEY (id_paciente)
      REFERENCES pacientes (id_paciente) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

FOREIGN KEY

Publicado por aldo (131 intervenciones) el 07/11/2015 00:05:37
Hola Julio, acabo de crear la relacion con la tabla de especialidad y si lo aceptó.
quedando asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE usuarios
(
  id_usuario serial NOT NULL,
  id_especialidad serial NOT NULL,
  nombres character varying(30),
  apellidos character varying(30),
  email character varying(30),
  usuario_login text,
  usuario_pass text,
  CONSTRAINT usuarios_pkey PRIMARY KEY (id_usuario),
  CONSTRAINT usuarios_id_especialidad_fkey FOREIGN KEY (id_especialidad)
      REFERENCES especialidad (id_especialidad) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE RESTRICT
)

quiere decir que con la tabla de citas no se puede relacionar sino con especialidad; tendré que crear un SELECT con todas estas tablas para apuntar un usuario con las citas a través de la tabla especialidad.
que me sugieres?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

FOREIGN KEY

Publicado por aldo (131 intervenciones) el 07/11/2015 19:19:05
que opinaan al respecto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio

FOREIGN KEY

Publicado por Julio (6 intervenciones) el 08/11/2015 20:03:32
Hola Aldo.

Te puedo orientar sobre como hacer tus relaciones, pero para eso tendría que ver el conjunto de tu esquema, tienes que darte cuenta que simplemente con tus tablas no puedo especificarte más, ya que no entiendo bien el problema.

Mi consejo es que antes de preocuparte por los SELECT, con los cuales si podrás obtener todo la información, y sino también te puedes ayudar de funciones procedurales, es que dibujes un buen esquema básico de las tablas que necesitas y como interactúan entre ellas.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

FOREIGN KEY

Publicado por aldo (131 intervenciones) el 10/11/2015 03:57:05
Hola julio, bueno si solo me envias tu cuenta de correo, podría enviarte las estructuras de las tablas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar