ich habe leider nichts passendes gefunden oder ich verstehe es einfach nicht, deswegen möchte ich hier einmal speziell auf mein Problem eingehen:
Für mein ASP.NET MVC4 Projekt muss es eine Möglichkeit geben (wie bei fast allen Seiten), bestimmte Produkte, bestimmten Kategorien zuordnen zu können.
Ein Beispiel:
Buch -> EDV -> Anfänger: ASP.NET für dummies
Games -> PlayStation 3 -> Action: Doom 3
Games -> XBOX 360 -> Action: Half Life 2
Jetzt habe ich, z.B. bei Action das Problem, dass diese Kategorie zwei Eltern-Kategorien haben kann. Deshalb habe ich mir folgende Tabellen in der SQL-Datenbank gedacht:
Categories
ID | Name | Description
CategorieTree
ID | ParentCategory | SubCategory
also eine n:m Verknüpfung. Somit kann jede Kategorie mehrere Elternkategorien besitzen.
Ist mein Schema der gängige Weg zum Anlegen der Kategorien oder habt ihr bessere Möglichkeiten?
Zusätzlich frage ich mich dann, wie man Kategorien in meinem Fall am besten mit dem Routing abbilden kann. Im Prinzip müssen doch alle Kategorien fest in der RegisterRoutes() Methode vorgegeben werden oder nicht?
Hilfe wäre Klasse, ich habe schon Kopfschmerzen vom vielen hin und her ;-)
Nein, Routes müssen nicht fest vergeben werden. Du musst nur das Schema definieren. Routes werden in der MSDN gut erklärt. Dann solltest Du das Prinzip gut verstehen (auch im Zusammenhang mit Areas, Controllern und Actions).
Ob Du nun Games -> PS3 -> Name oder PS3 -> Games -> Name als Schema nutzt; das musst Du wissen - beides möglich und sinnvoll.
Bei einer n:m-Verknüpfung gibt es aber eigentlich kein anderen sinnvollen weg als über eine Hilfstabelle - das ist normal (jedenfalls bei relationalen Datenbanken).
Klar, bei dem Produkt selbst steht eine ID hinter, die ich zur Abfrage verwenden kann. Wie aber funktioniert das für die Kategorien? Fragt man hier wirklich dann den String-Wert ab?