Normas de orden de creación:
Crea todas las tablas necesarias con su campo primary key.
Crea todos los campos fk
necesarios para enlazar las distintas tablas
ALTER TABLE nombre_tabla ADD COLUMN fk_loquesea int AFTER nombre_columna_existente;
ALTER TABLE nombre_tabla ADD COLUMN fk_loquesea int;
ALTER TABLE usuarios ADD COLUMN fecha_registro DATE FIRST;
Crea los indices.
CREATE INDEX nombre_indice ON nombre_tabla(campo);
CREATE UNIQUE INDEX lo_que_sea1 ON t3(id1);
ALTER TABLE t3 ADD CONSTRAINT lo_que_sea2 UNIQUE INDEX (id2);
ALTER TABLE t1 ADD INDEX idx_c3 (c3);
Crea los foreign key.
ALTER TABLE Orders ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
DROP DATABASE furbol;
CREATE DATABASE furbol;
USE furbol;
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE if exists ligas;
CREATE TABLE ligas(
id INT auto_increment PRIMARY KEY,
nombre varchar(50));
DROP TABLE if exists municipios;
CREATE TABLE municipios(
id INT auto_increment PRIMARY KEY,
nombre varchar(50));
DROP TABLE if exists temporadas;
CREATE TABLE temporadas
(id INT PRIMARY KEY,
nombre VARCHAR(10));
DROP TABLE if exists estadios;
CREATE TABLE estadios
(id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(40));
DROP TABLE if exists equipos;
CREATE TABLE equipos
(id INT PRIMARY KEY,
fk_estadio INT,
nombre VARCHAR(50)
);
DROP TABLE if exists jugadores;
CREATE TABLE jugadores
(id INT AUTO_INCREMENT,
nombre VARCHAR(40),
PRIMARY KEY(id));
DROP TABLE if exists arbitros;
CREATE TABLE arbitros
(id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(40));
DROP TABLE if exists jornadas;
CREATE TABLE jornadas
(id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(40));
DROP TABLE if exists partidos;
CREATE TABLE partidos
(id INT AUTO_INCREMENT PRIMARY KEY,
fk_jornada INT NOT NULL,
fk_local INT NOT NULL,
fk_visitante INT NOT NULL,
fk_arbitro INT NOT NULL,
fecha_hora DATETIME,
goles_local INT,
goles_visitante INT);
DROP TABLE if exists fichajes;
CREATE TABLE fichajes
(fk_temporada INT NOT NULL,
fk_equipo INT NOT NULL,
fk_jugador INT NOT NULL);
ALTER TABLE equipos add
constraint fk_equipo_estadio FOREIGN KEY (fk_estadio)
REFERENCEs estadios(id);
ALTER TABLE fichajes add
constraint fk_fichaje_juagador
FOREIGN KEY (fk_jugador)
REFERENCEs jugadores(id);
ALTER TABLE fichajes add
constraint fk_fichaje_equipo
FOREIGN KEY (fk_equipo)
REFERENCEs equipos(id);
ALTER TABLE fichajes add
constraint fk_fichaje_temporada
FOREIGN KEY (fk_temporada)
REFERENCEs temporadas(id);
ALTER TABLE partidos add
constraint fk_partido_jornada
FOREIGN KEY (fk_jornada)
REFERENCEs jornadas(id);
ALTER TABLE partidos add
constraint fk_partido_local
FOREIGN KEY (fk_local)
REFERENCEs equipos(id);
ALTER TABLE partidos add
constraint fk_partido_visitante
FOREIGN KEY (fk_visitante)
REFERENCEs equipos(id);
ALTER TABLE partidos add
constraint fk_partido_arbitro
FOREIGN KEY (fk_arbitro)
REFERENCEs arbitros(id);
ALTER TABLE equipos add
column fk_municipio INT;
ALTER TABLE equipos ADD
CONSTRAINT fk_equipo_municipio
FOREIGN KEY (fk_municipio)
REFERENCEs municipios(id);
ALTER TABLE municipios add
column fk_liga INT;
ALTER TABLE municipios ADD
CONSTRAINT fk_municipio_liga
FOREIGN KEY (fk_liga)
REFERENCEs ligas(id);
CREATE TABLE tipos_eventos(
id INT auto_increment PRIMARY KEY,
nombre VARCHAR(50));
CREATE TABLE eventos(
id INT auto_increment PRIMARY KEY,
minuto int,
fk_tipo INT,
fk_jugador INT,
fk_partido int);
ALTER TABLE eventos ADD
CONSTRAINT fk_evento_tipo
FOREIGN KEY (fk_tipo)
REFERENCEs tipos_eventos(id);
ALTER TABLE eventos ADD
CONSTRAINT fk_evento_jugador
FOREIGN KEY (fk_jugador)
REFERENCEs jugadores(id);
ALTER TABLE eventos ADD
CONSTRAINT fk_evento_partido
FOREIGN KEY (fk_partido)
REFERENCEs partidos(id);
SET FOREIGN_KEY_CHECKS=1;