dimanche 20 décembre 2009

Projet - partie 3 (suite).

Génération de la BD physique



L’étape suivante de notre travail sera la génération de la BD physique à partir des informations collectées jusqu'à présent au niveau du RON.

Il faut noter que l’on a fait un certain nombre d’affinage au niveau du modèle logique obtenu à partir du DDT et du modèle conceptuel en entrée.



Au niveau du Design editor, on va utiliser le Server generator pour générer les objets physiques qui seront utilisés pour le stockage de l’information.

On pourra soit générer les commandes DDL au niveau de scripts livrables au DBA, soit des commandes DDL qui seront exécutées sur une Base cible local ou distante.



Objectif

  • Création des tables et des objets afférents du système RESIDENCE LESOLEIL



Étant donné que l’on a créé un seul server model au niveau de notre système, on veillera à ouvrir ce modèle par le Design Editor et de choisir l’option de génération telle que le montre la figure suivante :













Par exemple le DDL nécessaire pour la création de la table IMM_PAIEMENTS est :

PROMPT Creating Table 'IMM_PAIEMENTS'

CREATE TABLE IMM_PAIEMENTS

(NUM_PAIEMENT NUMBER(10) NOT NULL

,LOC_CODE_LOCATAIRE NUMBER(10)

,DATE_PAYEMENT DATE NOT NULL

,MODEPAIEMENT CHAR(1) NOT NULL

,MONTANT NUMBER(10,2) NOT NULL

,ETAT CHAR(1) NOT NULL

,CREATED_BY VARCHAR2(15)

,MODIFIED_BY VARCHAR2(15)

,CREATED_DATE DATE

,MODIFIED_DATE DATE

)

/



Il est important de constater que le script de création des contraintes contient les commandes suivantes :



PROMPT Creating Check Constraint on 'IMM_PAIEMENTS'

ALTER TABLE IMM_PAIEMENTS

ADD (CONSTRAINT AVCON_1260123002_MODEP_000 CHECK (MODEPAIEMENT IN ('C', 'H', 'R', 'D')))

/

PROMPT Creating Check Constraint on 'IMM_PAIEMENTS'

ALTER TABLE IMM_PAIEMENTS

ADD (CONSTRAINT AVCON_1260123002_ETAT_000 CHECK (ETAT IN ('P', 'N')))

/

PROMPT Creating Check Constraint on 'IMM_LOCATAIRES'

ALTER TABLE IMM_LOCATAIRES

ADD (CONSTRAINT AVCON_1260123002_STATU_000 CHECK (STATUT IN ('A', 'I')))



Celles-ci implémentent les contraintes portant sur les domaines. Dans le cas où l’on voudrait implémenter ces contraintes au moyen de la table CG_REF_CODES, on procèdera de la manière suivante :

Pour chaque colonne et domaine qui ont des valeurs autorisées (allowable values), on mettra la propriété –Dynamic List- sur Yes.







On voit que le STATUT de locataire est un domaine.



Ensuite, on doit y aller au nœud pour chercher le domaine STATUT_LOCATAIRE. En appuyant sur F4 pour changer Dynamic List à yes.





En cliquant sur le menu de création de la table CG_REF_CODES comme montré ci-après :





On obtient le script de création de la table CG_REF_CODES suivant :



SPOOL CG_REF_CODES.lst

PROMPT Creating REF_CODES Table CG_REF_CODES and Indexes

CREATE TABLE CG_REF_CODES

(RV_DOMAIN VARCHAR2(100) NOT NULL

,RV_LOW_VALUE VARCHAR2(240) NOT NULL

,RV_HIGH_VALUE VARCHAR2(240)

,RV_ABBREVIATION VARCHAR2(240)

,RV_MEANING VARCHAR2(240)

)

/

CREATE INDEX X_CG_REF_CODES_1 ON CG_REF_CODES

(RV_DOMAIN

,RV_LOW_VALUE)

/

PROMPT Allowable Value Script

DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'MODE_PAIEMENT'

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('MODE_PAIEMENT', 'C', '', '', 'Comptant')

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('MODE_PAIEMENT', 'H', '', '', 'Chèque')

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('MODE_PAIEMENT', 'R', '', '', 'Crédit')

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('MODE_PAIEMENT', 'D', '', '', 'Dépot direct')

/

DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'LOYER'

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('LOYER', 'P', '', '', 'Payé')

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('LOYER', 'N', '', '', 'Non payé')

/

DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'STATUT_LOCATAIRE'

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('STATUT_LOCATAIRE', 'A', '', '', 'Actif')

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('STATUT_LOCATAIRE', 'I', '', '', 'Inactif')

/

DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'STATUT_APPT'

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('STATUT_APPT', 'V', '', '', 'Vaccant')

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('STATUT_APPT', 'O', '', '', 'Occupé')

/

DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'TYPE_APPT'

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('TYPE_APPT', 'T', '', '', 'Tous inclut')

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('TYPE_APPT', 'R', '', '', 'Rien inclut')

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('TYPE_APPT', 'C', '', '', 'Chauffé')

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('TYPE_APPT', 'N', '', '', 'Non chauffé')

/

DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'ETAT_REPARATION'

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('ETAT_REPARATION', 'E', '', '', 'En attente')

/

INSERT INTO CG_REF_CODES

(RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING)

VALUES

('ETAT_REPARATION', 'R', '', '', 'Réparé')

/

COMMIT

/

PROMPT

PROMPT Finished.

SPOOL OFF





Étant donné que l’on a apporté des affinages au modèle logique, on doit aussi générer les

API de table afin de générer les triggers et package nécessaires pour la vérification des différentes contraintes.

On procède de la même manière que précédemment en sélectionnant le menu suivant :







On vérifie que pour chaque table sélectionnée, on obtient plusieurs fichiers avec l’extension .pkb (package body), pks (package spécifications) et .trg (triggers).

Exécution des scripts sous SQL PLUS :

On va lancer trois scripts (fichiers .sql) : DDL_RES_SOL.SQL, CG_REF_CODES.SQL, api_res_sol.SQL

Description des tables de notre schéma : 8 tables et 2 tables de journalisation.















































Dans la prochaine étape, on va procéder la création des modules de notre système pour ORACLE FORMS à partir de Design Editor.