create schema if not exists webs;

create table if not exists webs.category (
  `ID` int not null auto_increment,
  `name` varchar(45) not null,
  primary key (`ID`)
);

create table if not exists webs.product (
  `ID` int not null auto_increment,
  `name` varchar(255) not null,
  `price` decimal(5, 2) not null,
  `image` mediumblob null default null,
	`category` int not null,
  primary key (`ID`),
  constraint `product_category_fk`
    foreign key (`category`)
    references webs.category (`ID`)
    on update cascade
);

create table if not exists webs.customer (
  `ID` int not null auto_increment,
  `name` varchar(45) not null,
  primary key (`ID`)
);

create table if not exists webs.cart (
  `ID` int not null auto_increment,
  `product` int not null,
  `customer` int not null,
	`count` int not null default 1,
  primary key (`ID`),
  constraint `cart_product_fk`
    foreign key (`product`)
    references webs.product (`ID`)
    on update cascade,
  constraint `cart_customer_fk`
    foreign key (`customer`)
    references webs.customer (`ID`)
    on update cascade
);

create table if not exists webs.promotion (
  `ID` int not null auto_increment,
  `product` int not null,
  `count_buff` int not null default 1,
	`price_buff` decimal(4, 3) not null default 1.0,
  primary key (`ID`),
  constraint `promotion_product_fk`
    foreign key (`product`)
    references webs.product (`ID`)
    on update cascade
);

