#ifdef PRJ /* PRJ_TAB.SRC * * $Revision$ * $Id$ */ /* Om een naam te kunnen geven aan een scenario en deze later weer op te kunnen roepen */ CREATE_TABLE(prj_scenario, 0) ( prj_scenario_key NUMBER(10) _IDENTITY(10000000,1) CONSTRAINT prj_k_prj_scenario_key PRIMARY KEY, prj_scenario_omschrijving VARCHAR2(30), NOT_NULL(prj_scenario_omschrijving, prj_r_prj_scenario_omschr), mld_melding_key NUMBER(10) CONSTRAINT prj_r_mld_melding_key1 REFERENCES mld_melding ON DELETE CASCADE, prj_scenario_status VARCHAR2(30), prj_scenario_opmerking VARCHAR2(2000), prj_scenario_datum DATE, prj_scenario_raming NUMBER(10), prs_perslid_key NUMBER(10) CONSTRAINT prj_r_prs_perslid_key0 REFERENCES prs_perslid(prs_perslid_key), prj_scenario_aanmaak DATE DEFAULT SYSDATE, prj_scenario_verwerkt DATE ); /* Om afwijkende oppervlaktes en nieuwe ruimtes te ondersteunen; een ruimte zou ook nog kunnen vervallen in dit scenario, dus dat moet ook kunnen. Een andere ruimtefunctie: idem. Kunnen we ook een ander ruimtenummer aan? */ CREATE_TABLE(prj_ruimte, 0) ( prj_ruimte_key NUMBER(10) _IDENTITY(10000000,1) CONSTRAINT prj_k_prj_ruimte_key PRIMARY KEY, prj_scenario_key NUMBER(10) NOT_NULL(prj_scenario_key, prj_c_prj_scenario_key1) CONSTRAINT prj_r_prj_scenario_key1 REFERENCES prj_scenario(prj_scenario_key) ON DELETE CASCADE, alg_ruimte_key NUMBER(10) CONSTRAINT prj_r_alg_ruimte_key2 REFERENCES alg_ruimte(alg_ruimte_key), alg_verdieping_key NUMBER(10) CONSTRAINT prj_r_alg_verdieping_key2 REFERENCES alg_verdieping(alg_verdieping_key), alg_srtruimte_key NUMBER(10) CONSTRAINT prj_r_alg_srtruimte_key REFERENCES alg_srtruimte(alg_srtruimte_key), prj_ruimte_nr VARCHAR2(10) NOT_NULL(prj_ruimte_nr, prj_c_alg_ruimte_nr), prj_ruimte_upper_nr VARCHAR2(10) NOT_NULL(prj_ruimte_upper_nr, prj_c_alg_ruimte_upper_nr), prj_ruimte_omschrijving VARCHAR2(30), prj_ruimte_aanmaak DATE DEFAULT SYSDATE NOT_NULL(prj_ruimte_aanmaak, prj_c_prj_ruimte_aanmaak), prj_ruimte_verwijder DATE DEFAULT NULLDATUM, prj_ruimte_bruto_vloeropp NUMBER(8,2) CONSTRAINT prj_c_prj_ruimte_vloeropp CHECK(prj_ruimte_bruto_vloeropp >= 0), prj_ruimte_omtrek NUMBER(8,2), CONSTRAINT prj_c_prj_ruimte_omtrek CHECK(prj_ruimte_omtrek >= 0), prj_ruimte_inhoud NUMBER(12,2) CONSTRAINT prj_c_prj_ruimte_inhoud CHECK(prj_ruimte_inhoud >= 0), prj_ruimte_opmerking VARCHAR2(50), CONSTRAINT prj_u_prj_ruimte_upper_nr UNIQUE(prj_scenario_key, alg_verdieping_key, prj_ruimte_upper_nr, prj_ruimte_verwijder) ); /* Nieuwe werkplekken? Alle werkplekken van een verdieping in scenario? */ CREATE_TABLE(prj_werkplek, 0) ( prj_werkplek_key NUMBER(10) CONSTRAINT prj_k_prj_werkplek_key PRIMARY KEY, prs_werkplek_key NUMBER(10) CONSTRAINT prj_r_prs_werkplek_key REFERENCES prs_werkplek(prs_werkplek_key) ON DELETE CASCADE, prj_werkplek_volgnr NUMBER(4) NOT_NULL(prj_werkplek_volgnr, prj_c_prj_werkplek_volgnr), prj_werkplek_omschrijving VARCHAR2(30), prj_werkplek_vastopp NUMBER(1) CONSTRAINT prj_c_prj_werkplek_vastopp CHECK(prj_werkplek_vastopp IS NULL OR prj_werkplek_vastopp = 1), prj_werkplek_opp NUMBER(8,2) CONSTRAINT prj_c_prs_werkplek_opp CHECK(prj_werkplek_opp >= 0 OR prj_werkplek_opp IS NULL), prj_ruimte_key NUMBER(10) NOT_NULL(prj_ruimte_key, prj_r_prs_prj_ruimte_key1) CONSTRAINT prs_r_prs_prj_ruimte_key2 REFERENCES prj_ruimte(prj_ruimte_key) ON DELETE CASCADE, prj_werkplek_dwgx NUMBER(10,3), prj_werkplek_dwgy NUMBER(10,3), prj_werkplek_dwgz NUMBER(10,3), prj_werkplek_dwgrotatie NUMBER(5,1), prj_werkplek_dwgschaal NUMBER(5,2), prj_werkplek_aanmaak DATE DEFAULT SYSDATE NOT_NULL(prj_werkplek_aanmaak, prj_c_prj_werkplek_aanmaak), prj_werkplek_verwijder DATE DEFAULT NULLDATUM, CONSTRAINT prj_u_prj_werkplek_volgnr UNIQUE(prj_ruimte_key, prj_werkplek_volgnr, prj_werkplek_verwijder) ); CREATE_TABLE(prj_ruimteafdeling,0) ( prj_ruimteafdeling_key NUMBER(10) CONSTRAINT prj_k_prs_ruimteafdeling_key PRIMARY KEY, prs_ruimteafdeling_key NUMBER(10) CONSTRAINT prj_r_prs_ruimteafd_key REFERENCES prs_ruimteafdeling(prs_ruimteafdeling_key) ON DELETE SET NULL, prs_afdeling_key NUMBER(10) CONSTRAINT prj_c_prs_afdeling_key3 CHECK(prs_afdeling_key IS NOT NULL) CONSTRAINT prj_r_prs_ra_afdeling_key REFERENCES prs_afdeling(prs_afdeling_key) ON DELETE CASCADE, prj_ruimte_key NUMBER(10) CONSTRAINT prj_c_alg_ruimte_key CHECK(prj_ruimte_key IS NOT NULL) CONSTRAINT prj_r_alg_ruimte_key1 REFERENCES prj_ruimte(prj_ruimte_key) ON DELETE CASCADE, prj_ruimteafdeling_bezetting NUMBER(3) DEFAULT 100 CONSTRAINT prj_c_prs_ruimteafd_bezetting2 CHECK (prj_ruimteafdeling_bezetting is not null AND prj_ruimteafdeling_bezetting BETWEEN 0 AND 100), prj_ruimteafdeling_aanmaak DATE DEFAULT SYSDATE, prj_ruimteafdeling_verwijder DATE DEFAULT NULLDATUM, CONSTRAINT prj_u_ruimteafdeling UNIQUE(prs_afdeling_key, prj_ruimte_key, prj_ruimteafdeling_verwijder) ); CREATE_TABLE(prj_perslidwerkplek, 0) ( prj_perslidwerkplek_key NUMBER(10) CONSTRAINT prj_k_prj_perslidwerkplek_key PRIMARY KEY, prs_perslidwerkplek_key NUMBER(10) CONSTRAINT prj_r_prs_perslidwp_key REFERENCES prs_perslidwerkplek(prs_perslidwerkplek_key) ON DELETE CASCADE, prs_perslid_key NUMBER(10) NOT_NULL (prs_perslid_key, prj_c_prs_perslid_key) CONSTRAINT prj_r_prs_perslid_key REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE, // prs_afdeling_key // NUMBER(10) // CONSTRAINT prj_r_prs_pw_afdeling_key REFERENCES prs_afdeling(prs_afdeling_key) ON DELETE CASCADE, prj_werkplek_key NUMBER(10) CONSTRAINT prj_r_prj_werkplek_key REFERENCES prj_werkplek(prj_werkplek_key) ON DELETE CASCADE, prj_perslidwerkplek_bezetting NUMBER(3) DEFAULT 100 CONSTRAINT prj_c_prj_perslidwp_bezetting2 CHECK (prj_perslidwerkplek_bezetting is not null and prj_perslidwerkplek_bezetting BETWEEN 0 AND 100), prj_perslidwerkplek_aanmaak DATE DEFAULT SYSDATE NOT_NULL(prj_perslidwerkplek_aanmaak, prj_c_prj_perslidwp_aanmaak), prj_perslidwerkplek_verwijder DATE DEFAULT NULLDATUM, // CONSTRAINT prj_c_prj_perslidwp_koppeling CHECK( // (prs_perslid_key IS NULL AND prs_afdeling_key IS NOT NULL) OR // (prs_afdeling_key IS NULL AND prs_perslid_key IS NOT NULL) // ), CONSTRAINT prj_u_perslidwerkplek UNIQUE(prs_perslid_key, prj_werkplek_key, prj_perslidwerkplek_verwijder) ); /* Noot: waar in de real world met een gecombineerde key+type wordt gewerkt, hebben we hier twee aparte verwijzingen * waarbij de ruimte_key verplicht is en de werkplek_key optioneel */ CREATE_TABLE(prj_deel, 0) ( prj_deel_key NUMBER(10) CONSTRAINT prj_k_prj_deel_key PRIMARY KEY , ins_deel_key NUMBER(10) CONSTRAINT prj_r_prj_deel_key REFERENCES ins_deel(ins_deel_key) , ins_srtdeel_key NUMBER(10) NOT_NULL(ins_srtdeel_key, prj_r_deel_srtdeel_key1) CONSTRAINT prj_r_deel_srtdeel_key2 REFERENCES ins_srtdeel , prj_ruimte_key NUMBER(10) NOT_NULL(prj_ruimte_key, prj_r_prs_prj_ruimte_key2) CONSTRAINT prs_r_prs_prj_ruimte_key3 REFERENCES prj_ruimte(prj_ruimte_key) ON DELETE CASCADE , prj_werkplek_key NUMBER(10) CONSTRAINT prj_r_prj_werkplek_key2 REFERENCES prj_werkplek(prj_werkplek_key) ON DELETE CASCADE , prj_deel_omschrijving VARCHAR2(60) CONSTRAINT prj_c_ins_deel_omschrijving CHECK(prj_deel_omschrijving IS NOT NULL) , prj_deel_dwgx NUMBER(10,3) , prj_deel_dwgy NUMBER(10,3) , prj_deel_dwgz NUMBER(10,3) , prj_deel_dwgrotatie NUMBER(5,1) , prj_deel_dwgschaal NUMBER(5,2) , prj_deel_aanmaak DATE DEFAULT SYSDATE , prj_deel_verwijder DATE DEFAULT NULL ); CREATE_TABLE(prj_selectie, 0) ( prj_selectie_key NUMBER(10) _IDENTITY(10000000,1) CONSTRAINT prj_k_prj_selectie_key PRIMARY KEY, prj_scenario_key NUMBER(10) NOT_NULL(prj_scenario_key, prj_c_prj_scenario_key2) CONSTRAINT prj_r_prj_scenario_key2 REFERENCES prj_scenario(prj_scenario_key) ON DELETE CASCADE, prs_perslid_key NUMBER(10) CONSTRAINT prj_r_prs_perslid_key2 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE, prj_selectie_tabelnaam VARCHAR2(32) CONSTRAINT prj_c_prj_selectie_tabelnaam1 CHECK(prj_selectie_tabelnaam IN ('PRJ_WERKPLEK', 'PRJ_PERSLIDWERKPLEK', 'PRJ_DEEL', 'PRS_PERSLID', 'PRS_AFDELING')) NOT_NULL(prj_selectie_tabelnaam, prj_c_prj_selectie_tabelnm2), prj_selectie_tabelkey NUMBER(10), NOT_NULL(prj_selectie_tabelkey, prj_c_prj_selectie_tabelkey), prj_selectie_aanmaak DATE DEFAULT SYSDATE ); CREATE_TABLE(prj_scenario_note, 0) ( prj_scenario_note_key NUMBER(10) _IDENTITY(10000000,1) CONSTRAINT prj_k_prj_scenario_reamrk_key PRIMARY KEY, prj_scenario_key NUMBER(10) NOT_NULL(prj_scenario_key, prj_c_prj_scenario_key6) CONSTRAINT prj_r_prj_scenario_key6 REFERENCES prj_scenario(prj_scenario_key) ON DELETE CASCADE, prj_scenario_note_nr NUMBER(3), prj_scenario_note_DWGX NUMBER(10), prj_scenario_note_DWGY NUMBER(10), prj_scenario_note_omschrijving VARCHAR2(2000), prj_ruimte_key NUMBER(10) CONSTRAINT prj_r_prj_ruimte_key3 REFERENCES prj_ruimte(prj_ruimte_key) ON DELETE SET NULL, alg_verdieping_key NUMBER(10) CONSTRAINT prj_r_alg_verdieping_key3 REFERENCES alg_verdieping(alg_verdieping_key) ON DELETE CASCADE, prs_perslid_key NUMBER(10) CONSTRAINT prj_r_prs_perslid_key6 REFERENCES prs_perslid(prs_perslid_key), prj_scenario_note_aanmaak DATE DEFAULT SYSDATE ); ALTER TABLE cad_imp_contour ADD prj_scenario_key NUMBER(10) REFERENCES prj_scenario(prj_scenario_key) ON DELETE CASCADE; REGISTERONCE('$Id$') #endif // PRJ