2016-04-08 3 views
0

Ich lehre mich seit etwa 6 Monaten selbst zu programmieren und baue meine erste Web-App für die Praxis.Beste SIMPLE-Datenbankstruktur für meine Web-App mit Ressourcen, Kategorien und Tags

Ich ziele darauf ab, meine eigenen sehr einfachen cms zu bauen, um meine Ressourcen in der Datenbank zu speichern und sie auf der Seite zu sichern.

Ich werde Ressourcen haben - jede Ressource wird nur 1 von 3 Kategorien zugeordnet - jede Ressource kann mehrere Tags haben. Letztlich kann der Benutzer zu jeder Kategorieseite navigieren und auf dieser Seite die Ressourcen nach Tags filtern.

Ich habe Probleme mit dem Design der DB.

Ohne Zweifel werde ich eine Ressourcentabelle haben. Soll ich die Kategoriezuordnung direkt in dieser Tabelle speichern (da jede Ressource nur 1 haben kann) oder ist es besser, dafür eine Beziehung mit einer Kategorietabelle zu erstellen? Ich habe viel über Tag-Schemas geforscht und einige scheinen mir in diesem Anfängerstadium etwas zu kompliziert zu sein. Was ist der einfachste Weg, mehrere Tags für eine Ressource zu speichern. 2 Tische? Wie würde dies erreicht werden?

Ich benutze PHP und mySQL.

+0

Weg zu breit für S.O –

+0

@Dagon - gibt es einen besseren Ort/andere Website, die ein besserer Ort für diese Art von Frage wäre? –

+0

@BriannaVay Ich habe eine kurze Erklärung gepostet, weil in diesem Format diese Frage wahrscheinlich geschlossen wird. Dies ist ein riesiges Thema, aber ich bin mir sicher, dass Sie, wenn Sie mehr über den Begriff "Viele-zu-Viele-, Eins-zu-Viele-, Datenbank-Beziehungen" und "MySQL JOIN" erfahren, finden werden, was Sie brauchen. Viele Beispiele im Internet. – sidyll

Antwort

3

Für die Kategorie, da Sie nur eine pro Ressource haben, in der gleichen Tabelle speichern. Dies ist eine Eins-zu-eins-Beziehung.

Für das Tagging benötigen Sie möglicherweise zwei zusätzliche Tabellen, da dies eine Viele-zu-viele-Beziehung ist (jede Ressource kann mehrere Tags haben und jedes Tag kann mehreren Ressourcen zugewiesen sein). Eine Tabelle speichert den Tag-Namen und seine ID. Eine andere Tabelle soll die Beziehungen speichern. Dieser hat zwei Spalten, eine für die Tag-ID und andere für die Ressourcen-ID.

Schnell Beispiel:

id | resource | category 
---+----------+---------- 
1 | rice | 24 
2 | apple | 42 

id | tag 
---+------- 
1 | fruit 
2 | cereal 
3 | food 

id_t | id_p 
-----+------ 
    2 | 1 
    1 | 2 
    3 | 1 
    3 | 2 

Dann können Sie die Tabellen abfragen und JOIN sie die gewünschten Ergebnisse zu erzielen.

+0

Ich nehme an, wenn dies die Antwort der OP ist, dann ist es nicht zu breit. :-) –

+0

@Dagon danke. Da die Frage mit Datenbankdesign getaggt ist, finde ich das passend. Aber ich leugne nicht, dass es eine breite Sache ist, sowohl Frage als auch meine Antwort :-) – sidyll

+0

gut, wenn es akzeptiert wird, ziehe ich meine enge Abstimmung zurück (für was es wert ist) –

Verwandte Themen