Vorgeschlagenes Datenbankschema für Fotos Website
Frage
Ich versuche meine Fotos zu organisieren und ein Ajax -Frontend zu erstellen. Ich habe viele Fotos und eine vorhandene Hosting -Site, die dafür bezahlt wird, dass viele Speicherplätze enthalten sind, also möchte ich nicht bezahlen, um im Picasa -Web oder in der Alternative zu speichern.
Ich erstelle eine ASP.NET -Site, um diese Fotos anzuzeigen, aber ich versuche, dann das beste Schema zu speichern. A haben ein paar grundlegende Fragen:
Fotos
Alben
Tags (vielleicht)
Ein paar Fragen: 1. Habe ich eine separate Tabelle für jedes Album oder alle Fotos auf einem Fotos? Die separaten Tabellen wären identisch, daher versuche ich zu bestimmen, ob diese Separate 2 einen Vorteil gibt. Ich glaube nicht, dass ich etwas zu Lust mache.
Lösung
Sie sollten alle Fotos in einen Tisch legen, wo Sie 1: n mit fremden Schlüssel zu Alben haben, wie
Photos | id, title, url, description, album
Albums | id, title, description
wo das Album fremden Schlüssel ist Albums.id
Über Tags möchten Sie wahrscheinlich viele Tags für ein Foto haben, also wäre n: n, wo Sie einen anderen Tisch benötigen, um diesen beiden zu beitreten, also haben Sie also
Tags | id, name
Photo_Tag | id, id_tag, id_photo
wo id_tag
und id_photo
sind fremde Schlüssel zu Tag.id
jeweilig Photo.id
Wenn Sie das Projekt nur für den persönlichen Gebrauch machen, denke ich, dass MySQL gut abschneiden würde.
Andere Tipps
Eine Tabelle für Alben (ID, Name, Beschreibung), eine Tabelle für Fotos (ID, Name, Beschreibung, Fotodata, Elternbum), Sie erhalten keinen Nutzen und viel Komplexität, wenn Sie in verschiedene Tabellen pro Album aufbrechen. Wenn Sie möchten, dass Fotos zu mehreren Alben gehören, verwenden Sie eine Link -Tabelle für die 1: n -Relationship -Alben: Fotos, anstatt die Album -ID als Teil des Fotos zu haben. Wenn Sie sich für Tags entscheiden, ob Sie die Fotos oder Alben (oder beides) markieren möchten, dann entscheiden Sie sich für eine Tags -Tabelle und eine 1: N -Mapping -Tabelle für AlbumTags und Phototags
In Bezug auf die DB -Auswahl ist das einzige Unterscheidungsmerkmal auf diesem Niveau kosten. Gehen Sie also mit dem, was Sie am besten wissen (wenn Sie beide zum gleichen Preis verfügbar sind).