Avatar billede kdjweb Nybegynder
27. juli 2009 - 16:37 Der er 9 kommentarer og
1 løsning

Den mest simple løsning

Hej eksperter.

Jeg har gået i gang med et lille hobby projekt hvor jeg udvikler små class's i PHP(OOP) og MySQL, som jeg kan bruge i fremtiden.

Mit spørgsmål er sikkert indlysende for nogle, men lige nu kan jeg bare ikke tænke logisk. :P

Spørgsmålet er: Hvordan ser det mest simple venne system ud?

Jeg har tænk lidt, og fundet en masse forskellige måder det her kunne fungere. Jeg har lavet en system der fungere, meget af det virker bare overflødigt.

Forskellige måder jeg har tænk over:

1. (Den jeg bruger nu) Her bruger jeg en MySQL tabel (venner):
|ID|int(11)|Nej|
|user1|int(11)|Nej|
|user2|int(11)|Nej|
|date|datetime|Nej|
|active|int(1)|Nej|

og bruger så en query der læser (user1 & user2) for at udskrive.

2. Implantere venne tabellen i bruger tabellen og putte en seperator imellem hver ven?

3. Så lang er jeg ikke kommet, måske har i en ide?

Det er ikke første gang jeg laver sådan en system og jeg synes bare det virker så bøvlet.
Avatar billede lakridserne Nybegynder
27. juli 2009 - 16:46 #1
Jeg ville helt klart bruge 1 bare med ID'er. Så skanner man bare efter aktuelle bruger-ID, og vupti!
Avatar billede kdjweb Nybegynder
27. juli 2009 - 16:50 #2
Jo, men giver det ikke en del overflødig trafik?
Avatar billede repox Seniormester
27. juli 2009 - 17:47 #3
Hvad er overflødig trafik?

Din tabel 'venner' har et overflødigt felt, ID.
Nu undrer du dig garanteret over hvorfor, det er overflødigt, men det er ret simpelt.

En person kan vel ikke være venner med en person mere end en gang - derfor vil du aldrig få to ens linier (hvad angår user1 og user2).

Man kan så diskutere optimering - ville user1 kunne fungere fint som et indekseret felt? Og ville det give mening? Ja, det ville det, men kun hvis 'vennerne' var venner med hinanden:
+-------+-------+
| user1 | user 2|
+-------+-------+
| 314  | 682  |
| 682  | 314  |
+-------+-------+

Det ville optimere tabellen - men så alligevel, du ville jo have dobbelt så mange rækker? Ja, tankerne er mange...

Hovedsagen er at det smarte system skal følge KISS konceptet (Keep It Short'n'Simple). Lappeløsninger vil gøre det svært at udvide dit system og du vil opleve at i takt med at du får bedre og bedre idéer, vil komplekse løsninger måske kun gøre det mere kompliceret at integrere ny funktionalitet. Medmindre du tænker OOP ind i det; måske noget med noget polymorfi? Hmm...

Ja, måske er den mest simple løsning alligevel ikke den smarteste...

bare nogle tanker...
Avatar billede kdjweb Nybegynder
27. juli 2009 - 17:53 #4
Jeg leder efter et mere detaljeret svar. jeg kan sagtens selv programmere systemet.

Lakridserne, user1 og user2 er skam ID'er. Ved ikke hvordan du ville skrive folks brugernavn som int :P
Avatar billede repox Seniormester
27. juli 2009 - 18:01 #5
Hvad skal de detaljer indeholde? Hvad er det du leder efter?
Avatar billede kdjweb Nybegynder
27. juli 2009 - 18:08 #6
Beklager repox, jeg sad faktisk bare og gloede lidt tv og skrev det indlæg for at jeg så dit :P

Jeg tror bare jeg vil lave en masse små methods i stedet for at lave en støre suppedas ud af det.
Avatar billede kdjweb Nybegynder
27. juli 2009 - 18:23 #7
smid et svar repox, jeg har fundet en god løsning.
Avatar billede repox Seniormester
27. juli 2009 - 18:56 #8
er det et svar jeg kan gøre mig fotjent til?
Avatar billede kdjweb Nybegynder
27. juli 2009 - 19:07 #9
du har da givet mig en vej at gå
Avatar billede repox Seniormester
27. juli 2009 - 19:12 #10
Super :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester