Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problemas con mysql

Estas en el tema de Problemas con mysql en el foro de Bases de Datos General en Foros del Web. He creado la siguiente BD con MySQL: CREATE TABLE asignatura (nomAsig varchar(20) not null, curso int not null, tipoCurso varchar(20) not null, dniPro varchar(9) not ...
  #1 (permalink)  
Antiguo 21/06/2005, 16:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
Problemas con mysql

He creado la siguiente BD con MySQL:

CREATE TABLE asignatura (nomAsig varchar(20) not null,
curso int not null,
tipoCurso varchar(20) not null,
dniPro varchar(9) not null,
codAsig varchar(20) not null,
nomPro varchar(20) not null,
apePro varchar(20) not null,
primary key (nomAsig, curso, tipoCurso, dniPro, codAsig),
foreign key (dniPro) references profesor(dni) on delete cascade update cascade)
type=InnoDB;

CREATE TABLE profesor (

nombre varchar(20) not null,
apellido1 varchar(20) not null,
apellido2 varchar(20) not null,
dni varchar(9) not null,
curso int not null,
tipoCurso varchar(20) not null,
codAsig varchar(20) not null,
asignatura varchar(20) not null,
corrElec varchar(50) not null,
primary key (dni),
foreign key (curso) references asignatura(curso) on delete cascade on update cascade,
foreign key (tipoCurso) references asignatura(tipoCurso) on delete cascade on update cascade,
foreign key (codAsig) references asignatura(codAsig) on delete cascade on update cascade,
foreign key (asignatura) references asignatura(nomAsig) on delete cascade on update cascade)
type=InnoDB;

CREATE TABLE accesoProf (

nombre varchar(20) not null,
clave varchar(20) not null,
dni varchar(9) not null,
primary key (nomUsu, clave, dni),
foreign key (dni) references profesor(dni) on delete cascade on update cascade)
type=InnoDB;

CREATE TABLE administrador (

nombre varchar(20) not null,
apellido1 varchar(20) not null,
apellido2 varchar(20) not null,
dni varchar(20) not null,
primary key (dni),
foreign key (dni) references profesor(dni) on delete cascade on update cascade)
type=InnoDB;

Lo que quiero conseguir es que el administrador tiene que estar en la tabla profesor y si se intenta insertar un administrador que no esta en la tabla profesor que no se pueda.
Mi duda es si se puede hacer cuando se crea la bd y como se deberia hacer, pense que tal y como habia creado la bd seria suficiente.
Muchas gracias por todo
  #2 (permalink)  
Antiguo 22/06/2005, 12:09
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Ya lo tienes hecho

foreign key (dni) references profesor(dni) on delete cascade on update cascade)

Ya que:

primary key (dni)--> debe estar siempre informado.

Esta restricción dice que para poder meter un administrador tienes que tener previamente ese administrador en profesores.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #3 (permalink)  
Antiguo 23/06/2005, 07:56
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
y como es posible que tenga ingresado un administrador en la tabla administrador y que la tabla profesor este vacia?

Puede que sea por la version que utilizo? Es la 3.algo
  #4 (permalink)  
Antiguo 23/06/2005, 12:43
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
MySql implementa la integridad referencial con un tipo de tabla llamada InnoDB, me parece que ese tipo de tablas están disponibles a partir de la versión 4.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #5 (permalink)  
Antiguo 23/06/2005, 22:53
 
Fecha de Ingreso: junio-2005
Mensajes: 2
Antigüedad: 18 años, 10 meses
Puntos: 0
ya esta hecho, solo tienes que usar integridad referencial...
  #6 (permalink)  
Antiguo 24/06/2005, 01:07
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
Vale entonces es ese el problema porque aunque yo he puesto que la tabla sea te tipo innodb, al comprobarlo me dice que la tabla es de otro tipo y no me deja cambiarlo.

Muchas gracias por todo, ya cambiare la version.

Hasta pronto.
  #7 (permalink)  
Antiguo 24/06/2005, 01:34
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
Ya tengo mysql4. AHora el problema es: el driver odbc que tengo instalado para mysql3 no me sirve verdad o es el mismo para todos las versiones de mysql.
He entrado en la pagina de mysql y el unico que hay es el que tengo instalado.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:19.