-- COMANDOS DDL (CREATE | ALTER | DROP)

create database db_nota_fiscal;

use db_nota_fiscal;

create table tb_cliente (
cd_cliente int primary key auto_increment,
nm_cliente varchar(60) not null,
cd_cpf varchar(14) not null,
constraint cpf_unico unique (cd_cpf),
dt_registro_cliente datetime default current_timestamp,
nm_email varchar(60) not null,
constraint email_unico unique (nm_email)
)engine=InnoDB default charset=utf8mb4;

create table tb_categoria (
cd_categoria int primary key auto_increment,
nm_categoria varchar(50) not null unique
);

create table tb_produto (
cd_produto int auto_increment,
nm_produto varchar(60) not null,
ds_produto text,
vl_produto decimal(6,2) not null,
id_categoria int not null,
primary key (cd_produto),
foreign key (id_categoria) references tb_categoria (cd_categoria)
);

create table tb_nota_fiscal (
cd_nota_fiscal int auto_increment,
dt_emissao  datetime default current_timestamp,
id_cliente int,
primary key (cd_nota_fiscal),
foreign key (id_cliente) references tb_cliente (cd_cliente)
);

-- criar a table tb_item_nota com os seguintes campos
/*
cd_item
id_nota_fiscal
id_produto
qt_produto
vl_produto
dt_registro_item
*/

create table tb_item_nota (
cd_item int auto_increment,
qt_produto int not null,
vl_produto decimal(6,2) not null,
dt_registro_item datetime default current_timestamp,
primary key (cd_item)
);

alter table tb_item_nota add column
id_nota_fiscal int after cd_item;

alter table tb_item_nota 
change id_nota_fiscal id_nota_fiscal int not null;

alter table tb_item_nota add column
id_produto int not null after id_nota_fiscal;

select * from tb_item_nota;

-- drop table tb_item_nota;

alter table tb_item_nota add
foreign key (id_nota_fiscal)
references tb_nota_fiscal (cd_nota_fiscal);

alter table tb_item_nota add
foreign key (id_produto)
references tb_produto (cd_produto);

show tables;