2012-06-01 3 views
0

J'essaye de réécrire un programme de dictionnaire en python (3.X). J'ai utilisé JSON mais j'ai pensé que ça pourrait être amusant de m'essayer à SQLlite. Ma question est:plusieurs pointeurs dans SQLite

Je:

  1. un mot
  2. une liste de phrases en utilisant le mot
  3. une liste des synonymes
  4. une liste des antonymes

ce est le moyen le plus propre d'organiser les données en utilisant SQLite3? Ce que je pensais être à une table avec des identifiants uniques pour le 'val et l'exemple' et ensuite créer de nouvelles entrées pour les synonymes et les antonymes si elles n'existent pas encore.

ValId Val  Eaxmples 
1  'hot'  'the water is hot\n she's hot\n' 
2  'warm'  '...' 
3  'cold'  '...' 
4  'freezing' '...' 

Mais comment puis-je créer une table qui pourrait renvoyer à plusieurs ID? par exemple 'hot' indique 2 comme synonyme et 3 , 4 comme antonymes. Comment pourrais-je créer plusieurs ponters, dois-je les mettre dans une piqûre, puis les analyser, car je ne sais pas comment créer des synonymes ou des antonymes.

LinksID ValID SynIDs AntsIds 
    1  1  2  3,4 

Répondre

1

Je voudrais créer deux tables séparées, l'une des synonymes et antonymes un pour où vous avez FOREIGN KEYS to reference your words:

CREATE TABLE synonym (
    SynID INTEGER, 
    WordID1 INTEGER, 
    WordID2 INTEGER, 
    FOREIGN KEY (WordID1) REFERENCES word(ValID), 
    FOREIGN KEY (WordID2) REFERENCES word(ValID) 
); 

CREATE TABLE antonym (
    AntID INTEGER, 
    WordID1 INTEGER, 
    WordID2 INTEGER, 
    FOREIGN KEY (WordID1) REFERENCES word(ValID), 
    FOREIGN KEY (WordID2) REFERENCES word(ValID) 
); 

alors vous n'avez pas à vous soucier d'avoir un nombre inconnu de synonymes et antonymes pour chaque mot. Vous pouvez ensuite obtenir la structure suivante:

Votre table de mots:

ValId Val  Eaxmples 
1  'hot'  'the water is hot\n she's hot\n' 
2  'warm'  '...' 
3  'cold'  '...' 
4  'freezing' '...' 

Votre table de synonymes:

SynID WordID1 WordID2 
1  1  2 
2  3  4 

Et votre table antonyme:

AntID WordID1 WordID2 
1  1  3 
2  1  4 
3  2  3 
4  2  4 
+0

pourquoi y at-il WordID1 & WordID2 lorsque les deux mot de référence (ValID)? – beoliver

+0

comme alors vous ne pouvez sûrement référencer que deux mots à la fois? avec wordID1 et wordID2 – beoliver

+0

Eh bien, dans chaque entrée de ces tables, vous aurez un synonyme ou un antonyme. Ils seront composés de deux mots qui sont soit synonymes, soit anonymes entre eux. Pour avoir plus de synonymes ou d'antonymes, ajoutez simplement plus d'éléments à ces tables. – Maehler

Questions connexes