Forum > Webbutveckling relaterat > Databaser och SQL
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! :)
| Skriv utSkulle skapa en många till många relation.
Tre tabeller:
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.
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?
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.
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!
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.
Tack, jag har nu fått till en halvdann men fungerande lösning! Tack för hjälpen.