Datenbankdesign für die Website des Magazins mit flexiblen horizontalen Menüs

8

Ich muss eine CMS-basierte Website mit asp.net-Webformular (c #) und MS SQL Server als Backend-Datenbank für eine Magazin-Website entwerfen, die wöchentliche Ausgaben haben wird.

Beispieldaten

%Vor%

Problem mit dem obigen Ansatz ist, dass ich nur dann Untermenüs erstellen kann, wenn alle Datensätze in Magazinseiten basierend auf dem obigen Beispiel sind. Ich kann Untermenüs für "Über uns" & amp; Multimedia Wie kann ich meine Datenbank so gestalten, dass ich Daten aus verschiedenen Tabellen wie news nach Kategorie (Politik, Kultur ...) & amp; Ausgabe von Magazin Tabelle (Ausgabe 101, Ausgabe 102, Ausgabe 103 ....)

Ich plane, ASP Menu-Steuerung für diese zu verwenden, die nicht sehr flexibel sein kann, da ich mehr als 100 Ausgabe des Magazins haben werde, wie oder welches mehrspaltiges Menü ich mit asp.net verwenden kann

Meine Datenbank kann viele Flüsse haben, ich würde mich über diesbezügliche Hilfe freuen, damit ich diese Datenbank für dieses CMS-System nutzen kann. Bitte zögern Sie nicht, Fragen zu stellen, wenn Sie diesbezüglich Fragen haben.

Hinzugefügt : Wenn ich den ganzen Menünamen aus MagazinePages Table ziehen muss, ist es einfach, aber ich wurde gebeten, eine Menüstruktur zu haben, wie im Beispiel gezeigt. Problem damit ist, kann ich Menüs für AboutUs & amp; Multimedia from MagazinePages Tabelle, aber ich habe keine Seiten wie Politik, Wirtschaft, ... Ausgabe 101, 102, 103 .. in dieser Tabelle, da diese Informationen in verschiedenen Tabellen wie News Category in News Table gespeichert sind &Ampere; Ausgabe in Magazine Tabelle. Ich würde lieber mein Tischdesign & amp; mache es flexibel, um Menüinformationen aus einer separaten Tabelle zu lesen, aber ich bin mir nicht sicher, wie

News Table wird in diesem Schema nicht angezeigt.

Was ich getan habe, ist, dass ich die ps_Pages-Tabelle für CMS-Seiten wie Home, Aboutus, Contact, MediaCentre ... erstellt habe.

Ich speichere Seiten im Zusammenhang mit dem Magazin (die eigentlich Artikel mit verschiedenen Kategorien oder Tags wie Kultur, Politik, Sport, Leute usw. sind) in art_Article table

    
Learning 16.10.2012, 10:13
quelle

4 Antworten

4

Warum nicht eine einzelne Seite mit dem Inhalt beschäftigen?

Rufen Sie einfach Page.aspx?Issue=4&Page=4

auf

Dann wissen Sie in Ihrem Code, dass es die 4. Ausgabe ist und sie wollen Seite 4, dann können Sie Code in der Page.aspx (.vb oder .cs) haben, der das übersetzt und dann über das Layout entscheidet.

Also z. B.

%Vor%

Also im Code könntest du dann gehen, Okay, es ist Problem 4, die Datenbankeinträge für Problem 4 zu bekommen, okay, sie wollen Content ID 5 von Ausgabe 4, dann im Stil eines Artikels.

Dies bedeutet, dass Sie keine zusätzlichen Seiten in den Datenbanktyp einfügen müssen. Sie können Inhalte einfach hinzufügen, wenn Sie möchten, und das Element, das die URLs für den Zugriff auf den Inhalt generiert, muss nur den gesamten Inhalt anzeigen.

    
Ryan McDonough 16.10.2012 10:41
quelle
3

Ich denke, Sie müssen Ihr Datenbankschema neu bewerten. Zum Beispiel hätte ich eine Tabelle namens "ParentMenuItems"

Diese Tabelle enthält alle Top-Menüelemente (Startseite, Über uns, Probleme usw.) und enthält den Text für untergeordnete Menüs. Dann müssen Sie eine ChildMenu-Tabelle haben, die Beziehungen zu Ihren übergeordneten Menüelementen hat.

%Vor%

Dann könnten Sie eine andere Tabelle namens "ChildMenuItems" wie folgt haben:

%Vor%

Der Code könnte so funktionieren:

%Vor%

Schreiben Sie dann einen foreach-Code, um die SQL-Ergebnisse aufzulisten

%Vor%

Ich hoffe, das hilft. Lass es mich wissen, wenn du Fragen hast.

TIPP: Entity Framework wird dies sehr leicht machen.

    
bugnuker 22.10.2012 23:15
quelle
2

Ich bin mir nicht sicher, ob ich verstanden habe, was Sie brauchen, aber ich nehme an, Sie wollen ein Menü für das ganze System erstellen und nicht ein Menü für jedes Magazin, oder?

Wenn ja, denke ich, dass Sie auf das falsche Problem schauen: Das Problem ist nicht das Datenbankschema, sondern das Konzept, dass Ihr Menü automatisch von N verschiedenen Tabellen gefüllt werden sollte, die keinen vordefinierten Standard haben.

Ich würde eine Menü-Tabelle erstellen - und Magazin-Seiten und Menü zwei verschiedene Tabellen erstellen: Wenn Sie ein CMS-ähnliches System erstellen, haben Sie wahrscheinlich eine Seite, auf der ich Kategorien, Probleme und - warum nicht - Menüeinträge bearbeiten kann Ganz abgesehen von anderen Tischen.

Außerdem würde ich ein "Tag" -System erstellen, in dem alle meine Nachrichten und Probleme "markiert" anstatt in eine exklusive Kategorie gestellt werden könnten. Es würde ermöglichen, eine Nachricht zu haben, die gleichzeitig über Politik und Kultur spricht. Anstatt den Benutzer auf viele verschiedene pages.aspx zu verweisen, verwenden Sie stattdessen content.aspx? Tag = politics. Beim Erstellen des Tags hätte ich die Möglichkeit, dieses Tag der Menütabelle hinzuzufügen, unter "Neuigkeiten", "Probleme" usw. Gleiches gilt für Kategorie und Probleme.

Wenn es nicht Ihren Anforderungen entspricht, können Sie diese Optionen ausprobieren - aber alle anderen Lösungen als eine bestimmte Tabelle für Menüeinträge führen zu einer "Warnung, zukünftige Probleme erkannt" in meinem Gehirn:

1 - Erstellen Sie eine Menütabelle, eine gespeicherte Prozedur, die diese Tabelle füllt, indem sie bestimmte Regeln befolgt und dann auf Tabellen wie "Kategorie" trimmt, die die gespeicherte Prozedur abschneidet und aufruft, jedes Mal, wenn Inhalt sich ändert (klingt wie ein schneller) fix zu mir)

2 - Fügen Sie einen "submenu_table", "submenu_field", "submenu_condition" usw. zu den Magazinseiten hinzu und verwenden Sie dynamic sql, um Daten auszuwählen (etwas wie Set @SQL='Select '+ submenu_field + ' from '+ submenu_table + ' where ' + submenu_condition; Exec(@SQL) ) (eine andere schnelle Lösung, schwere und wahrscheinlich langsame Abfrage)

(bearbeiten :) 3 - es gibt auch hierachyId Feld in SQL 2008 und höher ([http://blogs.msdn.com/b/manisblog/archive/2007/08/17/sql-server-2008-hierarchyid.aspx]) 1

    
Retired_User 24.10.2012 02:49
quelle
2

Erstellen Sie eine Tabelle für Menüs

%Vor%

Erstellen Sie eine weitere Tabelle für die Untermenüs

%Vor%

Gehen Sie nun zur Hauptseite. HTML-Code ist:

%Vor%

Code hinter dem Code ist:

%Vor%

es muss gespeichert werden, um die Dynamik des Menüs entsprechend der Rollen-ID aufzurufen, wie unten

%Vor%

// new sp beginnt hier

%Vor%

// ein anderer sp ist

%Vor%

Es ist nur eine Möglichkeit, dies zu tun, Sie können dies entsprechend Ihrer Anforderung ändern .........

proc_Extract_MenuPageByRoleIDAndMenuID sp wird verwendet, um den Seitennamen und seinen Pfad zu erhalten,

Extract_CssNameForMenuByMenuIDAndPageName sp wird verwendet, um die aktive Klasse auf das erste li zu setzen. Hop das wird dir helfen ..... Es ist der Arbeitscode ..

    
Ram Singh 23.10.2012 04:53
quelle