text: CREATE DATABASE PiBi;
  GO
  
  USE PiBi;
  GO
  
  CREATE LOGIN user_pibi   
  WITH PASSWORD = 'Senha_PiBi!';
  GO
  
  CREATE USER user_pibi FOR LOGIN user_pibi;  
  GO   
  
  GRANT ALL PRIVILEGES TO user_pibi WITH GRANT OPTION;
  GO
  
  
  CREATE TABLE categoria(
  	id int PRIMARY KEY IDENTITY(1,1),
  	nome varchar(255),
  	descricao varchar(255)
  );
  
  CREATE TABLE subcategoria(
  	id int PRIMARY KEY IDENTITY(1,1),
  	nome varchar(255),
  	descricao varchar(255),
  	id_categoria int,
  	CONSTRAINT subcategoria_id_categoria_fk 
  	FOREIGN KEY (id_categoria) REFERENCES categoria (id)
  );
  
  CREATE TABLE produto(
  	id int PRIMARY KEY IDENTITY(1,1),
  	nome varchar(255),
  	descricao varchar(255),
  	valor float,
  	id_subcategoria int,
  	CONSTRAINT produto_id_subcategoria_fk 
  	FOREIGN KEY (id_subcategoria) REFERENCES subcategoria (id)
  );
  
  CREATE TABLE endereco (
  	id INT PRIMARY KEY IDENTITY(1,1),
  	cidade VARCHAR(255),
  	cep VARCHAR(24),
  	email VARCHAR(64),
  	telefone VARCHAR(64)
  )
  
  CREATE TABLE pessoa (
  	id INT PRIMARY KEY IDENTITY(1,1),
  	primeiro_nome VARCHAR(64),
  	ultimo_nome VARCHAR(128),
  	sexo VARCHAR(64),
  	data_nascimento DATE,
  	id_endereco INT,
  	cpf VARCHAR(64),
  	CONSTRAINT pessoa_id_endereco_fk 
  	FOREIGN KEY (id_endereco) REFERENCES endereco (id)
  )
  
  CREATE TABLE funcionario(
  	id int PRIMARY KEY IDENTITY(1,1),
  	id_pessoa INT,
  	data_entrada DATETIME,
  	CONSTRAINT funcionario_id_pessoa_fk 
  	FOREIGN KEY (id_pessoa) REFERENCES pessoa (id)
  );
  
  CREATE TABLE cliente(
  	id int PRIMARY KEY IDENTITY(1,1),
  	id_pessoa INT,
  	CONSTRAINT cliente_id_pessoa_fk 
  	FOREIGN KEY (id_pessoa) REFERENCES pessoa (id)
  );
  
  CREATE TABLE saida_produto(
  	id int PRIMARY KEY IDENTITY(1,1),
  	quantidade int NOT NULL,
  	id_produto int,
  	CONSTRAINT saida_produto_id_produto_fk 
  	FOREIGN KEY (id_produto) REFERENCES produto(id)	
  );
  
  CREATE TABLE entrada_produto(
  	id int PRIMARY KEY IDENTITY(1,1),
  	quantidade int NOT NULL,
  	valor_run float NOT NULL,
  	id_produto int,
  	CONSTRAINT entrada_produto_id_produto_fk 
  	FOREIGN KEY (id_produto) REFERENCES produto(id)	
  );
  
  CREATE TABLE estoque (
  	id INT PRIMARY KEY IDENTITY(1,1),
  	id_produto INT,
  	quantidade FLOAT,
  	CONSTRAINT estoque_id_produto_fk 
  	FOREIGN KEY (id_produto)
  	REFERENCES produto (id)
  )
  
  CREATE TABLE venda(
  	id int PRIMARY KEY IDENTITY(1,1),
  	data_compra date NOT NULL,
  	id_funcionario int,
  	id_cliente int,
  	id_saida_produto int,
  
  	CONSTRAINT venda_id_funcionario_fk FOREIGN KEY (id_funcionario) REFERENCES funcionario (id),
  	CONSTRAINT venda_id_cliente_fk FOREIGN KEY (id_cliente) REFERENCES cliente (id),
  	CONSTRAINT venda_id_saida_produto FOREIGN KEY (id_saida_produto) REFERENCES saida_produto (id)
  );
  