login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Snelste/efficientste manier van opslaan (Opgelost)

Offline bertenz - 16/01/2009 21:10
Avatar van bertenzHTML beginner Hallo allemaal,

Ik wil een grote website gaan maken waarbij ik heel veel verschillende gebruikers wil krijgen. Deze gebruikers kunnen een team van mensen invoeren waar allerlei gegevens over opgeslagen kunnen worden. Nou is mijn vraag eigenlijk wat het meest efficient is om de gegevens op te slaan. Namelijk:
- Heel veel verschillende tabellen aanmaken waarbij elke gebruiker zijn eigen tabel met daarin het team heeft.
- Één tabel maken met daarin alle teams van de gebruikers waarin met een ID van de gebruikers de verschillende teams uit elkaar gehouden kunnen worden.

Weet iemand welke optie het beste is? Is er misschien nog een betere oplossing?
Het voordeel van één grote tabel is natuurlijk dat het doorzoeken van álle teams heel eenvoudig kan, maar zijn er ook (grote) nadelen? Bijvoorbeeld de snelheid ervan...

Alvast bedankt.

4 antwoorden

Gesponsorde links
Offline ranco - 16/01/2009 22:09
Avatar van ranco PHP gevorderde Je moet eerst gaan normaliseren, en daarna gaan denormaliseren. (zie voor beide google).

Korte omschrijving:

Normalisere :
Zorg ervoor dat alle gegevens maar 1 keer worden opgeslagen, dit voorkomt redundantie. Leg verbanden doormiddel van foreign keys in je tabellen te gebruiken. Vergeet hierbij ook niet om ALTIJD niets gezeggende sleutels te gebruiken (veel gemaakte fout).

Hierna heb je een volledig genormaliseerde database.
Nu moet je je het volgende gaan bedenken:

Welke gegevens worden in je database straks veel gebruikt, en beslaan meerdere tabellen (koppelingen).

De gegevens die je vaak zult opvragen zul je hierdoor moeten denormaliseren. Een klein voorbeeld:

Een supermarkt gebruikt bij het scannen van artikelen bij een kassa 3 tabellen:

1. Artikelen
2. Prijzen
3. Voorraad

Men wil bij het scannen van een product gegevens gebruiken van alle drie de tabellen. Je wilt het productnaam weten, de prijs, en meteen de voorraad met 1 verminderen. Deze routine wordt eindeloos herhaald per dag. Hierdoor worden, bij een genormaliseerde database, drie tabellen continue belast. Je dient hier dus 1 tabel van te maken. Zodoende wordt maar 1 tabel aangesproken i.p.v 3 en is je database load dus minder.

Lang verhaal, en moeilijk om zo snel uit te leggen. Ik hoop dat je hier toch wat aan hebt. Lees je dus in via google over denormalisatie.

Succes!
Offline bertenz - 16/01/2009 22:35 (laatste wijziging 16/01/2009 22:36)
Avatar van bertenz HTML beginner Hartstikke bedankt voor jouw duidelijke uitleg. Ik heb me inmiddels wat ingelezen met behulp van Google en denk dat ik het zo ongeveer snap.

Zoals jij al ongeveer zei:
Het normaliseren is bijvoorbeeld in jouw voorbeeld van de supermarkt dat je niet één tabel hebt, maar 3 verschillende tabellen. Hierin ga je aan de hand van het artikel_ID dat in de tabel "Artikel" staat de prijs en voorraad opzoeken (in de tabellen "Prijs" en "Voorraad").

Doordat Query's met JOINS trager zijn, moet je veel opgevraagde gegevens weer samenvoegen in één tabel.

Heb ik het zo goed?

Maar het is dus waarschijnlijk handiger als alle teams in één tabel ("Teams") komen te staan met een team_ID als extra gegeven ipv allemaal aparte tabellen per team waardoor je tabellen als "1034_team" zou krijgen (waarbij 1034 een team_ID is).
Offline ranco - 17/01/2009 08:24
Avatar van ranco PHP gevorderde Nou, het is te simpel om te zeggen dat alle gegevens dan maar in 1 tabel moeten komen staan. Je moet dit meer uitdiepen.

Schrijf echt voor jezelf op papier welke gegevens van teams e.d. vaak opgevraagd worden. Alleen deze gegevens dien je samen op te slaan in 1 tabel. De rest van je informatie (lees overige tabellen na het normaliseren) moet gewoon in losse tabellen staan.

Ik kan je vraag dus niet beantwoorden, omdat ik niet weet welke velden vaak opgevraagd gaan worden. Zodra je dit duidelijk voor je ziet, dan weet je dus ook meteen welke gegevens je in 1 tabel kunt zetten.
Offline bertenz - 17/01/2009 13:58
Avatar van bertenz HTML beginner Oke, alweer hartstikke bedankt! Ik ga er maar eens goed voor zitten.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.192s