Advertisement
jets-

setupOO

Nov 6th, 2015
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 7.30 KB | None | 0 0
  1. /* Drops types */
  2.  
  3. DROP TYPE tp_funcionarios FORCE;
  4. DROP TYPE tp_telefone FORCE;
  5. DROP TYPE tp_enderecos_funcionarios FORCE;
  6. DROP TYPE tp_clientes FORCE;
  7. DROP TYPE tp_representantes FORCE;
  8. DROP TYPE tp_telefones_funcionarios FORCE;
  9. DROP TYPE tp_nt_telefones_clientes FORCE;
  10. DROP TYPE tp_enderecos_clientes FORCE;
  11. DROP TYPE tp_embarcacoes FORCE;
  12. DROP TYPE tp_especificacoes FORCE;
  13. DROP TYPE tp_responsaveis_setores FORCE;
  14. DROP TYPE tp_setores FORCE;
  15. DROP TYPE tp_projetos_criacoes FORCE;
  16. DROP TYPE tp_projetos_restauracoes FORCE;
  17. DROP TYPE tp_execucoes_projetos FORCE;
  18. DROP TYPE tp_solicitacoes_projetos FORCE;
  19. DROP TYPE tp_equipamentos FORCE;
  20. DROP TYPE tp_compras_equipamentos FORCE;
  21. DROP TYPE tp_manutencoes_equipamentos FORCE;
  22.  
  23. /* Create types */
  24.  
  25. CREATE OR REPLACE TYPE tp_funcionarios AS object (
  26.   cpf VARCHAR2(11),
  27.   nome VARCHAR2(50),
  28.   data_admissao DATE,
  29.   data_nascimento DATE,
  30.   cpf_super REF tp_funcionarios
  31. );
  32. /
  33.  
  34. CREATE OR REPLACE TYPE tp_telefone AS object(
  35.   numero VARCHAR(15)
  36. );
  37. /
  38.  
  39. CREATE OR REPLACE TYPE tp_telefones_funcionarios AS VARRAY(5) OF tp_telefone;
  40. /
  41.  
  42. CREATE OR REPLACE TYPE tp_enderecos_funcionarios AS object(
  43.   funcionario_cpf REF tp_funcionarios,
  44.   cep VARCHAR2(8),
  45.   descricao VARCHAR2(50)
  46. );
  47. /
  48.  
  49. CREATE OR REPLACE TYPE tp_clientes AS object (
  50.   cnpj VARCHAR2(15),
  51.   nome_empresa VARCHAR2(50),
  52.   email VARCHAR2(50),
  53.   site VARCHAR2(50)
  54. );
  55. /
  56.  
  57. CREATE OR REPLACE TYPE tp_representantes AS object (
  58.   cpf_representante VARCHAR2(15),
  59.   empresa_cnpj REF tp_clientes,
  60.   nome VARCHAR2(50)
  61. );
  62. /
  63.  
  64. CREATE TYPE tp_nt_telefones_clientes AS TABLE OF tp_telefone;
  65. /
  66.  
  67. CREATE OR REPLACE TYPE tp_enderecos_clientes AS object (
  68.   cliente_cnpj REF tp_clientes,
  69.   cep VARCHAR2(8),
  70.   descricao VARCHAR2(50)
  71. );
  72. /
  73.  
  74. CREATE OR REPLACE TYPE tp_embarcacoes AS object(
  75.   certificado VARCHAR2(50),
  76.   tipo VARCHAR2(50),
  77.   data_fabricacao DATE
  78. );
  79. /
  80.  
  81. CREATE OR REPLACE TYPE tp_especificacoes AS object(
  82.   versao DECIMAL(5, 2),
  83.   peso DECIMAL(6, 3),
  84.   comprimento DECIMAL(5, 3),
  85.   altura DECIMAL(5, 3),
  86.   capacidade_ocupantes INTEGER,
  87.   capacidade_carga DECIMAL(5, 3),
  88.   certificado_embarcacao REF tp_embarcacoes
  89. );
  90. /
  91.  
  92. CREATE OR REPLACE TYPE tp_setores AS object (
  93.   id INTEGER,
  94.   nome_setor VARCHAR2(50),
  95.   descricao VARCHAR2(50)
  96. );
  97. /
  98.  
  99. CREATE OR REPLACE TYPE tp_projetos AS object (
  100.   id INTEGER,
  101.   nome VARCHAR2(50),
  102.   descricao VARCHAR2(200),
  103.   orcamento DECIMAL(5, 2),
  104.   data_inicio DATE,
  105.   data_previsao_termino DATE,
  106.   data_termino DATE
  107. ) NOT FINAL NOT INSTANTIABLE;
  108. /
  109.  
  110. CREATE OR REPLACE TYPE tp_projetos_criacoes UNDER tp_projetos (
  111.   modelagem VARCHAR2(50)
  112. );
  113. /
  114.  
  115. CREATE OR REPLACE TYPE tp_projetos_restauracoes UNDER tp_projetos(
  116.   partes_reutilizadas INTEGER,
  117.   partes_descartadas INTEGER
  118. );
  119. /
  120.  
  121. CREATE OR REPLACE TYPE tp_responsaveis_setores AS object (
  122.   funcionario_cpf REF tp_funcionarios,
  123.   setor_id REF tp_setores
  124. );
  125. /
  126.  
  127. CREATE OR REPLACE TYPE tp_execucoes_projetos AS object (
  128.   setor_id REF tp_setores,
  129.   projeto_id REF tp_projetos
  130. );
  131. /
  132.  
  133. CREATE OR REPLACE TYPE tp_solicitacoes_projetos AS object (
  134.   projeto_id REF tp_projetos,
  135.   embarcacao_certificado REF tp_embarcacoes,
  136.   cliente_cnpj REF tp_clientes,
  137.   data_solicitacao DATE
  138. );
  139. /
  140.  
  141. CREATE OR REPLACE TYPE tp_equipamentos AS object (
  142.   id INTEGER,
  143.   nome_equipamento VARCHAR2(50),
  144.   tipo VARCHAR2(50),
  145.   data_uso_inicio DATE,
  146.   data_uso_termino DATE
  147. );
  148. /
  149.  
  150. CREATE OR REPLACE TYPE tp_compras_equipamentos AS object (
  151.   equipamento_id REF tp_equipamentos,
  152.   setor_id REF tp_setores,
  153.   funcionario_cpf REF tp_funcionarios
  154. );
  155. /
  156.  
  157. CREATE OR REPLACE TYPE tp_manutencoes_equipamentos AS object (
  158.   equipamento_id REF tp_equipamentos,
  159.   data_manutencao DATE,
  160.   situacao VARCHAR2(50)
  161. );
  162. /
  163.  
  164. /* Drop tables */
  165. DROP TABLE tb_funcionarios CASCADE CONSTRAINTS;
  166. DROP TABLE tb_telefones_funcionarios CASCADE CONSTRAINTS;
  167. DROP TABLE tb_enderecos_funcionarios CASCADE CONSTRAINTS;
  168. DROP TABLE tb_clientes CASCADE CONSTRAINTS;
  169. DROP TABLE tb_representantes CASCADE CONSTRAINTS;
  170. DROP TABLE tb_telefones_clientes CASCADE CONSTRAINTS;
  171. DROP TABLE tb_enderecos_clientes CASCADE CONSTRAINTS;
  172. DROP TABLE tb_embarcacoes CASCADE CONSTRAINTS;
  173. DROP TABLE tb_especificacoes CASCADE CONSTRAINTS;
  174. DROP TABLE tb_responsaveis_setores CASCADE CONSTRAINTS;
  175. DROP TABLE tb_setores CASCADE CONSTRAINTS;
  176.  
  177. /* DROP TABLE tb_projetos FORCE; tirei, visto que deixou de existir. Agora inserimos direto nas tabelas de especializações usando somente o tp_projetos */
  178.  
  179. DROP TABLE tb_projetos_criacoes CASCADE CONSTRAINTS;
  180. DROP TABLE tb_projetos_restauracoes CASCADE CONSTRAINTS;
  181. DROP TABLE tb_execucoes_projetos CASCADE CONSTRAINTS;
  182. DROP TABLE tb_solicitacoes_projetos CASCADE CONSTRAINTS;
  183. DROP TABLE tb_equipamentos CASCADE CONSTRAINTS;
  184. DROP TABLE tb_compras_equipamentos CASCADE CONSTRAINTS;
  185. DROP TABLE tb_manutencoes_equipamentos CASCADE CONSTRAINTS;
  186.  
  187. /* Create tables */
  188. CREATE TABLE tb_funcionarios OF tp_funcionarios (
  189.   cpf PRIMARY KEY,
  190.   cpf_super WITH ROWID REFERENCES tb_funcionarios
  191. );
  192.  
  193. CREATE TABLE tb_telefones_funcionarios (
  194.   funcionario_cpf REF tp_funcionarios,
  195.   lista_fones tp_telefones_funcionarios
  196. );
  197.  
  198. CREATE TABLE tb_enderecos_funcionarios OF tp_enderecos_funcionarios (
  199.   cep PRIMARY KEY,
  200.   funcionario_cpf WITH rowid REFERENCES tb_funcionarios
  201. );
  202.  
  203. CREATE TABLE tb_clientes OF tp_clientes (
  204.   cnpj PRIMARY KEY
  205. );
  206.  
  207. CREATE TABLE tb_telefones_clientes (
  208.   cliente_cnpj REF tp_clientes,
  209.   lista_fones tp_nt_telefones_clientes
  210. ) nested TABLE lista_fones store AS nt_lista_fones;
  211.  
  212. CREATE TABLE tb_representantes OF tp_representantes (
  213.   cpf_representante PRIMARY KEY,
  214.   empresa_cnpj WITH rowid REFERENCES tb_clientes
  215. );
  216.  
  217. CREATE TABLE tb_enderecos_clientes OF tp_enderecos_clientes (
  218.   cep PRIMARY KEY,
  219.   cliente_cnpj WITH rowid REFERENCES tb_clientes
  220. );
  221.  
  222. CREATE TABLE tb_embarcacoes OF tp_embarcacoes (
  223.   certificado PRIMARY KEY
  224. );
  225.  
  226. CREATE TABLE tb_especificacoes OF tp_especificacoes (
  227.   versao PRIMARY KEY,
  228.   certificado_embarcacao WITH rowid REFERENCES tb_embarcacoes
  229. );
  230.  
  231. CREATE TABLE tb_setores OF tp_setores (
  232.   id PRIMARY KEY
  233. );
  234.  
  235. CREATE TABLE tb_projetos_criacoes OF tp_projetos_criacoes (
  236.   id PRIMARY KEY
  237. );
  238.  
  239. CREATE TABLE projetos_restauracoes OF tp_projetos_restauracoes (
  240.   id PRIMARY KEY
  241. );
  242.  
  243. CREATE TABLE tb_responsaveis_setores OF tp_responsaveis_setores (
  244.   funcionario_cpf WITH rowid REFERENCES tb_funcionarios,
  245.   setor_id WITH rowid REFERENCES tb_setores
  246. );
  247.  
  248. CREATE TABLE tb_execucoes_projetos OF tp_execucoes_projetos (
  249.   setor_id WITH rowid REFERENCES tb_setores,
  250.   projeto_id WITH rowid REFERENCES tb_projetos_criacoes
  251. );
  252.  
  253. CREATE TABLE tb_solicitacoes_projetos OF tp_solicitacoes_projetos (
  254.   projeto_id WITH rowid REFERENCES tb_projetos_criacoes,
  255.   embarcacao_certificado WITH rowid REFERENCES tb_embarcacoes,
  256.   cliente_cnpj WITH rowid REFERENCES tb_clientes
  257. );
  258.  
  259. CREATE TABLE tb_equipamentos OF tp_equipamentos (
  260.   id PRIMARY KEY
  261. );
  262.  
  263. CREATE TABLE tb_compras_equipamentos OF tp_compras_equipamentos (
  264.   equipamento_id WITH rowid REFERENCES tb_equipamentos,
  265.   setor_id WITH rowid REFERENCES tb_setores,
  266.   funcionario_cpf WITH rowid REFERENCES tb_funcionarios
  267. );
  268.  
  269. CREATE TABLE tb_manutencoes_equipamentos OF tp_manutencoes_equipamentos (
  270.   data_manutencao PRIMARY KEY, /* renomeado, antes era só data */
  271.   equipamento_id WITH rowid REFERENCES tb_equipamentos
  272. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement