DB-Modellierungs-Entscheidung
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anlegen
anwenden
aufwand
benutzer
chaos
datenbank
datum
durchsuchen
eintragen
feld
gleichen feldern
marke
methode
modell
nachteil
nummer
nutzer
tabelle
vierte feld
weiteres feld
-
Hallo Ihr!
Ich habe folgende Aufgabe: Ich muss in eine MySQL-DB eine Nummer, ein Datum und einen Zeitstempel in eine Tabelle eintragen. Jetzt ist es so, dass es vile verschiedene Nutzer gibt. Diese Nutzer tragen in regelmäßigen Abständen oben genannte Daten in die DB ein. Natürlich möchte ich später diese Daten wieder einem Benutzer zuordnen können. Deswegen stehe ich vor folgender Design-Entscheidung:
Soll ich entweder für jeden Benutzer eine eigene Tabelle mit den drei Feldern erstellen, sodass der Nutzer durch den Tabellennamen ersichtlich ist? Vorteil hierbei ist, dass die Tabellengrößen wohl übersichtlich bleiben würden, Nachteil ist, dass ich damit sehr viele Tabellen mit den gleichen Feldern haben werde.
Oder soll ich nur eine Tabelle anlegen, wobei ich dann ein weiteres Feld mit einer Nutzerkennnummer noch anfüge, sodass ich nachher die große Tabelle gezielt nach der jeweiligen Nutzerkennung durchsuchen könnte. Nachteil hierbei: Die ganze Tabelle wird schnell riesig, und ich habe den zusätzlichen Aufwand durch das Vierte Feld.
Was meint Ihr? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also der zusätzliche Aufwand durch das eine Feld mehr ist sicherlich nicht allzugroß. Und von der Datengröße her ist es sicherlich auch egal, ob du eine große Tabelle hast oder ganz viele kleine. Ich finde eine Tabelle dabei wesentlich übersichtlicher als mehrere und wenn du es ordentlich anstellst, entsteh auch kein Chaos bzw. du muss eben ordentliche Sortierfunktionen anwenden.
-
Methode Nummer Zwei.
Was meinst du, wie deine Datenbank nach einer Zeit aussieht, wenn es mehr User werden und du für jeden User eine neue Tabelle anlegst?
Natürlich ist dann deine Datenbank bei Methode Zwei voll mit Einträgen. Das ist aber MySQL und PHP ziemlich egal. Mit einer einfachen WHERE-Anweisund erhältst du die Datensätze eines bestimmten Users. Du solltest weiterhin eine User-Tabelle anlegen, in der die IDs geordnet sind.
Jede Software, die ich bis jetzt bearbeitet habe (div. FOren, lima-city, CMS, etc.) arbeitet nach diesem Prinzip.
Was meinst du, wie unsere lima-city-Datenbank aussehen würde, wenn sie 100.000 Tabellen hätte? ;)
gruß
ferdinand24 -
Allein wegen den Normalisierungs Regeln für Datenbanken solltest du das aufteilen auf Benutzer und Datentabelle.
Mehr als zwei Tabellen brauchst du hierfür ja nicht und ich glaube nicht das du so viele Daten erzeugen wirst, das sie wirklich sehr groß werden wird. Wenn eine einzelne Tabelle die 2GB Marke erreicht, kann man sie groß nennen ;)
Beitrag geändert: 10.1.2008 12:23:46 von evil-devil -
Vielleicht einfach mal ER-Modell zeichnen und dann Synthesealgorithmus durchführen?
Dann auf Normalformen checken und fertig ist die Soße.
Synthesealgorihtmus hab ich grad bei Wikipedia eingefügt, hatte ich schonmal, wurde aber rausgenommen weil einige Begriffe nicht definiert waren. Habe ich jetzt auch definiert.
http://de.wikipedia.org/wiki/Entity-Relationship-Modell
Beitrag geändert: 10.1.2008 12:32:56 von lordoflima -
@lordoflima: Naja so viel Aufwand muss ich net betreiben - soll ja kein Riesenprojekt werden ^^
Danke für eure Tipps! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage