Datenbank: Jeden Tag eine neue Tabelle

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Allein, dass du vorschlägst, in einer bestehenden Datenbank durch normalen Betrieb fortlaufend neue Tabellen anzulegen, spricht schon sehr dagegen, dass ihr "fortgeschritten" seid.

Google mal nach "Normalisierung".

In deinem Fall gäbe es 4 Tabellen: - Benutzer - Bilder - Bewertungen

Benutzer enthält die Spalten "ID" und "Benutzername" (in der Realtität wäre dann natürlich auch noch z.B. Vor- und Nachname, sowie Anrede, Passworthash, Mailadresse etc. enthalten, ich vereinfache hier aber).

Bilder enthält die Spalten "ID", "Benutzer-ID" (die ID vom Besitzer des Bildes) und "Bildpfad" (also der Pfad zum hochgeladenen Bild).

Bewertungen enthält die Spalten "Benutzer-ID", "Bild-ID", "Bewertung" und eventuell noch "Datum", falls du festhalten willst, wann jemand ein Bild bewertet hat.

Bewertungen hat keine eigene ID, die ID ist ein Fremdschlüssel-Constraint aus Benutzer-ID und Bild-ID, denn ein Benutzer soll ja (wahrscheinlich) ein Bild nicht mehr als ein mal bewerten dürfen. Falls doch kannst du auch das Datum mitbenutzen. Das bedeutet, dass dann ein Benutzer ein Bild an einem Tag nur ein mal bewerten darf. So kannst du für "referenzielle Integrität" sorgen. Das heißt, dass wenn der Benutzer oder das Bild gelöscht werden, automatisch auch die dazugehörigen Bilder gelöscht werden. So entstehen keine Dateileichen.

Die maximale Größe für eine Tabelle beträgt bei MySQL mit InnoDB zum Beispiel 64 TB, sollte also für eine kleine Bilddatenbank locker reichen ;-)

P.S.: Wenn Bilder von jedem unendlich oft bewertet werden dürfen, brauchst du für die Tabelle Bewertungen auch noch eine Spalte ID, um Bewertungen eindeutig identifizieren zu können.

Oh und noch ne kurze Info zu Bewertungen: Da speichert die Spalte Benutzer-ID natürlich nicht die ID des Besitzers des Bildes wie bei Bilder, sondern die ID desjenigen, der ein Bild bewertet.

0

Oh noch ein Fehler: es sind natürlich 3 Tabellen, keine 4. Vertipperle.

0
@Broco

3 Antworten fand ich besonders hilfreich, aber ich gebe dir den Stern für die ganzen Erklärungen :)

0

bei einer gut implementierten Datenbank brauchen diese werte nicht lange zum laden .
du als "fortgeschrittener" solltest aber wissen , das man nicht unbegrenzt Speicher zur Verfügung hat . wenn du aber für jeden Benutzer auf 365 Tabellen verweisen musst , dann ist das ganze sehr unschön .
am besten du nimmst dir ein Blatt Papier und veranschaulichst dir mal die einzelnen Beziehungen

Sorry, aber das wäre eine echt unsinnige Lösung. Dann bräuchtest du keine Datenbank!

Dir scheinen einige Grundbegriffe noch nicht klar zu sein. Sammle zuerst einmal die Datenfelder, die du benötigst. Danach musst du z.B. Dopplungen beseitigen, indem du in andere Tabellen auslagerst und Verweise verwendest. Ihr habt doch sicher über Normierungen gesprochen.

Das sprengt aber etwas den Rahmen hier.

Was möchtest Du wissen?