PDA

View Full Version : [SQL]problema creazione database query


travis^__^
13-12-2012, 20:49
Salve a tutti, sono relativamente nuovo del mondo DBMS e ho un po' di problemi con le query.
In particolare devo creare un database di nome Progetto, contenente 3 tabelle:

STUDENTI(Matricola, Nome, Cognome, DataNascita, NumCel*)
LABORATORI(CodLab, Titolo, NumPostazioni, DataApertura)
ACCESSI(Matricola, CodLab, Data, OraInizio, OraFine*)

Ora io ho scritto queste query, ma EasyPHP mi restituisce errore quando legge l'ultima query, penso ci siano dei problemi con le chiavi esterne ma non sono sicuro. Ogni consiglio è ben accetto!

SET storage_engine=InnoDB;
SET FOREIGN_KEY_CHECKS=1;
CREATE DATABASE IF NOT EXISTS progetto;
USE progetto;



-- drop tables list
DROP TABLE IF EXISTS Studenti;
DROP TABLE IF EXISTS Laboratori;
DROP TABLE IF EXISTS Accessi;

CREATE TABLE IF NOT EXISTS Studenti (
Matricola VARCHAR(15) UNIQUE NOT NULL ,
Nome VARCHAR(255) NOT NULL ,
Cognome VARCHAR(255) NOT NULL ,
DataNascita VARCHAR (255) NOT NULL,
Tel VARCHAR(255) NULL ,
PRIMARY KEY (Matricola)
);

CREATE TABLE IF NOT EXISTS Laboratori (
CodLab VARCHAR(15) UNIQUE NOT NULL ,
Titolo VARCHAR(255) NOT NULL ,
DataApertura VARCHAR(255) NOT NULL ,
NumPostazioni INT NOT NULL ,
PRIMARY KEY (CodLab)
);



CREATE TABLE IF NOT EXISTS Accessi (
Matricola VARCHAR(15) NOT NULL ,
CodLab VARCHAR(15) NOT NULL ,
Data VARCHAR(15) NOT NULL ,
OraInizio TIME NOT NULL ,
OraFine TIME NOT NULL ,
PRIMARY KEY (Matricola,CodLab,Data,OraInizio) ,

FOREIGN KEY (Matricola )
REFERENCES Studenti(Matricola )
ON DELETE CASCADE
ON UPDATE CASCADE ,

FOREIGN KEY (CodLab )
REFERENCES Laboratori(CodLab )
ON DELETE CASCADE
ON UPDATE CASCADE,
);

idoido
13-12-2012, 21:02
ma creare la tabella con phpmyadmin? puoi sempre vedere il codice sql che viene generato.

demos88
13-12-2012, 22:24
Togli l'ultima virgola, dopo "CASCADE".

travis^__^
15-12-2012, 16:15
ma creare la tabella con phpmyadmin? puoi sempre vedere il codice sql che viene generato.

Lo so che si potrebbe ricorrere a strade "alternative", ma essendo materia d'esame preferivo non cadere nella tentazione di vedere il codice, comunque grazie delle risposte, ora provo!:)