Advertisement
Guest User

Untitled

a guest
Apr 25th, 2016
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 13.41 KB | None | 0 0
  1. CREATE TYPE tipo_logradouro AS ENUM ('AVE','PRA','RUA','TRA','ROD','VIL');
  2. CREATE TYPE tipo_cliente AS ENUM ('F','J');
  3. CREATE TYPE sexo AS ENUM ('M','F');
  4. CREATE TYPE situacao AS ENUM('A','P','T');
  5. CREATE TYPE estado_civil AS ENUM('S','C','D','V','O');
  6.  
  7. CREATE TABLE funcao (
  8.     codigo  SERIAL,
  9.     nome    VARCHAR(50),
  10.     salario money,
  11.     CONSTRAINT  KFUNCAO PRIMARY KEY(codigo)
  12.     );
  13.  
  14. CREATE TABLE pais (
  15.     sigla   CHAR(2) NOT NULL,
  16.     nome    VARCHAR(40),
  17.     CONSTRAINT  KPAIS   PRIMARY KEY(sigla)
  18.     );
  19.  
  20. CREATE TABLE uf (
  21.     sigla   CHAR(2) NOT NULL,
  22.     pais    CHAR(2) NOT NULL,
  23.     nome    CHAR(30),
  24.     CONSTRAINT  KUF PRIMARY KEY(sigla),
  25.     CONSTRAINT  DEP_PAIS_UF FOREIGN KEY(pais)   REFERENCES pais(sigla)  MATCH SIMPLE
  26.     ON UPDATE CASCADE   ON DELETE NO ACTION
  27.     );
  28.  
  29. CREATE TABLE cidade(
  30.     codigo  SERIAL,
  31.     nome    VARCHAR(40),
  32.     uf  CHAR(2) NOT NULL,
  33.     pais    CHAR(2) NOT NULL,
  34.     CONSTRAINT  KCIDADE PRIMARY KEY(codigo),
  35.     CONSTRAINT  DEP_UF_CIDADE   FOREIGN KEY(uf) REFERENCES uf(sigla)    MATCH SIMPLE
  36.     ON UPDATE CASCADE   ON DELETE NO ACTION,
  37.     CONSTRAINT  DEP_UF_PAIS FOREIGN KEY(pais)   REFERENCES pais(sigla)  MATCH SIMPLE
  38.     ON UPDATE CASCADE   ON DELETE NO ACTION
  39.     );
  40.    
  41. CREATE TABLE funcionario (
  42.     codigo  SERIAL,
  43.     nome    VARCHAR(30) NOT NULL,
  44.     sexo    sexo    NOT NULL,
  45.     setor   SMALLINT    NOT NULL,
  46.     ramal_individual    VARCHAR(4),
  47.     estado_civil    estado_civil NOT NULL,
  48.     data_nascimento DATE    NOT NULL,
  49.     rg_numero   VARCHAR(15),
  50.     nacionalidade   CHAR(2) NOT NULL,
  51.     naturalidade    INT NOT NULL,
  52.     cpf CHAR(11),
  53.     sangue_fator    VARCHAR(2),
  54.     sangue_rh   CHAR(1),
  55.     tipo_logradouro tipo_logradouro,
  56.     logradouro  VARCHAR(30) NOT NULL,
  57.     complemento VARCHAR(30),
  58.     bairro  VARCHAR(20),
  59.     cidade  INT NOT NULL,
  60.     uf  CHAR(2),
  61.     cep CHAR(8),
  62.     fone    VARCHAR(14),
  63.     funcao  INT NOT NULL,
  64.     admissao    DATE    NOT NULL,
  65.     email   VARCHAR(40),
  66.     salario money   NOT NULL,
  67.     CONSTRAINT  KFUNCIONARIO    PRIMARY KEY(codigo),
  68.     CONSTRAINT  DEP_CIDADE_FUNCIONARIO  FOREIGN KEY(cidade) REFERENCES cidade(codigo) MATCH SIMPLE
  69.     ON UPDATE CASCADE   ON DELETE NO ACTION,
  70.     CONSTRAINT  DEP_UF_FUNCIONARIO  FOREIGN KEY(uf) REFERENCES uf(sigla) MATCH SIMPLE
  71.     ON UPDATE CASCADE   ON DELETE NO ACTION,
  72.     CONSTRAINT  DEP_FUNCAO_FUNCIONARIO  FOREIGN KEY(funcao) REFERENCES funcao(codigo) MATCH SIMPLE
  73.     ON UPDATE CASCADE   ON DELETE NO ACTION
  74.     );
  75. ALTER SEQUENCE funcionario_codigo_seq RESTART WITH 100000;
  76.  
  77. CREATE TABLE setor (
  78.     codigo  SERIAL,
  79.     nome    VARCHAR(50),
  80.     sigla   CHAR(10),
  81.     ramal   CHAR(3),
  82.     superior    SMALLINT,
  83.     responsavel INT,
  84.     CONSTRAINT  KSETOR  PRIMARY KEY(codigo),
  85.     CONSTRAINT  DEP_RESPONSAVEL_SETOR   FOREIGN KEY(responsavel)    REFERENCES funcionario(codigo)  MATCH SIMPLE
  86.     ON UPDATE CASCADE   ON DELETE NO ACTION,
  87.     CONSTRAINT  DEP_SETOR_SETOR FOREIGN KEY(superior)   REFERENCES setor(codigo)    MATCH SIMPLE
  88.     ON UPDATE CASCADE   ON DELETE NO ACTION
  89.     );
  90.  
  91. CREATE TABLE cliente (
  92.     codigo  SERIAL,
  93.     cgc_cpf VARCHAR(15) NOT NULL,
  94.     tipo    tipo_cliente    NOT NULL,
  95.     razao_social    VARCHAR(30) NOT NULL,
  96.     tipo_logradouro tipo_logradouro NOT NULL,
  97.     logradouro  VARCHAR(30),
  98.     complemento VARCHAR(20),
  99.     bairro  VARCHAR(20) NOT NULL,
  100.     cidade  INT NOT NULL,
  101.     uf  CHAR(2),
  102.     pais    CHAR(2),
  103.     cep CHAR(8) NOT NULL,
  104.     fone    VARCHAR(14) NOT NULL,
  105.     contato VARCHAR(30) NOT NULL,
  106.     fax VARCHAR(14),
  107.     insc_est    VARCHAR(16),
  108.     email   VARCHAR(40),
  109.     obs text,
  110.     CONSTRAINT KCLIENT  PRIMARY KEY (codigo),
  111.     CONSTRAINT  DEP_CIDADE_CLIENTE  FOREIGN KEY(cidade) REFERENCES cidade(codigo) MATCH SIMPLE
  112.     ON UPDATE CASCADE ON DELETE NO ACTION,
  113.     CONSTRAINT  DEP_UF_CLIENTE  FOREIGN KEY(uf) REFERENCES uf(sigla) MATCH SIMPLE
  114.     ON UPDATE CASCADE ON DELETE NO ACTION,
  115.     CONSTRAINT  DEP_PAIS_CLIENTE    FOREIGN KEY(pais)   REFERENCES pais(sigla) MATCH SIMPLE
  116.     ON UPDATE CASCADE ON DELETE NO ACTION
  117.     );
  118. ALTER SEQUENCE cliente_codigo_seq RESTART WITH 2000000;
  119.  
  120.  
  121. CREATE TABLE tipo_produto (
  122.     codigo  SERIAL,
  123.     nome    VARCHAR(50),
  124.     CONSTRAINT  KTIPOPRODUTO    PRIMARY KEY(codigo)
  125.     );
  126.  
  127. CREATE TABLE produto (
  128.     codigo  SERIAL,
  129.     nome    VARCHAR(40) NOT NULL,
  130.     tipo    SMALLINT    NOT NULL,
  131.     unidade CHAR(3) NOT NULL,
  132.     estoque_real    NUMERIC(16,3),
  133.     estoque_virtual NUMERIC(16,3),
  134.     estoque_minimo  NUMERIC(16,3),
  135.     custo   money,
  136.     venda   money,
  137.     CONSTRAINT  KPRODUTO    PRIMARY KEY(codigo),
  138.     CONSTRAINT  DEP_TIPO    FOREIGN KEY(tipo)   REFERENCES tipo_produto(codigo) MATCH SIMPLE
  139.     ON UPDATE CASCADE   ON DELETE CASCADE
  140.     );
  141. ALTER SEQUENCE produto_codigo_seq RESTART WITH 1000;
  142.  
  143. CREATE TABLE pedido (
  144.     codigo  SERIAL,
  145.     cliente SMALLINT    NOT NULL,
  146.     data_pedido DATE    NOT NULL,
  147.     total   money,
  148.     situacao    situacao,
  149.     vendedor    INT,
  150.     CONSTRAINT  KPEDIDO PRIMARY KEY(codigo),
  151.     CONSTRAINT  DEP_CLIENTE_PEDIDO  FOREIGN KEY(cliente)    REFERENCES cliente(codigo)  MATCH SIMPLE
  152.     ON UPDATE CASCADE   ON DELETE NO ACTION,
  153.     CONSTRAINT  DEP_VENDEDEDOR_PEDIDO   FOREIGN KEY(vendedor)   REFERENCES funcionario(codigo)  MATCH SIMPLE
  154.     ON UPDATE CASCADE   ON DELETE NO ACTION
  155.     );
  156. ALTER SEQUENCE pedido_codigo_seq RESTART WITH 10000000;
  157.  
  158. CREATE TABLE itens_pedido (
  159.     pedido  INT NOT NULL,
  160.     produto SMALLINT    NOT NULL,
  161.     quant   NUMERIC(10,3)   NOT NULL,
  162.     total   money,
  163.     situacao    situacao,
  164.     CONSTRAINT  KITENSPEDIDO    PRIMARY KEY(pedido, produto),
  165.     CONSTRAINT  DEP_PEDIDO_ITEM FOREIGN KEY(pedido) REFERENCES pedido(codigo)   MATCH SIMPLE
  166.     ON UPDATE CASCADE   ON DELETE NO ACTION,
  167.     CONSTRAINT  DEP_PRODUTO_ITEM    FOREIGN KEY(produto)    REFERENCES produto(codigo)  MATCH SIMPLE
  168.     ON UPDATE CASCADE   ON DELETE NO ACTION
  169.     );
  170.  
  171. ALTER TABLE public.funcionario
  172.     ADD CONSTRAINT DEP_SETOR_FUNCIONARIO    FOREIGN KEY(setor)  REFERENCES setor(codigo)    MATCH SIMPLE
  173.     ON UPDATE CASCADE   ON DELETE NO ACTION;
  174.  
  175.  
  176. -- Preenchendo Tabela de Países
  177. -- * Utilizando apenas 2 países, Brasil e EUA.
  178. INSERT INTO public.pais (sigla,nome) VALUES ('BR', 'Brasil');
  179. INSERT INTO public.pais (sigla,nome) VALUES ('EU', 'Estados Unidos');
  180.  
  181. -- Preenchendo tabela de UF
  182. -- * Utilizando alguns estados do nordeste.
  183. INSERT INTO public.uf (sigla,pais,nome) VALUES ('PB', 'BR', 'Paraíba');
  184. INSERT INTO public.uf (sigla,pais,nome) VALUES ('PE', 'BR', 'Pernambuco');
  185. INSERT INTO public.uf (sigla,pais,nome) VALUES ('BA', 'BR', 'Bahia');
  186. INSERT INTO public.uf (sigla,pais,nome) VALUES ('CE', 'BR', 'Ceará');
  187. INSERT INTO public.uf (sigla,pais,nome) VALUES ('SE', 'BR', 'Sergipe');
  188. INSERT INTO public.uf (sigla,pais,nome) VALUES ('AL', 'BR', 'Alagoas');
  189. INSERT INTO public.uf (sigla,pais,nome) VALUES ('RN', 'BR', 'Rio Grande do Norte');
  190.  
  191. -- Preenchendo tabela de cidades
  192. -- * Algumas cidades aleatórias.
  193. INSERT INTO public.cidade (nome, uf, pais) VALUES ('João Pessoa', 'PB', 'BR');
  194. INSERT INTO public.cidade (nome, uf, pais) VALUES ('Campina Grande', 'PB', 'BR');
  195. INSERT INTO public.cidade (nome, uf, pais) VALUES ('Salvador', 'BA', 'BR');
  196. INSERT INTO public.cidade (nome, uf, pais) VALUES ('Feira de Santana', 'BA', 'BR');
  197. INSERT INTO public.cidade (nome, uf, pais) VALUES ('Fortaleza', 'CE', 'BR');
  198. INSERT INTO public.cidade (nome, uf, pais) VALUES ('Natal', 'RN', 'BR');
  199. INSERT INTO public.cidade (nome, uf, pais) VALUES ('Aracaju', 'SE', 'BR');
  200.  
  201. -- Prenchendo clientes
  202. -- * Alguns campos não obrigatorios foram deixados e branco.
  203. -- * O preenchimento utiliza um select para buscar informações de outros campos.
  204. INSERT INTO public.cliente (cgc_cpf,    tipo,   razao_social,   tipo_logradouro,    logradouro,     complemento,    bairro,     cidade,                         uf,                         pais,                           cep,        fone,           contato,        email)
  205.         VALUES ('02312354365',  'J',    'MR. Veiculos', 'RUA',          'Jose Domenico',    'apto 203', 'Cabo Branco',  (SELECT codigo FROM cidade WHERE nome = 'João Pessoa'), (SELECT uf FROM cidade WHERE nome = 'João Pessoa'), (SELECT pais FROM cidade WHERE nome = 'João Pessoa'),   '52012421', '+5583988654592',   'Paulo Ferreira',   'paulo@gmail.com');
  206. INSERT INTO public.cliente (cgc_cpf,    tipo,   razao_social,       tipo_logradouro,    logradouro, bairro,     cidade,                             uf,                                 pais,                               cep,        fone,           contato,        email)
  207.         VALUES ('09583859235',  'J',    'Hyundai Peças',    'RUA',          'Ouro Claro',   'Cabo Branco',  (SELECT codigo FROM cidade WHERE nome = 'Feira de Santana'),    (SELECT uf FROM cidade WHERE nome = 'Feira de Santana'),    (SELECT pais FROM cidade WHERE nome = 'Feira de Santana'),  '52012421', '+5583988654592',   'Paulo Ferreira',   'paulo@gmail.com');
  208. INSERT INTO public.cliente (cgc_cpf,    tipo,   razao_social,       tipo_logradouro,    logradouro,     complemento,    bairro,     cidade,                         uf,                         pais,                           cep,        fone,           contato,        email)
  209.         VALUES ('12382481234',  'F',    'José Aristides',   'AVE',          'Presidente Vargas',    'apto 1001',    'Aurora',   (SELECT codigo FROM cidade WHERE nome = 'Salvador'),    (SELECT uf FROM cidade WHERE nome = 'Salvador'),    (SELECT pais FROM cidade WHERE nome = 'Salvador'),  '12345144', '+5575983827492',   'José Aristides',   'jose@gmail.com');
  210. INSERT INTO public.cliente (cgc_cpf,    tipo,   razao_social,       tipo_logradouro,    logradouro,     complemento,    bairro,     cidade,                         uf,                         pais,                           cep,        fone,           contato,        email)
  211.         VALUES ('02491823842',  'F',    'Claudio Costa',    'RUA',          'Francisco Carneiro',   'apto 502', 'Estrela',  (SELECT codigo FROM cidade WHERE nome = 'João Pessoa'), (SELECT uf FROM cidade WHERE nome = 'João Pessoa'), (SELECT pais FROM cidade WHERE nome = 'João Pessoa'),   '64353623', '+5583945436322',   'Claudio Costa',    'claudio@gmail.com');
  212. INSERT INTO public.cliente (cgc_cpf,    tipo,   razao_social,       tipo_logradouro,    logradouro, bairro,     cidade,                             uf,                             pais,                               cep,        fone,           contato,        email)
  213.         VALUES ('12731284711',  'F',    'Andre Bezerra',    'RUA',          'José Americo', 'Liberdade',    (SELECT codigo FROM cidade WHERE nome = 'Feira de Santana'),    (SELECT uf FROM cidade WHERE nome = 'Feira de Santana'),    (SELECT pais FROM cidade WHERE nome = 'Feira de Santana'),  '12435325',     '+5583927461747',   'Andre Bezerra',    'andre@gmail.com');
  214. INSERT INTO public.cliente (cgc_cpf,    tipo,   razao_social,       tipo_logradouro,    logradouro,     bairro,     cidade,                             uf,                             pais,                               cep,        fone,           contato,        email)
  215.         VALUES ('17284912824',  'J',    'Martelinho de Ouro',   'AVE',          'General Osorio',   'Cabula',   (SELECT codigo FROM cidade WHERE nome = 'Campina Grande'),  (SELECT uf FROM cidade WHERE nome = 'Campina Grande'),  (SELECT pais FROM cidade WHERE nome = 'Campina Grande'),    '81274812', '+5583923535321',   'Ademar Gonçalves', 'ademar@gmail.com');
  216. INSERT INTO public.cliente (cgc_cpf,    tipo,   razao_social,       tipo_logradouro,    logradouro,     bairro,     cidade,                         uf,                         pais,                           cep,        fone,           contato,        email)
  217.         VALUES ('91249821498',  'J',    'Irmãos Coragem',   'AVE',          'Presidente Dutra', 'Panorama', (SELECT codigo FROM cidade WHERE nome = 'Fortaleza'),   (SELECT uf FROM cidade WHERE nome = 'Fortaleza'),   (SELECT pais FROM cidade WHERE nome = 'Fortaleza'), '12847842', '+5583988611241',   'Guilherme Paiva',  'guilherme@gmail.com');
  218. INSERT INTO public.cliente (cgc_cpf,    tipo,   razao_social,       tipo_logradouro,    logradouro, complemento,    bairro,     cidade,                         uf,                         pais,                           cep,        fone,           contato,        email)
  219.         VALUES ('01249249483',  'J',    'Sucatão do Nelson',    'AVE',          'JK',       'apto 203', 'Fraternidade', (SELECT codigo FROM cidade WHERE nome = 'Salvador'),    (SELECT uf FROM cidade WHERE nome = 'Salvador'),    (SELECT pais FROM cidade WHERE nome = 'Salvador'),  '14872812', '+5588918371823',   'Joao Carlos',  'joao@gmail.com');
  220.  
  221. -- Preenchendo setores
  222. -- * Primeiramente os setores não possuem responsáveis
  223. -- * Após o preenchimento dos funcionarios, uma rotina ALTER TABLE, preencherá os responsáveis
  224. INSERT INTO setor (nome, sigla)
  225.         VALUES ('Setor de Administração e Contabilidade', 'ADM');
  226. INSERT INTO setor (nome, sigla)
  227.         VALUES ('Setor de estoque e armazenagem', 'ESTOQUE');
  228. INSERT INTO setor (nome, sigla, superior)
  229.         VALUES ('Setor de entregas e distribuição', 'ENTREGA', (SELECT codigo FROM setor WHERE sigla = 'ESTOQUE'));
  230. INSERT INTO setor (nome, sigla, superior)
  231.         VALUES ('Setor de Logística', 'LOGISTICA', (SELECT codigo FROM setor WHERE sigla = 'ADM'));
  232. INSERT INTO setor (nome, sigla, superior)
  233.         VALUES ('Setor de Vendas', 'VENDAS',  (SELECT codigo FROM setor WHERE sigla = 'ADM'));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement