2016-04-22 14 views
0

Ich erstelle eine Datenbank für eine Website.Erstellen einer eindeutigen URL für Produkte und Kategorien in mysql

Ich stehe vor einem Problem und es ist, dass ich nicht sicher bin, wie man Tabellen kombiniert, um die gleiche URL auf einem Produkt oder einer Kategorie nicht zu haben.

Meine Idee ist, 5 Tabellen zu erstellen: PRODUCTS, CATEGORIES, URLS, URLPRODUCTS und URLCATEGORIES.

Die Tabelle PRODUCTS enthält alle Informationen zum Produkt und einen Autoinkrement-Primärschlüssel pid.

Dasselbe gilt für CATEGORIES (cid).

URLS hat 2 Spalten: autoincrement Primärschlüssel uid und eindeutiger Schlüssel url.

Die anderen beiden Spalten sind die Kombination PRODUCTS und URLS oder CATEGORIES und URLS.

Welche Struktur sollten sie haben, um zu vermeiden, dass ein Produkt dieselbe URL wie eine andere oder eine Kategorie hat und nur eine URL pro Produkt oder Kategorie hat?

Antwort

1

Ihre Anforderung scheint, dass Sie separate URL für jedes Produkt und jede Kategorie haben. Möchte einen Punkt hinzufügen, dass jedes "Produkt" zu mindestens einer Kategorie gehört, daher sollte es eine Spalte im Produkt für KategorieId als Fremdschlüssel von 'Kategorie' tbl geben. Kommen zu Ihnen Anwendungsfall: Ich denke, es sollte eine weitere Spalte in Produkt & Kategorie Tabelle namens "UID", die Fremdschlüssel aus URL-Tabelle sein wird, wird dies sicherstellen, dass jedes Produkt/Kategorie hat nur eine URL. Also keine Notwendigkeit, tbls URLPRODUCTS und URLCATEGORIES (viele zu viele Beziehung Fall) zu erstellen, da Ihre Anforderung für eins zu eins ist.

+0

Und wäre das nicht problematisch, wenn ich versuche, das gleiche Idurl für ein Produkt und eine Kategorie hinzuzufügen? – danibg

+0

Das wäre, aber wird ein kleiner sein. Es kann auch vorkommen, dass wir dieselbe URL für Produkt und Kategorie benötigen, wenn nur ein Produkt in dieser Kategorie vorhanden ist. –

+0

Nun, das möchte ich nicht. Ich würde es vorziehen, nur ein Produkt in dieser Kategorie zu zeigen (welches nur alle Produkte in der Kategorie auflistet, eine in diesem Fall). – danibg

Verwandte Themen