MySQL - problemas clave foranea

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 67 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

problemas clave foranea

Publicado por Victor (1 intervención) el 20/08/2018 02:49:46
Estoy haciendo una base de datos que alberga datos de transporte publico y tengo un pequeño desface

este es mi SQL:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
CREATE TABLE IF NOT EXISTS .`lineas` (
  `idlineas` INT NOT NULL AUTO_INCREMENT,
  `numero` INT NOT NULL,
  PRIMARY KEY (`idlineas`));
 
CREATE TABLE IF NOT EXISTS `trayectos` (
  `idtrayectos` INT NOT NULL AUTO_INCREMENT,
  `ramal` VARCHAR(30) NOT NULL,
  `itinerario` VARCHAR(500) NOT NULL,
  PRIMARY KEY (`idtrayectos`));
 
CREATE TABLE IF NOT EXISTS `tipo_buses` (
  `idtipo_buses` INT NOT NULL AUTO_INCREMENT,
  `descripcion` VARCHAR(15) NOT NULL,
  PRIMARY KEY (`idtipo_buses`));
 
CREATE TABLE IF NOT EXISTS `empresas` (
  `idempresas` INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`idempresas`));
 
CREATE TABLE IF NOT EXISTS `operador` (
  `idoperador` INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`idoperador`));
 
CREATE TABLE IF NOT EXISTS `lectores` (
  `idlectores` INT NOT NULL AUTO_INCREMENT,
  `serie` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`idlectores`, `serie`));
 
  CREATE TABLE IF NOT EXISTS `buses` (
  `idbuses` INT NOT NULL AUTO_INCREMENT,
  `idtipo_buses` INT NOT NULL,
  `idlineas` INT NOT NULL,
  `idempresas` INT NOT NULL,
  `chapa` VARCHAR(12) NOT NULL,
  `coche_numero` INT NOT NULL,
  `observaciones` VARCHAR(45) NULL,
  PRIMARY KEY (`idbuses`, `idtipo_buses`, `idlineas`, `idempresas`),
  UNIQUE INDEX `chapa_UNIQUE` (`chapa` ASC),
  UNIQUE INDEX `coche_numero_UNIQUE` (`coche_numero` ASC),
  CONSTRAINT `fk_tipo_buses_tipo_buses1`
    FOREIGN KEY (`idtipo_buses`)
    REFERENCES `tipo_buses` (`idtipo_buses`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_lineas_lineas1`
    FOREIGN KEY (`idlineas`)
    REFERENCES `lineas` (`idlineas`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_empresas_empresas1`
    FOREIGN KEY (`idempresas`)
    REFERENCES `empresas` (`idempresas`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);
 
CREATE TABLE IF NOT EXISTS `buses_has_trayectos` (
  `idbuses` INT NOT NULL,
  `idtrayectos` INT NOT NULL,
  `idoperador` INT NOT NULL,
  `idlectores` INT NOT NULL,
  `serie` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`idbuses`, `idtrayectos`, `idoperador`, `idlectores`, `serie`),
  CONSTRAINT `fk_buses_buses1`
    FOREIGN KEY (`idbuses`)
    REFERENCES `buses` (`idbuses`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_trayectos_trayectos1`
    FOREIGN KEY (`idtrayectos`)
    REFERENCES `trayectos` (`idtrayectos`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_operador_operador1`
    FOREIGN KEY (`idoperador`)
    REFERENCES `operador` (`idoperador`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_lectores_lectores1`
    FOREIGN KEY (`idlectores` , `serie`)
    REFERENCES `lectores` (`idlectores` , `serie`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

el único problema es que lo probe varias veces en fiddle por si era un error mio, cada bus que creo comparte el mismo lector y operador, y no deberia ser asi un solo bus deberia tener un operador y un lector... me gustaria que me ayuden por favor...
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: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

problemas clave foranea

Publicado por Leonardo Josué (414 intervenciones) el 20/08/2018 16:54:51
Hola Víctor:

No sé a qué te refieres con tener un "desface", no sé si te refieres a que tienes algún tipo de error al tratar de ejecutar tu script... Si fuera el caso, lo que debes de colocar es el código del error que te está arrojando el motor de BD's ya que ahí se muestra información adicional que puede ayudarte a encontrar el problema...

Por lo pronto, revisando tu script, en el primer CREATE tienes un punto (.) antes del nombre de la tabla que puede ocasionarte problemas:

1
CREATE TABLE IF NOT EXISTS .`lineas` (

En algunas versiones de MySQL, esto te daría un error... lo recomendable es que lo quietes o en su defecto, utilices el punto para poner como prefijo la BD's en donde se van a crear las tablas:

1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `lineas` (
...
 
o
 
CREATE TABLE IF NOT EXISTS `tu_base_de_datos`.`lineas` (
...

el resto del Script parece correcto. No se sí este es todo el problema, pero en caso contrario, trata de explicarte un poco mejor, dinos la versión de MySQL con la que estás trabajando e incluye los mensajes de error o advertencias que te arroje el DBMS.

Saludos
Leo.
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