oracle : create table avec plusieurs références facultatives

oracle : create table avec plusieurs références facultatives - SQL/NoSQL - Programmation

Marsh Posté le 08-12-2007 à 12:59:11    

Bonjour,
 
j'ai créé une table avec l'instruction ci-dessous.
 

Code :
  1. CREATE TABLE CONDUITOO of Tconduit (FOREIGN KEY (vehicule) REFERENCES vehiculeOO, FOREIGN KEY (empl_tech) REFERENCES technicienOO, FOREIGN KEY (empl_cm) REFERENCES contre_maitreOO, FOREIGN KEY (empl_mach) REFERENCES machinisteOO)


 
Mais je n'arrive pas à insérer de données dans la table. Je pense que le problème vient du fait que je ne peux pas toujours donner une référence car dans certains cas le véhicule sera conduit par un technicien mais ni par un contremaitre ni par un machiniste. J'ai essayé les options suivantes mais aucune d'elles ne marchent.
 

Code :
  1. insert into CONDUITOO (date1, vehicule, empl_tech) values('25/04/07', (select ref(a) from VEHICULEOO a where a.numero_matricule = 11),
  2. (select REF(x) from technicienOO x where x.employe.numero=117456));


Code :
  1. insert into CONDUITOO values ('25/04/07', (select ref(a) from VEHICULEOO a where a.numero_matricule = 11),
  2. (select REF(x) from technicienOO x where x.employe.numero=117456),'','');


 
En résumé j'aimerais forcé une référence à être "dangling"
 
des idées ?
 
merci

Reply

Marsh Posté le 08-12-2007 à 12:59:11   

Reply

Marsh Posté le 08-12-2007 à 13:23:56    

L'option "FOREIGN KEYS" n'est pas obligatoire. Elle est même très rarement utilisée. Pour ma part, depuis vingt ans que je fais de l'informatique professionnellement, je ne l'ai vue employée qu'une seule fois, et bien sûr cela a créer des tas de problèmes dont on se serait volontiers passé.
Mon avis personnel, est que, de même que les bons journalistes séparent l'observation d'un côté, et les commentaires d'un autre côté, les bons informaticiens séparent les données d'un côté, et les traitements d'un autre côté. Laisser aux programmes d'insertion de données le soin de contrôler ces données.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed