Files
Database/PRJ/PRJ_TAB.SRC
Peter Feij 9980977ee7 FSN#1254
svn path=/Database/trunk/; revision=9220
2006-05-12 14:34:30 +00:00

292 lines
10 KiB
Plaintext

#ifdef PRJ
/* PRJ_TAB.SRC
*
* $Revision: 16 $
* $Modtime: 12-05-06 10:10 $
*/
#include "comsql.h"
/* 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)
#ifndef MS_SQL
NOT_NULL(prj_ruimte_upper_nr, prj_c_alg_ruimte_upper_nr)
#endif
,
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),
prj_werkplek_volgnr
NUMBER(3)
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_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_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),
prs_perslid_key
NUMBER(10)
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),
prj_werkplek_key
NUMBER(10)
// niet: NOT_NULL(prj_werkplek_key, prj_c_prj_perslidwp_key)
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(
/* PF: ik wil juist wel de afdeling altijd, evt redundant, gevuld is */
-- (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, prs_afdeling_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(30)
CONSTRAINT prj_c_ins_deel_omschrijving CHECK(prj_deel_omschrijving IS NOT NULL)
, prj_deel_aanmaak
DATE
DEFAULT SYSDATE
, prj_deel_verwijder
DATE
DEFAULT NULL
);
CREATE_TABLE(prj_log, 0)
( prj_log_key
NUMBER(10) PRIMARY KEY
, prj_scenario_key
NUMBER(10)
NOT_NULL(prj_scenario_key, prj_c_prj_scenario_key5)
CONSTRAINT prj_r_prj_scenario_key5 REFERENCES prj_scenario(prj_scenario_key)
, prj_log_datum
DATE
DEFAULT SYSDATE
, prj_log_code
VARCHAR(12) NOT NULL
, prj_log_omschrijving
VARCHAR(250)
);
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_tabelnaam CHECK(prj_selectie_tabelnaam1 IN ('PRJ_WERKPLEK', 'PRJ_PERSLIDWERKPLEK', 'PRJ_DEEL', 'PRS_PERSLID', 'PRS_AFDELING'))
NOT_NULL(prj_selectie_tabelnaam2, prj_c_prj_selectie_tabelnaam),
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),
alg_verdieping_key
NUMBER(10)
CONSTRAINT prj_r_alg_verdieping_key3 REFERENCES alg_verdieping(alg_verdieping_key),
prs_perslid_key
NUMBER(10)
CONSTRAINT prj_r_prs_perslid_key6 REFERENCES prs_perslid(prs_perslid_key),
prj_scenario_note_aanmaak
DATE
DEFAULT SYSDATE
);
CREATE TABLE prj_scenario_xml
(
prj_scenario_key
NUMBER(10)
CONSTRAINT prj_r_scenario_xml_key REFERENCES prj_scenario (prj_scenario_key) ON DELETE CASCADE,
prj_scenario_xml
LONG,
prj_scenario_xml_datum
DATE
DEFAULT SYSDATE
NOT_NULL(prj_scenario_xml_datum,prj_c_prj_scenario_xml_datum),
prj_scenario_xml_volgnr
NUMBER
);
// Subject to discussion:
ALTER TABLE cad_imp_contour ADD prj_scenario_key NUMBER(10) REFERENCES prj_scenario(prj_scenario_key);
#endif // PRJ