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 NUMERIC(4) NOT NULL CONSTRAINT Problème_Date CHECK(date_obtention <= 2022 AND date_obtention > 1942),
	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 CHAR(15) NOT NULL CONSTRAINT Problème_Téléphone CHECK(tel LIKE('(06,07).(0-9).(0-9).(0-9).(0-9)'))
);


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 AND dateRetour = DateReservation + Durée),
	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
);


INSERT INTO Voiture VALUES('GR-056-ON','Bugatti',23189,'Noir','Chiron',2018);
INSERT INTO Voiture VALUES('EZ-667-EK','Koenigsegg',34129,'Jaune','Regera',2016);
INSERT INTO Voiture VALUES('PO-726-TG','Ferrari',65023,'Rouge','458 Italia',2011);
INSERT INTO Voiture VALUES('CO-138-OL','Ford',10298,'Argent','Mustang GT',1969);
INSERT INTO Voiture VALUES('BI-132-NO','Bugatti',85543,'Noir et Rouge','Veyron',2009);
INSERT INTO Voiture VALUES('VI-404-MS','Tesla',10298,'Argent','Cybertruck',2023);
INSERT INTO Voiture VALUES('PQ-100-DB','Lamborghini',8765,'Vert','Aventador SV',2022);

INSERT INTO Type VALUES('Veyron',150000);
INSERT INTO Type VALUES('Chiron',240000);
INSERT INTO Type VALUES('Regera',230000);
INSERT INTO Type VALUES('458 Italia',30000);
INSERT INTO Type VALUES('Cybertruck',9500);
INSERT INTO Type VALUES('Mustang GT',12300);
INSERT INTO Type VALUES('Aventador SV',35000);

INSERT INTO Client VALUES(654684321685486,'Musk','Elon',1990,'3 Rue des Potiers',75000,'Paris', '06 18 16 69 48');
INSERT INTO Client VALUES(546513546843546,'Natendo','Stéphane',1976,'21 Rue du Pape',21000,'Tisoumits','06 85 96 12 04');
INSERT INTO Client VALUES(487465443154873,'Joseph','Hugue',2003,'91 Avenue de l’Union Soviétique',17742,'Mouscou','05 39 14 45 75');
INSERT INTO Client VALUES(464384543544456,'Cénou','John',1999,'47 Rue du Combattant',93000,'Ring','07 83 53 73 76');
INSERT INTO Client VALUES(248798745615644,'Delacroix','Joé',2012,'18 rue de Porte de la Chapelle',89623,'Saint-Augustin','06 65 87 64 45');
INSERT INTO Client VALUES(454845115464846,'Du-Bourg-Palette','Sacha',2010,'30 Boulevard de Lavanville',10100,'Kanto','06 78 69 41 65');
INSERT INTO Client VALUES(546843544654681,'Galaire','Geoffroy',1986,'7 Avenue de Fleury Mérogis',91700,'Bouchaire-sur-mer', '08 46 38 12 32');
INSERT INTO Client VALUES(787543487343547,'Sangle','Glocou',2008,'6 Boulevard des Norutau',86853,'Papou','06 85 41 25 73');
INSERT INTO Client VALUES(257272727376578,'Félicité','Alexis',1993,'58 Rue Montalembert',63000,'Clermont-Ferrand','06 13 46 38 68');
INSERT INTO Client VALUES(284654984654389,'Hirrite','Sam',2007,'147 Avenue Léon Blum',63000,'Clermont-Ferrand','01 35 46 98 75');
INSERT INTO Client VALUES(543484345484354,'Chiling Ben','Ben',1998,'18 Rue de Waterburries',41649,'Kentucky','06 23 60 87 01');
INSERT INTO Client VALUES(126868621651645,'Mau','Enzo',2010,'62 Rue des Archives',75004,'Les Marais','06 69 96 48 85');

INSERT INTO Fournisseur VALUES('Midas','Location','15/08/2022');
INSERT INTO Fournisseur VALUES('Clapette','Achat','14/02/2022');
INSERT INTO Fournisseur VALUES('Tutur2Luxe','Achat','12/09/2022');
INSERT INTO Fournisseur VALUES('Ford','Essai','09/11/2022');
INSERT INTO Fournisseur VALUES('LaQimatra','Location','01/04/2022');
INSERT INTO Fournisseur VALUES('Roux2Scoure','Achat','06/06/2022');
INSERT INTO Fournisseur VALUES('Formili1','Achat','03/03/2022');