DROP TABLE Voiture, Types, Client, Réservartion, Stock;

CREATE TABLE Voiture(
	immatriculation CHAR(9) PRIMARY KEY CONSTRAINT Problème_Immatriculation CHECK(immatriculation LIKE '(A-Z)(A-Z)(0-9)(0-9)(0-9)(A-Z)(A-Z)'),
	marque VARCHAR(50) NOT NULL CONSTRAINT Probmème_Marque,
	kilométrage NUMERIC(6) NOT NULL CONSTRAINT Problème_Kilométrage,
	couleur VARCHAR(40) NOT NULL CONSTRAINT Porblème_Couleur,
	modèle VARCHAR(50) NOT NULL REFERENCES Type,
);


CREATE TABLE Type(
	modèle VARCHAR(50) PRIMARY KEY CONSTRAINT Problème_Modèle,
	caution NUMERIC(5) NOT NULL CONSTRAINT Poblème_Caution,
);

CREATE TABLE Client(
	num_permis VARCHAR(15) PRIMARY KEY CONSTRAINT Numéro_de_permis,
	nom VARCHAR(40) NOT NULL CONSTRAINT Problème_Nom,
	prenom VARCHAR(40) NOT NULL CONSTRAINT Problème_Prénom,
	date_obtention DATE NOT NULL CONSTRAINT Problème_Date CHECK(date_obtention < (CURRENT_DATE - INTERVAL '3 year')),
	adresse VARCHAR(100) NOT NULL CONSTRAINT Probleme_Adresse,
	code_postal NUMERIC(4) NOT NULL CHECK(9999 < code_postal < 99999),
	ville VARCHAR(100) NOT NULL CONSTRAINT Porblème_Ville,
	tel 
);


CREATE TABLE Réservartion(

	num_reservation NUMERIC(12) CONSTRAINT Numéro_Réservation PRIMARY KEY,
	DateReservation DATE CONSTRAINT Date_Réservation NOT NULL,
	forfait NUMERIC(5,2) CONSTRAINT Problème_Forfait CHECK (Forfait >= 500.00 AND Forfait > 0.00),
	DateRetour DATE CONSTRAINT Date_Retour CHECK (dateretour > DateReservation),
	Durée NUMERIC(2) CONSTRAINT Problème_Durée CHECK(Durée <= 7 AND Durée >= 1),
);

CREATE TABLE Stock(
	immatriculation CHAR(9) REFERENCES Voiture CHECK(immatriculation LIKE '(A-Z)(A-Z)(0-9)(0-9)(0-9)(A-Z)(A-Z)'),
	num_reservation NUMERIC(12) REFERENCES Réservartion,
	disponibilité CHAR(3) NOT NULL CONSTRAINT Problème_Disponibilité,
	PRIMARY KEY(immatriculation, num_reservation)
);


CREATE TABLE Fournisseur(
	nom_fournisseur VARCHAR(100) PRIMARY KEY,
	type_contrat VARCHAR(100) NOT NULL,
	date_contrat DATE NOT NULL CONSTRAINT Problème_Date_Contrat,
);