E-Commerce-1/db-info/ecomerceDB-PostGreSQL.sql

396 lines
14 KiB
SQL

CREATE TABLE "usuarios" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"saldo" decimal(10,2) NOT NULL,
"valor_gasto" decimal(10,2) NOT NULL,
"login" varchar(15) NOT NULL,
"senha" varchar(255) NOT NULL,
"token" varchar(64) NOT NULL,
"email" varchar(32) NOT NULL,
"codigo_email" int NOT NULL,
"status" int NOT NULL,
"nivel" int NOT NULL,
"ultima_atividade" datetime NOT NULL
);
CREATE TABLE "clientes" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"nome" varchar(32) NOT NULL,
"email" varchar(32) NOT NULL,
"saldo" decimal(10,2) NOT NULL,
"valor_gasto" decimal(10,2),
"slug" varchar(15) NOT NULL,
"celular" varchar(15) NOT NULL,
"codigo_email" tinyint NOT NULL,
"codigo_sms" tinyint NOT NULL,
"documento" int NOT NULL,
"observacao" text NOT NULL,
"insento_fiscal" tinyint NOT NULL,
"status" int NOT NULL,
"senha" varchar(255) NOT NULL,
"token" varchar(64) NOT NULL,
"ultima_atividade" datetime NOT NULL,
"email_marketing" tinyint NOT NULL,
"cartao_presente_id" int NOT NULL
);
CREATE TABLE "produtos" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"nome" varchar(18) NOT NULL,
"preco" decimal(10,0) NOT NULL,
"estoque" int NOT NULL,
"categoria_id" int NOT NULL,
"status" int NOT NULL,
"img" varchar(30) NOT NULL,
"descricao" text NOT NULL,
"tipo_produto" int NOT NULL,
"peso" float NOT NULL,
"pais_origem" varchar(12) NOT NULL,
"marca" varchar(18) NOT NULL,
"data_cadastro_produto" datetime NOT NULL
);
CREATE TABLE "categorias" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"nome" varchar(18) NOT NULL,
"descricao" text NOT NULL
);
CREATE TABLE "carrinho" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"cliente_id" int NOT NULL,
"quantidade" int NOT NULL,
"preco" decimal(10,2) NOT NULL,
"data" datetime NOT NULL,
"status" int NOT NULL
);
CREATE TABLE "fornecedores" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"nome" varchar(18) NOT NULL,
"descricao" text NOT NULL,
"documento" int NOT NULL,
"endereco" varchar(32) NOT NULL,
"numero" int NOT NULL,
"bairro" varchar(32) NOT NULL,
"complemento" varchar(15),
"cep" int NOT NULL,
"cidade" varchar(32) NOT NULL,
"estado" varchar(15) NOT NULL,
"nome_empresa" varchar(18) NOT NULL
);
CREATE TABLE "vendas" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"data_venda" datetime NOT NULL,
"valor" decimal(10,2) NOT NULL,
"cliente_id" int NOT NULL,
"nome_destinatario" varchar(32) NOT NULL,
"metodo_pagamento" varchar(18) NOT NULL,
"desconto" decimal(10,2) NOT NULL,
"lucro_bruto" decimal(10,2),
"comentarios_cliente" text,
"end_to_end" varchar(32) NOT NULL,
"ip_cliente" varchar(32),
"status" int NOT NULL,
"cartao_presente_id" int NOT NULL
);
CREATE TABLE "venda_detalhes" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"vendas_id" int NOT NULL,
"nome_produto" varchar(18) NOT NULL,
"preco_unitario" decimal(10,2) NOT NULL,
"quantidade" int NOT NULL,
"endereco_entrega" varchar(32) NOT NULL,
"numero_entrega" int NOT NULL,
"bairro_entrega" varchar(32) NOT NULL,
"complemento_entrega" varchar(15),
"cep_entrega" int NOT NULL,
"cidade_entrega" varchar(32) NOT NULL,
"estado_entrega" varchar(15) NOT NULL,
"metodo_envio" varchar(32) NOT NULL,
"nome_transportadora" varchar(32) NOT NULL,
"custo_envio" decimal(10,2) NOT NULL,
"codigo_rastreio" int NOT NULL
);
CREATE TABLE "vendas_pagamentos" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"vendas_id" int NOT NULL,
"numero_cartao" varchar(32),
"nome_titular_cartao" varchar(32),
"data_vencimento_cartao" date,
"codigo_seguranca_cartao" int,
"cpf_titular_cartao" int,
"bandeira_cartao" int,
"codigo_barras_boletos" int,
"numero_parcelas" int,
"valor_parcelas" decimal(10,2),
"juros" decimal(10,2)
);
CREATE TABLE "vendas_abandonadas" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"vendas_id" int NOT NULL,
"produto_id" int NOT NULL,
"data_hora" datetime NOT NULL,
"motivo_abandono" text,
"valor_total" decimal(10,2) NOT NULL,
"forma_pagamento" varchar(32) NOT NULL,
"codigo_desconto" int,
"observacoes" text
);
CREATE TABLE "transportadora" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"nome_transportadora" varchar(32) NOT NULL,
"documento_cnpj" int NOT NULL,
"endereco" varchar(32) NOT NULL,
"numero" int NOT NULL,
"bairro" varchar(32) NOT NULL,
"complemento" varchar(15),
"cep" int NOT NULL,
"cidade" varchar(32) NOT NULL,
"estado" varchar(15) NOT NULL,
"telefone" varchar(32) NOT NULL,
"website" varchar(32) NOT NULL,
"email" varchar(32) NOT NULL,
"custo_frete" decimal(10,2) NOT NULL,
"estados_atuacao" varchar(32) NOT NULL,
"status" int NOT NULL
);
CREATE TABLE "compras" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"data_compra" datetime NOT NULL,
"fornecedores_id" int NOT NULL,
"valor_total" decimal(10,2) NOT NULL,
"status" int NOT NULL,
"metodo_pagamento" int NOT NULL,
"data_entrega" datetime NOT NULL,
"numero_pedido" varchar(32) NOT NULL,
"observacoes" text,
"nome_produto" varchar(32) NOT NULL
);
CREATE TABLE "descontos" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"codigo_desconto" int NOT NULL,
"tipo_desconto" varchar(32) NOT NULL,
"valor_desconto" decimal(10,2) NOT NULL,
"data_inicio" datetime NOT NULL,
"data_fim" datetime NOT NULL,
"status" int NOT NULL,
"descricao" text,
"uso_unico" int NOT NULL,
"valor_minimo" decimal(10,2)
);
CREATE TABLE "taxas" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"nome" varchar(32) NOT NULL,
"tipo_taxa" varchar(10) NOT NULL,
"valor" decimal(10,2) NOT NULL,
"estado" varchar(10),
"cidade" varchar(10),
"status" int(10),
"descricao" text,
"data_inicio" datetime,
"data_fim" datetime
);
CREATE TABLE "tributos" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"nome" varchar(32) NOT NULL,
"tipo_tributo" enum(Federal,Estadual,Municipal) NOT NULL,
"alicota" decimal(10,2) NOT NULL,
"base_calculo" "enum(valor total venda,valor produto)" NOT NULL,
"codigo_tributo" varchar(20) NOT NULL,
"status" int(10) NOT NULL,
"descricao" text,
"data_inicio" datetime,
"data_fim" datetime,
"regras_aplicacao" text
);
CREATE TABLE "cartao_presente" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"codigo" varchar(50) NOT NULL,
"valor" decimal(10,2) NOT NULL,
"data_emissao" datetime NOT NULL,
"data_validade" datetime NOT NULL,
"status" enum(ativo,inativo,usado,expirado,cancelado) NOT NULL DEFAULT 'ativo',
"nome_destinatario" varchar(32) NOT NULL,
"mensagem_presente" text,
"data_ativacao" datetime NOT NULL,
"regras_uso" text,
"historico_uso" JSON
);
CREATE TABLE "clientes_address" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"cliente_id" int NOT NULL,
"endereco" varchar(32) NOT NULL,
"numero" int NOT NULL,
"bairro" varchar(32) NOT NULL,
"complemento" varchar(15),
"cep" int NOT NULL,
"cidade" varchar(32) NOT NULL,
"estado" varchar(15) NOT NULL
);
CREATE TABLE "clientes_produtos" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"cliente_id" int NOT NULL,
"produto_id" int NOT NULL
);
CREATE TABLE "carrinho_itens" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"carrinho_id" int NOT NULL,
"produto_id" int NOT NULL
);
CREATE TABLE "fornecedores_produtos" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"fornecedor_id" int NOT NULL,
"produto_id" int NOT NULL,
"preco" decimal(10,2) NOT NULL,
"prazo_entrega" datetime NOT NULL
);
CREATE TABLE "vendas_produtos" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"vendas_id" int NOT NULL,
"produto_id" int NOT NULL,
"qtd_vendidos" int NOT NULL
);
CREATE TABLE "vendas_transportadoras" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"vendas_id" int NOT NULL,
"transportadora_id" int NOT NULL,
"data_inicio" datetime NOT NULL,
"data_fim" datetime NOT NULL,
"status" int NOT NULL
);
CREATE TABLE "compras_produtos" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"compras_id" int NOT NULL,
"produtos_id" int NOT NULL,
"quantidade_produto" int NOT NULL
);
CREATE TABLE "descontos_produtos" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"desconto_id" int NOT NULL,
"produto_id" int NOT NULL
);
CREATE TABLE "descontos_categorias" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"desconto_id" int NOT NULL,
"categoria_id" int NOT NULL
);
CREATE TABLE "taxas_produtos" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"taxa_id" int NOT NULL,
"produto_id" int NOT NULL
);
CREATE TABLE "taxas_categorias" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"taxa_id" int NOT NULL,
"categoria_id" int NOT NULL
);
CREATE TABLE "taxas_vendas" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"vendas_id" int NOT NULL,
"taxas_id" int NOT NULL,
"valor_taxa_item" decimal(10,2) NOT NULL
);
CREATE TABLE "tributos_taxas" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"tributo_id" int NOT NULL,
"taxas_id" int NOT NULL
);
CREATE TABLE "tributos_vendas" (
"id" INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL,
"tributo_id" int NOT NULL,
"vendas_id" int NOT NULL,
"valor_tributo_item" decimal(10,2) NOT NULL
);
ALTER TABLE "clientes_address" ADD CONSTRAINT "clientes_address_fk1" FOREIGN KEY ("cliente_id") REFERENCES "clientes" ("id");
ALTER TABLE "produtos" ADD CONSTRAINT "produtos_fk1" FOREIGN KEY ("categoria_id") REFERENCES "categorias" ("id");
ALTER TABLE "carrinho" ADD CONSTRAINT "carrinho_fk1" FOREIGN KEY ("cliente_id") REFERENCES "clientes" ("id");
ALTER TABLE "clientes_produtos" ADD CONSTRAINT "clientes_produtos_fk1" FOREIGN KEY ("cliente_id") REFERENCES "clientes" ("id");
ALTER TABLE "clientes_produtos" ADD CONSTRAINT "clientes_produtos_fk2" FOREIGN KEY ("produto_id") REFERENCES "produtos" ("id");
ALTER TABLE "carrinho_itens" ADD CONSTRAINT "carrinho_itens_fk1" FOREIGN KEY ("carrinho_id") REFERENCES "carrinho" ("id");
ALTER TABLE "carrinho_itens" ADD CONSTRAINT "carrinho_itens_fk2" FOREIGN KEY ("produto_id") REFERENCES "produtos" ("id");
ALTER TABLE "fornecedores_produtos" ADD CONSTRAINT "fornecedor_produtos_fk1" FOREIGN KEY ("fornecedor_id") REFERENCES "fornecedores" ("id");
ALTER TABLE "fornecedores_produtos" ADD CONSTRAINT "fornecedor_produtos_fk2" FOREIGN KEY ("produto_id") REFERENCES "produtos" ("id");
ALTER TABLE "vendas" ADD CONSTRAINT "vendas_clientes_fk1" FOREIGN KEY ("cliente_id") REFERENCES "clientes" ("id");
ALTER TABLE "vendas_produtos" ADD CONSTRAINT "vendas_produtos_fk1" FOREIGN KEY ("produto_id") REFERENCES "produtos" ("id");
ALTER TABLE "vendas_produtos" ADD CONSTRAINT "vendas_produtos_fk2" FOREIGN KEY ("vendas_id") REFERENCES "vendas" ("id");
ALTER TABLE "venda_detalhes" ADD CONSTRAINT "venda_detalhes_fk1" FOREIGN KEY ("vendas_id") REFERENCES "vendas" ("id");
ALTER TABLE "vendas_pagamentos" ADD CONSTRAINT "vendas_pagamentos_fk1" FOREIGN KEY ("vendas_id") REFERENCES "vendas" ("id");
ALTER TABLE "vendas_transportadoras" ADD CONSTRAINT "vendas_transportadoras_fk1" FOREIGN KEY ("transportadora_id") REFERENCES "transportadora" ("id");
ALTER TABLE "vendas_transportadoras" ADD CONSTRAINT "vendas_transportadoras_fk2" FOREIGN KEY ("vendas_id") REFERENCES "vendas" ("id");
ALTER TABLE "vendas_abandonadas" ADD CONSTRAINT "vendas_abandonadas_fk1" FOREIGN KEY ("vendas_id") REFERENCES "vendas" ("id");
ALTER TABLE "compras" ADD CONSTRAINT "compras_fornecedores_fk1" FOREIGN KEY ("fornecedores_id") REFERENCES "fornecedores" ("id");
ALTER TABLE "compras_produtos" ADD CONSTRAINT "compras_produtos_fk1" FOREIGN KEY ("compras_id") REFERENCES "compras" ("id");
ALTER TABLE "compras_produtos" ADD CONSTRAINT "compras_produtos_fk2" FOREIGN KEY ("produtos_id") REFERENCES "produtos" ("id");
ALTER TABLE "descontos_produtos" ADD CONSTRAINT "descontos_produtos_fk1" FOREIGN KEY ("desconto_id") REFERENCES "descontos" ("id");
ALTER TABLE "descontos_produtos" ADD CONSTRAINT "descontos_produtos_fk2" FOREIGN KEY ("produto_id") REFERENCES "produtos" ("id");
ALTER TABLE "descontos_categorias" ADD CONSTRAINT "descontos_categorias_fk1" FOREIGN KEY ("desconto_id") REFERENCES "descontos" ("id");
ALTER TABLE "descontos_categorias" ADD CONSTRAINT "descontos_categorias_fk2" FOREIGN KEY ("categoria_id") REFERENCES "categorias" ("id");
ALTER TABLE "taxas_produtos" ADD CONSTRAINT "taxas_produtos_fk1" FOREIGN KEY ("taxa_id") REFERENCES "taxas" ("id");
ALTER TABLE "taxas_produtos" ADD CONSTRAINT "taxas_produtos_fk2" FOREIGN KEY ("produto_id") REFERENCES "produtos" ("id");
ALTER TABLE "taxas_categorias" ADD CONSTRAINT "taxas_categorias_fk1" FOREIGN KEY ("taxa_id") REFERENCES "taxas" ("id");
ALTER TABLE "taxas_categorias" ADD CONSTRAINT "taxas_categorias_fk2" FOREIGN KEY ("categoria_id") REFERENCES "categorias" ("id");
ALTER TABLE "taxas_vendas" ADD CONSTRAINT "taxas_vendas_fk1" FOREIGN KEY ("vendas_id") REFERENCES "vendas" ("id");
ALTER TABLE "taxas_vendas" ADD CONSTRAINT "taxas_vendas_fk2" FOREIGN KEY ("taxas_id") REFERENCES "taxas" ("id");
ALTER TABLE "tributos_taxas" ADD CONSTRAINT "tributos_taxas_fk1" FOREIGN KEY ("tributo_id") REFERENCES "tributos" ("id");
ALTER TABLE "tributos_taxas" ADD CONSTRAINT "tributos_taxas_fk2" FOREIGN KEY ("taxas_id") REFERENCES "taxas" ("id");
ALTER TABLE "tributos_vendas" ADD CONSTRAINT "tributos_vendas_fk1" FOREIGN KEY ("tributo_id") REFERENCES "tributos" ("id");
ALTER TABLE "tributos_vendas" ADD CONSTRAINT "tributos_vendas_fk2" FOREIGN KEY ("vendas_id") REFERENCES "vendas" ("id");