[DB2] Plusieurs questions

Plusieurs questions [DB2] - SQL/NoSQL - Programmation

Marsh Posté le 24-04-2006 à 01:10:06    

Bonjour.
 
A l'école on bosse sous DB2. J'ai pas mal de questions. J'ai essayé de chercher des réponses dans la doc mais c un véritable bordel. Donc j'aimerais bcp que vous m'aidiez.
 
1. Quand je fais un UNIQUE(nom, prenom, date_naissance) DB2 créé-t-il un index pour faut-il que je rajoute qqch comme INDEX(nom(3)) en plus pour que l'insertion soit plus rapide ?
 
2. Même question avec FOREIGN KEY : créé-t-il un index ou faut-il le créer en plus ?
 
3. En MySQL pour avoir des entiers positifs je mets des INTEGER UNSIGNED. Avec DB2 je n'ai pas trouvé d'autre solution que de rajouter un CHECK(VALUE >= 0)... Y'a-t-il une autre possibilité ?
 
4. J'ai la description de mes tables (les CREATE TABLE) dans un fichier texte (.sql). Comment les importer depuis la ligne de commande ?
 
5. En MySQL je fais un EXPLAIN MAREQUETE pour analyser l'utilisation des index. Comment faire avec DB2 ?
 
6. Le type ENUM n'a pas l'air d'exister. Comment simuler un ENUM('1','2','3') autrement qu'avec un CHECK ?
 
Merci d'avance.

Reply

Marsh Posté le 24-04-2006 à 01:10:06   

Reply

Marsh Posté le 24-04-2006 à 09:46:56    

Dost67 a écrit :

Bonjour.
 
A l'école on bosse sous DB2. J'ai pas mal de questions. J'ai essayé de chercher des réponses dans la doc mais c un véritable bordel. Donc j'aimerais bcp que vous m'aidiez.


On s'y fait vite mais c'est vrai que c'est un peu le bronx :o
 

Dost67 a écrit :

1. Quand je fais un UNIQUE(nom, prenom, date_naissance) DB2 créé-t-il un index pour faut-il que je rajoute qqch comme INDEX(nom(3)) en plus pour que l'insertion soit plus rapide ?


J'étais pas sur donc un coup de doc et oui, il semble le créer:

Citation :

Once established, the unique constraint is enforced automatically by the database manager when an INSERT or UPDATE statement modifies the data in the table. The unique constraint is enforced through a unique index.


le reste ici: http://publib.boulder.ibm.com/info [...] 004979.htm
 
 

Dost67 a écrit :

2. Même question avec FOREIGN KEY : créé-t-il un index ou faut-il le créer en plus ?


non
 

Dost67 a écrit :

3. En MySQL pour avoir des entiers positifs je mets des INTEGER UNSIGNED. Avec DB2 je n'ai pas trouvé d'autre solution que de rajouter un CHECK(VALUE >= 0)... Y'a-t-il une autre possibilité ?[/quote]
pourquoi as-tu besoin qu'il soit "unsigned"?
 
[quotemsg=1352474,1,13719]4. J'ai la description de mes tables (les CREATE TABLE) dans un fichier texte (.sql). Comment les importer depuis la ligne de commande ?[/quote]
Après un connect:

Code :
  1. db2 -tf tonfichier.sql


 
[quotemsg=1352474,1,13719]5. En MySQL je fais un EXPLAIN MAREQUETE pour analyser l'utilisation des index. Comment faire avec DB2 ?


Code :
  1. db2expln -d db -u user -p pass -q 'ta requete' -t


Sinon tu as un super truc dans le module d'administration client ( qui te dessine les arbres toussa c'est très bo)
 

Dost67 a écrit :

6. Le type ENUM n'a pas l'air d'exister. Comment simuler un ENUM('1','2','3') autrement qu'avec un CHECK ?
Merci d'avance.

moi pas connaître
 

Reply

Marsh Posté le 24-04-2006 à 13:50:22    

Merci c cool pour les réponses. Je vais regarder tout ça de plus près.

Reply

Marsh Posté le 24-04-2006 à 16:06:20    

Je voulais déclarer des UNSIGNED pour n'avoir que des entiers positifs. Mais j'ai utilisé un CHECK à la place.
 
Il reste toujours un flou sur les UNIQUE.
 
En fait je vais mettre un exemple :

Code :
  1. CREATE TABLE Personnels (
  2.      Id_Personnel              INTEGER            NOT NULL
  3.            GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),
  4.      Nom_Personnel             VARCHAR(255)       NOT NULL,
  5.      Prenom_Personnel          VARCHAR(255)       NOT NULL,
  6.      Date_Naissance_Personnel  DATE               NOT NULL,
  7.      Adresse_Personnel         CLOB(1000)         NOT NULL,
  8.      Telephone_Personnel       CHAR(10),
  9.      Email_Personnel           VARCHAR(255),
  10.      Numero_INSEE              CHAR(13),
  11.      Situation_Maritale        VARCHAR(11)        NOT NULL
  12.            CHECK (Situation_Maritale IN
  13.                  ('Célibataire', 'Marié', 'Divorcé', 'Veuf')),
  14.      PRIMARY KEY (Id_Personnel) ,
  15.      UNIQUE      (Nom_Personnel, Prenom_Personnel, Date_Naissance_Personnel)
  16. );


 
Le prof veut que les clés candidates soient déclarées UNIQUE. Le problème c'est que je veux que Nom, Prénom, Date_Naissance soit unique mais je voudrais en fait créer un index que sur Nom(3) car sinon bonjour l'utilisation inutile de l'espace disque.
 
Et aussi : j'ai lu que CLOB c'est pas bon de l'utiliser car DB2 le gère mal, que dois-je utiliser à la place ?

Reply

Sujets relatifs:

Leave a Replay

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