Ich habe eine Frage zum Datenbankdesign. Ich möchte ein elektronisches Notizbuch oder "Everything Bucket" für meine eigene Ausbildung erstellen. Ich weiß, es gibt großartige Alternativen wie EverNote oder Circus Ponies Notebook, oder die Open Source KeepNotes oder Red Notebook. Aber, wie ich schon sagte, ich möchte mein eigenes nur für die Lernerfahrung erstellen.Datenbankentwurf für ein elektronisches Notizbuch
Ich habe jedoch nicht viel Erfahrung mit Datenbank-Design. Meine Frage ist, wie sollte das Design aussehen - Tabellen, Indizes, etc. Die Art, wie ich daran denke, ist, dass
Jedes Notizbuch hat keine oder mehrere Notizen oder Seiten.
Jede Seite hat einen eindeutigen Titel und Inhalt. Zusätzlich zu dem "echten" Inhalt würden Metadaten wie das Erstellungsdatum und das Datum der letzten Änderung vorhanden sein.
Jede Seite gehört zu einer oder mehreren Kategorien, auch wenn die Kategorie "keine" ist. Kategorien können zusätzliche Unterkategorien haben. Zum Beispiel könnten in der Kategorie "Informatik" Unterkategorien wie "Programmiersprachen" und "Compiler-Design" existieren.
Jede Seite hat null oder mehr Tags zugeordnet. Diese wären den Kategorien ähnlich, aber nicht ganz gleich. Ein Papier könnte beispielsweise der Kategorie "Compiler-Design" angehören, könnte aber mit den Namen des Autors, dem Zeitschriftennamen, dem Veröffentlichungsjahr usw. versehen sein.
Der Inhalt einer Seite sollte einen HTML-Stream enthalten, der Text, Bilder, Links usw. enthalten kann. Sie könnten ziemlich große Datenstücke sein. Wäre es sinnvoll, bestimmte Teile wie Bilder getrennt vom Text zu speichern? (Es wäre großartig, wenn ich auch den Inhalt von PDF-Dokumenten anzeigen könnte. Aber das ist an dieser Stelle nicht wirklich erforderlich.)
Es wäre auch schön, wenn eine Seite Querverweise auf andere Seiten in derselben Datenbank enthalten könnte , wie ein Wiki.
Ich würde gerne in der Lage sein, nach Kategorie, Tag, Teiltitel oder durch den Volltext zu suchen. Ich stelle mir vor, dass das Programm einige verschiedene Ansichten der Datenbank mit den Kategorien, Tags und Titeln haben könnte, also wäre es schön, wenn diese schnell aufgelistet werden könnten.
Also, angesichts dieser Wünsche, wie würde eine gute Datenbank aussehen? Ich gehe davon aus, dass eine SQL-Datenbank verwendet wird, bin aber nicht dazu verpflichtet - etwas wie die Sleepycat Java Edition-Datenbank wäre auch in Ordnung.
Vielen Dank im Voraus für die Vorschläge!
Da Sie sich der Open-Source-Optionen bewusst sind, haben Sie in Betracht gezogen, die Quelle und die Dokumentation zu untersuchen, um zu sehen, wie andere dies implementiert haben? Es kann Ihnen einen guten Startplatz geben (oder zumindest eine Vorstellung davon, was Sie nicht tun wollen). – Velociraptors
Ja, ich habe mir angesehen, wie KeepNote und RedNotebook funktionieren. KeepNote verwendet XML, das in einer Hierarchie von Dateien und Verzeichnissen gespeichert ist. RedNotebook verwendet ein spezielles Textformat. Es gibt jedoch viel mehr zu sehen. Wordpress scheint das meiste zu tun, was ich will, aber meine PHP-Fähigkeiten sind nicht stark. Etwas in C, C++, Java, Pascal oder Lisp wäre am bequemsten. Aber es ist nichts falsch daran, etwas PHP zu lernen ... –