Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > Webbutveckling relaterat > Databaser och SQL

Databas med antonymer

frisko
frisko

Gradering

#20311

Hej!

Jag funderar på att börja bygga en databas innehållande motsatsord. Hur strukturerar jag den databasen på bästa sätt? (MySQL) Idén är att genom ett formulär på en webbplats kunna skriva in ett ord och sedan skriva ut eventuella motsatsord till det med hjälp av PHP.

Om jag till exempel skriver in "snäll" så ska "elak, dum" skrivas ut. Samma sak ska skrivas ut om jag skriver "vänlig". Men skriver jag "dum" så ska det skivas ut "snäll, vänlig".

Som sagt, hur strukturerar jag min databas på bästa sätt?

Tack på förhand! :)

frisko - Borta bra, men 127.0.0.1 bäst.
ID: #20311 | Skapades: 2010-10-31 16:55:25 | Tråden har 7 svar och har lästs 591 gånger.

Skulle skapa en många till många relation.

Tre tabeller:

  • En med ord
  • En med motsatsord
  • En tabell som knyter ihop alla ord.

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
ID: #20312 | Skapades: 2010-11-01 00:23:45

voigtan
voigtan

Gradering

#20313

Jag hade haft två tabeller:

Ord, beskrivning och id

och en referenstabell, då du inte vet om ordet är "Snäll" eller om jag skriver "Elak" så känns det lite onödigt att ha en extra tabell, för du vet ju inte vad användaren skriver, om det är motsattsordet eller "orginal" ordet.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20313 | Skapades: 2010-11-01 08:26:19

frisko
frisko

Gradering

#20319

Hm. Hur forumlerar jag själva referenserna sen? Om jag lägger till några ord i första tabellen, till exempel:

id ord beskrivning

1 elak tomt

2 snäll tomt

3 dum tomt

 

Hur forumlerar jag då referenstabellen sen? Parar ihop ordens ID:n på något sätt?

 

frisko - Borta bra, men 127.0.0.1 bäst.
ID: #20319 | Skapades: 2010-11-02 14:38:35

voigtan
voigtan

Gradering

#20320

Du har en referenstabell där om vi skriver snäll så är det referens till elak och dum:

 

WordId | WordId2
     2 |      1
     3 |      2

Och kör en koll på WordId och WordId2 om det är 2 som "snäll" ha i värde, kanske t o m kör en UNION för att få ut datan i en sql fråga.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 2 november 2010. Läs tidigare inlägg.
ID: #20320 | Skapades: 2010-11-02 14:44:58

frisko
frisko

Gradering

#20321

Ber om ursäkt för många frågor, det märks att det var länge sedan jag sysslade med sådant här sist.

 

Jag skriver in "elak" och får ordets ID från första tabellen. Hur gör jag sedan för att söka upp rätt i referenstabellen? Hade jag vetat att elak fanns i WordId2 hade det ju inte varit några problem, men nu vet jag inte det. Dessutom kan det ju komma sig att ID:t för elak kanske finns i två rader, varav en återfinns i WordId och den andra i WordId2.

Jag vill alltså söka upp alla celler med ID 2 (till exempel) och plocka ut motsvarande ID från den andra kolummen, vare sig 2 finns i WordId eller WordId2. Hur bär jag mig åt?

Tack på förhand!

frisko - Borta bra, men 127.0.0.1 bäst.
ID: #20321 | Skapades: 2010-11-02 16:42:16

voigtan
voigtan

Gradering

#20322

Du kör en SELECT frågar och en join tills du få ut det du vill få ut, sen gör du samma sak fast för wordId2 och koppla ihop det med en UNION, går att göra på många sätt men detta känns som det är det enklaste.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20322 | Skapades: 2010-11-02 18:25:31

frisko
frisko

Gradering

#20324

Tack, jag har nu fått till en halvdann men fungerande lösning! Tack för hjälpen.

frisko - Borta bra, men 127.0.0.1 bäst.
ID: #20324 | Skapades: 2010-11-03 00:08:52
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy