J'ai une table Word, qui contient l’ensemble des mots traités. J'ai dessus une contrainte de tables:
ca se traduit dans la base de donnée par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 create table T_WORD ( nuIdWord NUMERIC(18,0) not null, vcString VARCHAR(128) not null, siIdPOS SMALLINT not null, siOccurrence SMALLINT constraint T_WORDsiOccurrence_Chk check ( (siOccurrence >= 1) OR (siOccurrence IS NULL) ) , siIdLang SMALLINT not null, nuIdLemma NUMERIC(18,0) not null, constraint T_WORD_PK primary key (nuIdWord) );
et en résultat j'ai des échecs d'enregistrement sur des enregistrements dupliqués: par exemple le mot "one" est enregistré une première fois comme nombre avec un Part Of Speech de 5, et plus tard on veut l'enregistrer comme un nom avec une POS de 4. C'est grammaticalement justifié, mais infomatiquement j'ai l'impression qu'il y a une contrainte non écrite qui est que le champ vcstring soit unique. La contrainte serait que le couple vcstring siidpos soit unique. comment l'expliciter?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE TABLE "T_WORD" ( "NUIDWORD" NUMERIC(18, 0) NOT NULL, "VCSTRING" VARCHAR(128) NOT NULL, "SIIDPOS" SMALLINT NOT NULL, "SIOCCURRENCE" SMALLINT, "SIIDLANG" SMALLINT NOT NULL, "NUIDLEMMA" NUMERIC(18, 0) NOT NULL, CONSTRAINT "T_WORD_PK" PRIMARY KEY ("NUIDWORD") ); ALTER TABLE "T_WORD" ADD CONSTRAINT "T_LANGUAGE_FK6" FOREIGN KEY ("SIIDLANG") REFERENCES T_LANGUAGE ("SIIDLANG");
c'est certainement quelque chose à dire dans le script de création, mais je ne sais pas comment l'exprimer.
Partager