CREATE TABLE news (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  fecha        DATE NOT NULL,                     
  uid          INTEGER,                           
  asunto       VARCHAR(50),                       
  noticia      TEXT,                              
  PRIMARY KEY (id),                               
  CONSTRAINT news_users FOREIGN KEY (uid)         
    REFERENCES users (id) 
);

CREATE TABLE users (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  idg          INTEGER,                           
  nick         VARCHAR(15),                       
  level        INTEGER NOT NULL DEFAULT 0,        
  ultimaEntrada DATE,                             
  primeraEntrada DATE,                            
  pass         VARCHAR(15),                       
  Nombre       VARCHAR(15),                       
  Apellidos    VARCHAR(25),                       
  fechaNacimiento DATETIME,                       
  calle        VARCHAR(30),                       
  ciudad       VARCHAR(15),                       
  provincia    VARCHAR(15),                       
  nacionalidad VARCHAR(15),                       
  cp           INTEGER,                           
  telefono     VARCHAR(15),                       
  mobil        VARCHAR(15),                       
  email        VARCHAR(50),                       
  usaCorreo    ENUM('Y','N') DEFAULT 'N',         
  preguntaSecreta VARCHAR(25),                    
  respuestaPregunta VARCHAR(25),                  
  PRIMARY KEY (id),                               
  CONSTRAINT usuario_controla_grupo FOREIGN KEY   
    (idg) REFERENCES grupos (id) 
);

CREATE TABLE miniChat (
  id           INTEGER,                           
  fecha        DATE,                              
  hora         TIME,                              
  uid          INTEGER DEFAULT 0,                 
  msg          VARCHAR(80),                       
  CONSTRAINT users_miniChat FOREIGN KEY (uid)     
    REFERENCES users (id) 
);

CREATE TABLE encuestas (
  id           INTEGER NOT NULL,                  
  fecha        DATE,                              
  validaHasta  DATE,                              
  pregunta     VARCHAR(50),                       
  resp1        VARCHAR(35),                       
  vresp1       SMALLINT DEFAULT 0,                
  resp2        VARCHAR(35),                       
  vresp2       SMALLINT DEFAULT 0,                
  resp3        VARCHAR(35),                       
  vresp3       SMALLINT DEFAULT 0,                
  resp4        VARCHAR(35),                       
  vresp4       SMALLINT DEFAULT 0,                
  uip          VARCHAR(15),                       
  PRIMARY KEY (id)                                
);

CREATE TABLE useronline (
  hora         INTEGER NOT NULL,                  
  ip           VARCHAR(15) NOT NULL,              
  uid          INTEGER NOT NULL,                  
  PRIMARY KEY (hora),                             
  INDEX (ip),                                     
  INDEX (uid),                                    
  CONSTRAINT users_useronline FOREIGN KEY (uid)   
    REFERENCES users (id) 
);

CREATE TABLE artistas (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  FAlta        DATETIME NOT NULL,                 
  Nombre       VARCHAR(15),                       
  Apellido     VARCHAR(40),                       
  Instrumento  VARCHAR(50),                       
  Foto_mime    VARCHAR(50),                       
  Foto_W       INTEGER,                           
  Foto_H       INTEGER,                           
  Telefono1    VARCHAR(15),                       
  Telefono2    VARCHAR(15),                       
  NIF          VARCHAR(20),                       
  Calle        VARCHAR(50),                       
  Localidad    VARCHAR(20),                       
  Provincia    VARCHAR(20),                       
  CP           INTEGER,                           
  url          VARCHAR(50),                       
  e_Mail       VARCHAR(30),                       
  FechaNacimiento DATE,                           
  comentario   TEXT,                              
  PRIMARY KEY (id),                               
  INDEX (FAlta)                                   
);

CREATE TABLE grupos (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  ide          INTEGER,                           
  FAlta        DATE,                              
  nombre       VARCHAR(50),                       
  comentario   TEXT,                              
  cache        VARCHAR(50),                       
  equipoSonidoLuces VARCHAR(50),                  
  estadisticas TINYTEXT,                          
  croquiMusicos VARCHAR(100),                     
  sugerenciasGrupo VARCHAR(50),                   
  contratacion TINYTEXT,                          
  imagen       VARCHAR(50),                       
  PRIMARY KEY (id),                               
  CONSTRAINT estilos_grupo FOREIGN KEY (ide)      
    REFERENCES estilos (id) 
);

CREATE TABLE componentesGrupo (
  idg          INTEGER NOT NULL,                  
  idp          INTEGER NOT NULL,                  
  PRIMARY KEY (idg),                              
  INDEX (idp),                                    
  CONSTRAINT artistas_componentesGrupo FOREIGN    
    KEY (idp) REFERENCES artistas (id) 
);

CREATE TABLE estilos (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  parent       INTEGER NOT NULL DEFAULT 0,        
  titulo       VARCHAR(50),                       
  descr        TINYTEXT,                          
  Foto_mime    VARCHAR(50),                       
  Foto_w       SMALLINT,                          
  Foto_h       SMALLINT,                          
  PRIMARY KEY (id),                               
  INDEX (parent)                                  
);

CREATE TABLE discos (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  idg          INTEGER,                           
  ide          INTEGER,                           
  FAlta        DATE,                              
  FEdicion     DATE,                              
  ids          SMALLINT DEFAULT 3,                
  titulo       VARCHAR(50),                       
  pv           NUMERIC(6,2),                      
  comentario   TEXT,                              
  PRIMARY KEY (id),                               
  CONSTRAINT discos_grupo FOREIGN KEY (idg)       
    REFERENCES grupos (id),
  CONSTRAINT estilo_disco FOREIGN KEY (ide)       
    REFERENCES estilos (id),
  CONSTRAINT tipo_del_disco FOREIGN KEY (pv)      
    REFERENCES TiposDiscos (id) 
);

CREATE TABLE extrasDiscos (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  idd          INTEGER,                           
  tipo         CHAR DEFAULT 'O',                  
  id_data      INTEGER,                           
  file         VARCHAR(50),                       
  W            INTEGER,                           
  H            INTEGER,                           
  PRIMARY KEY (id),                               
  CONSTRAINT extras_de_un_disco FOREIGN KEY       
    (idd) REFERENCES discos (id) 
);

CREATE TABLE cancionesDisco (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  idd          INTEGER,                           
  posicion     SMALLINT NOT NULL,                 
  duracion     TIME,                              
  titulo       VARCHAR(50),                       
  f_partitura  VARCHAR(50),                       
  f_audio      VARCHAR(50),                       
  f_letra      VARCHAR(50),                       
  INDEX (id),                                     
  INDEX (id, posicion),                           
  PRIMARY KEY (id),                               
  CONSTRAINT canciones_del_disco FOREIGN KEY      
    (idd) REFERENCES discos (id) 
);

CREATE TABLE eventos (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  idg          INTEGER NOT NULL,                  
  FAlta        DATE,                              
  FEvento      DATE NOT NULL,                     
  HEvento      TIME,                              
  Lugar        VARCHAR(30),                       
  Titulo       VARCHAR(50),                       
  Notas        TEXT,                              
  PRIMARY KEY (id),                               
  INDEX (idg, FEvento),                           
  CONSTRAINT eventos_grupo FOREIGN KEY (idg)      
    REFERENCES grupos (id) 
);

CREATE TABLE TiposDiscos (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  pvp          NUMERIC(8,2),                      
  descrCorta   VARCHAR(20),                       
  descrLarga   TEXT,                              
  PRIMARY KEY (id)                                
);

CREATE TABLE publicidad (
  id           INTEGER NOT NULL AUTO_INCREMENT,   
  FAlta        DATE,                              
  anunciante   VARCHAR(50),                       
  descr        VARCHAR(50),                       
  url          VARCHAR(90),                       
  tipo         CHAR DEFAULT 'H',                  
  nVistos      INTEGER DEFAULT 0,                 
  nVisitas      INTEGER DEFAULT 0,                 
  filename     VARCHAR(30),                       
  PRIMARY KEY (id)                                
);

