--create database dbDarquest;
use dbDarquest;

drop table Concocter;
drop table Inventaires
drop table Paniers;
drop table Joueurs;
drop table Armes;
drop table Potions;
drop table Element;
drop table Armures
drop table Items;

--- Création de tables
---Table Items
--A indique une Arme
--E indique un Element
--P indique une potion
--R indique une armure
create table Items 
(
	idItem int identity(1,1),
	nom varchar(30) not null,
	qtStock int not null,
	prix int not null,
	typeItem char(1) not null,
	flagDispo int not null default 1,
	constraint pkItems primary key(idItem),
	constraint ckType check(typeItem IN('A','P','E','R')),
	constraint ckQtStock check(qtStock >= 0),
	constraint ckFlagDispo check(flagDispo IN(0,1))
);
--- Table Armes
create table Armes 
(
	idItem int,
	efficacité int not null,
	genre varchar(30) not null,
	descriptionArme varchar(60),
	constraint pkArmes primary key(idItem),
	constraint fkArmesItems foreign key(idItem) references Items(idItem)
);
--Table Armures
create table Armures (
idItem int,
matiere varchar(30) not null,
poids int not null,
taille int not null,
constraint pkArmures primary key(idItem),
constraint fkArmuresItems foreign key(idItem) references Items(idItem)
);
----Table Potions
create table Potions 
(
	idItem int,
	effet varchar(50) not null,
	durée int not null,
	constraint pkPotions primary key(idItem),
	constraint fkPotionsItems foreign key(idItem) references Items(idItem)
);

--------Table Elements

create table Element
(
	idItem int,
	typeElement varchar(50) not null,
	dangerosite varchar(50) not null,
	rarete smallint not null,
	constraint pkElement primary key(idItem),
	constraint fkElementItems foreign key(idItem) references Items(idItem),
	constraint ckrarete check(rarete=1 or rarete=2 or rarete =3)
);
-------Table concocter..

create table Concocter
(
	pidItem int not null, 
    eidItem int not null, 
    qtElement int not null,
	constraint fkconcoterPotion foreign key(pidItem) references Potions(idItem),
	constraint fkconcoterElement foreign key(eidItem) references Element(idItem),
	constraint pkConcocter primary key (pidItem, eidItem)
);

---Table Joueurs
create table Joueurs 
(
	idJoueur int identity(1,1),
	alias varchar(50) unique not null ,
	nom varchar(30),
	prenomn varchar(30),
	nbOr int not null default 1000,
	estAlchimiste smallint not null default '0',
	constraint pkJoueurs primary key(idJoueur),
	constraint ckMontantJoueurs check(nbOr >= 0),
	constraint ckMage check(estAlchimiste=0 or estAlchimiste=1)
);
---Table Paniers
create table Paniers 
(
	idJoueur int not null,
	idItem int not null,
	qtItemPanier int not null,
	constraint pkPaniers primary key(idJoueur,idItem),
	constraint fkPaniersJoueurs foreign key(idJoueur) references Joueurs(idJoueur),
	constraint fkPaniersItems foreign key(idItem) references Items(idItem),
	constraint ckQttItemPaniers check(qtItemPanier >= 0)
);

---Table Inventaires
create table Inventaires
(
	idJoueur int not null,
	idItem int not null,
	qtItem int not null,
	constraint pkInventaire primary key(idJoueur,idItem),
	constraint fkItemsInventaire foreign key(idItem) references Items(idItem),
	constraint fkIdJoueur foreign key(idJoueur) references Joueurs(idJoueur),
	constraint ckQttItemInventaire check(qtItem >= 0)
);







