create database relix;
use relix;
--------------------------
drop table Historiques;
drop table Achats;
drop table Paniers;
drop table Joueurs;
drop table Parchemins
drop table Armures;
drop table Talismans
drop table Reliques;

----------------
create table Reliques (
numRelique int identity(1,1),
nom varchar(30) not null,
qtInventaire int not null,
prix int not null,
qtMin int not null,
typeRelique char(1) not null,
flagDispo int not null default 1,
constraint pkItems primary key(numRelique ),
constraint ckType check(typeRelique IN('A','T','P')),
constraint ckQttInventaire check(qtInventaire >= 0),
constraint ckQttMin check(qtMin > 0),
constraint ckFlagDispo check(flagDispo IN(0,1))
);

create table Armures (
numRelique int,
matiere varchar(30) not null,
poids int not null,
taille int not null,
constraint pkArmures primary key(numRelique),
constraint fkArmuresItems foreign key(numRelique) references Reliques(numRelique)
);

create table Parchemins (
numRelique int,
sort varchar(30) not null,
duree int not null,
antidote varchar(30) not null
constraint pkParchememin primary key(numRelique),
constraint fkParchemin foreign key(numRelique) references Reliques(numRelique));

create table Talismans(
numRelique int,
matiere varchar(30) not null,
typeTalisman varchar(50),
pouvoir varchar(50) not null,
constraint pkTalisman primary key(numRelique),
constraint fkTalisma foreign key(numRelique) references Reliques(numRelique));

-------

create table Joueurs (
numJoueur int identity(1,1),
alias varchar(50) unique not null ,
nom varchar(30) not null,
prenomn varchar(30),
montantInit int not null default 1000,
niveau smallint,
constraint pkJoueurs primary key(numJoueur),
constraint ckMontantJoueurs check(montantInit >= 0),
constraint ck_niveau check(niveau in(1,2,3,4,5))
);


create table Paniers (
numJoueur int,
numRelique int,
qtRelique int not null,
constraint pkPaniers primary key(numJoueur,numRelique ),
constraint fkPaniersJoueurs foreign key(numJoueur) references Joueurs(numJoueur),
constraint fkPaniersItems foreign key(numRelique ) references Reliques(numRelique ),
constraint ckQttItemPaniers check(qtRelique >= 0)
);
---
create table Achats (
numAchat int Identity(1,1),
numJoueur int not null,
dateAchat date,
constraint pkAchats primary key(numAchat),
constraint fkAchatsJoueurs foreign key(numJoueur) references Joueurs(numJoueur)
);

create table Historiques (
numAchat int,
numRelique int,
qtRelique int not null,
constraint pkHistoriques primary key(numAchat,numRelique),
constraint fkItemsHistoriques foreign key(numRelique) references Reliques(numRelique),
constraint fkAchatsHistoriques foreign key(numAchat) references Achats(numAchat),
constraint ckQttItemHistoriques check(qtRelique >= 0)
);