Datenbankkonzept
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
artikel
code
date
datenbank
datum
eintrag
filtern
index
kommentar
not
null
referenz
relevante daten
ren
richtig macht
schlag
tabelle
text
vorgehensweise
zugriffszeit
-
Hi,
ich arbeite zur Zeit teils aus Spaß und teils zur Übung mit Datenbanken um einen Blog / Artikelarchiv / Gästebuch etc selbst zu bauen. Hierbei stehe ich nun gerade vor dem Problem eine Datenbank so einzurichten, dass sie die Daten betreffs der Blogeinträge, Erstellungsdatum, Änderungsdaten, Autor / -ren, etc. verwaltet. Hierbei würde ich das evtl. so verschachteln, dass die Nutzerkommentare eine Extratabelle bilden, deren referenz auf den Artikel gelegt wird. Leider habe ich keinen rechten Ansatz wie ich das am gescheitesten aufbaue.
Es wäre nett, wenn mir hier Jemand eine "gute" anfängergeeignete Vorgehensweise aufzeigen könnte. Eventuell fallen ja dem einen oder Anderen noch zusätzliche relevante Daten ein die man für so einen Blog / Archiv etc benötigen könnte außer den genannten.
Beste Grüße und Dank im Voraus! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
In der Tabelle mit den Kommentaren erstellst du eine Spalte, die die ID des Eintrags, der kommentiert wurde, speichert. Will der User diesen Eintrag, der kommentiert wurde, sehen, dann rufst du diesen aus der einen Tabelle ab und suchst danach nach Kommentaren zu diesem Eintrag, indem du im zweiten Query, das du auf die Kommentar-Tabelle anwendest, mit Hilfe von WHERE nur Kommentare anzeigst, die auch zu dem Eintrag erstellt worden sind.
-
Wie würden sich denn die Zugriffszeiten verhalte, wenn ich alle Kommentare in einer einzelnen sehr großen Tabelle speichern würde und nur per ID unterscheide? Wenn ich bei 100 Artikeln je 1000 Kommentare hätte währen ja in einer Tabelle bereits 100.000 Datensätze (hypotetisch) wie schnell oder langsam währe denn hier ein Datensatz gefunden? Währe es evtl günstiger je Artikel eine Tabelle mit Kommentaren anzulegen?
PS. Danke bis hier hin! -
Hallo pantherstyle,
für jeden Artikel eine Tabelle anzulegen würde ich lieber lassen. Heutige Datenbanken müssen mit Millionen von Datensätzen klarkommen und haben entsprechend gute Suchalgorithmen, dass das alles auch relativ zügig geht, wenn man es richtig macht.
Ich schlage jetzt mal folgendes vor:
Um die Sache schneller zu machen solltest Du noch Indizes für (articles.id, articles.id_user) und (comments.id, comments.id_article, comments.id_user) erstellen. Falls Du Artikel/Kommentare anhand des Datums Filtern willst, dann solltest Du auch die Datumsfelder indizieren.articles: id Long Integer, Serial, Primary Key id_user Long Integer, Foreign Key(users.id), Not Null creation_date Date, Not Null title Varchar(50), Not Null text Text, Not Null comments: id Long Integer, Serial, Primary Key id_article Long Integer, Foreign Key(articles.id), Not Null id_user Long Integer, Foreign Key(users.id), Not Null creation_date Date, Not Null text Text, Not Null
-
Genau auf solche Vorgehensweisen sind Datenbanken ausgelegt. Diese Methode wird die geringste Trägheit nach sich ziehen.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage