Frage

Ich habe folgendes Setup für mein Blog Datenmodell:

Blog               Articles             Categories
-----              --------          1  ----------
ID  \ 1         *  ID            /----- ID
Name \------------ BlogID       /       Name 
Owner              Name      * /      
                   CategoryID-/

Ich mache mir Sorgen darüber, wie dieses Datenmodell, das ‚Best Practices‘ für Blogs paßt. Wenn ein Blog gelöscht wird, sollten alle Artikel für diesen Blog gelöscht? Wenn eine Kategorie gelöscht wird, was auf die Artikel geschehen?

Gibt es einen besseren Weg? Gibt es etwas, was ich bin fehlt? Was 'Best-Practices' vorschlagen zu tun?

War es hilfreich?

Lösung

Das hängt wirklich von Ihrem Anwendungsfall. Viele Blog-Anwendungen verwenden Tags mit einer many-to-many-Beziehung statt Kategorien mit einer Eins-zu-vielen relationsip, weil es mehr Sinn macht, einen Artikel als im Zusammenhang mit (möglicherweise) vielen Tags zu sehen, als einen Artikel als "zu sehen enthalten“innerhalb einer Kategorie.

Wenn die Logik des Blogs ist, dass ein Artikel streng in einer Kategorie enthalten ist, dann ist die Eins-zu-viele-Beziehung ist gerechtfertigt. Und in einigen Fällen eine Kaskadierung auch gerechtfertigt sein, löschen würde. Denn wo wäre die verwaisten Artikel existieren noch.

Dies ist nur ein Fall, in dem Sie Ihre Benutzerbasis Intuition antizipieren muss. Was würde sie übernehmen, ist natürlich.

Im übrigen ist es viel mehr Arbeit, aber wenn es nach mir ginge, würde ich eine Kaskadierung löscht nicht. Ich würde markieren Artikel als verwaiste und verstecken sie von den meisten Ansichten. Ich würde auch eine Schnittstelle für verwaiste Artikel wiederherzustellen. Und ich hielte ein Skript bereitstellt, die alles löscht, die als eine gewisse Zeit für mehr verwaist worden ist. Auf diese Weise, wenn Sie falsch waren, was Ihre Benutzer passieren erwartet, können Sie das Problem beheben.

Andere Tipps

Die (ältere) Post führt einige Tag db Schema Variationen einschließlich einer detaillierten Diskussion zusammen. Vielleicht ist es ein guter Ausgangspunkt.

Kommt drauf an. Wenn Ihr Blog-Engine keinen Eintrag ohne Angabe der Kategorie erlauben, sollten Sie wahrscheinlich den Benutzer der Folge benachrichtigen und die Artikel löschen. Andernfalls könnten Sie einen ON DELETE SET NULL stattdessen verwendet werden.

Wenn Sie Ihre Beziehungen eingerichtet sind richtig, Sie sollten nicht in der Lage sein, um die Kategorie zu löschen, ohne zuerst alle zugehörigen Daten zu löschen. Es scheint seltsam, dass eine Kategorie zu löschen würde eine Reihe von Artikeln entfernen, aber zur gleichen Zeit, wenn eine Kategorie nicht mehr gültig ist, dann ist die Artikel sollen nicht sein.

Vielleicht eine Option, um eine neue Kategorie Alle Artikel neu zuordnen.

Ein paar Fragen. Kann ein Artikel mehr als eine Kategorie haben? Erlauben Sie Artikel 0 Kategorien mit ihnen verbunden zu haben? obwohl von Ihrer Beschreibung, würde ich sagen, dass Sie nicht die Artikel löschen möchten. Die Kategorien, in meiner Erfahrung, wenn ein Blog zu entwickeln, sind in der Regel ein vieles zu viel Beziehung mit Artikeln / Beiträgen (mehr Kategorien beschreiben mehrere Beiträge). So würde ich sie nicht löschen, aber noch einmal würde es auf Ihrer Business-Logik abhängen und wie Sie wollte es behandeln.

Nun, Ihre Fremdschlüssel (die sollte vorhanden sind) in Bezug Ihrem Blog Kategorie in Ihrem Blog veröffentlichen würden Sie nicht zulassen. Sie sollten zu einem anderen ändern die Kategorie Ihres Artikels berücksichtigen, wenn Sie Ihren Artikel auf Integrität und halten wollen.

über Datenmodell Forget, Object Model verwenden, das ist, was Datenimplementierung ist und Objekt-Schnittstelle, die näher an die Anforderung ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top