Zitat von
Blacklotus:
Ich hatte mir das bis jetzt folgendermassen überlegt ich erstelle mir einen Record zu jedem Bild in dem ich die Daten speichere die mich interessieren also (Personen, Datum, Ort, etc.)
Diese Records speichere ich in einem extra Ordner. Als Name würde ich ihnen den MD5 Check des jeweiligen Bildes geben. Somit müsste ich bei jede suche alle Bilder durchhangeln um alle Einträge zu suchen, ich vermute aber das das Recht langsam ist.
???
Ich vermute mal die Bilder selbst sollen nicht in die Datenbank.
Ich würde mir 3 Tabellen anlegen:
Code:
Bilder.db
Bild_ID Integer // Primärschlüssel
Name string
Ort string
Datum datetime
Bemerkung string
MD5_Hash string
Filename string
...
Code:
Personen.db
Person_ID Integer // Primärschlüssel
Name string
Vorname string
Nickname string
Geburtstag date
Bemerkung string
...
Code:
Zuordnung.db
Bild_ID Integer // Primärschlüssel
Person_ID Integer // Primärschlüssel
Beispieldaten:
Bilder.db
Bild_ID, Name, Ort, Datum, Bemerkung, MD5_Hash, Filename
1, Eltern, Zuhause, 01.01.2002, Das sind meine Eltern am Sylvester, xxx, c:\temp\Eltern.jpg
2, Test, Zuhause, 01.01.2002, Das ist ein Testbild mit mir und meinem Vater, xxx, c:\temp\test.jpg
Personen.db
Person_ID, Name, Vorname, Nickname, Geburtstag, Bemerkung
1, Mustermann, Hans, Papa, 01.01.1950, Das ist mein Dad
2, Mustermann, Helga, Mamma, 01.01.1952, Das ist Mom
3, Mustermann, Hugo, Ich, 01.01.1980, Das bin ich
Zuordnung.db
Bild_ID, Personen_ID
1, 1
1, 2
2, 1
2, 2
Was soll das Ganze?
Also In Bilder.db speicherst Du alle Daten zu den Bildern ab (Ausnahme die Personen)
Der Filename zeigt auf das Bild. Der MD5_Hash dient zum wieder finden der Bilder falls sie verschoben wurden. (Funktion schreiben, die HDD durchsucht und MD5_Hash erstellt und dann mit Datenbank vergleicht)
In Personen werden alle Personendaten abgespeichert.
In Zuordnung werden die Personen den Bildern zugeordnet.
1. Zeile (1, 1) = auf Bild mit Bild_ID 1 ist Person mit Person_ID 1 abgebildet (Vater auf Eltern.jpg)
2. Zeile (1, 2) = auf Bild mit Bild_ID 1 ist Person mit Person_ID 2 abgebildet (Mutter auf Eltern.jpg)
3. Zeile (2, 1) = auf Bild mit Bild_ID 2 ist Person mit Person_ID 1 abgebildet (Vater auf test.jpg)
3. Zeile (2, 3) = auf Bild mit Bild_ID 2 ist Person mit Person_ID 3 abgebildet (ich auf test.jpg)
Das wars.
Wie finde ich nun die Bilder einer Person?
Du willst alle Bilder Deiner Mutter sehen?
Deine Mutter hat Person_ID 2, also lässt Du Dir alle Datensätze der Zuordnung.db mit Person_ID 2 anzeigen.
-> Nur Bild_ID 1 zeigt Deine Mutter
Falls Du das Ganze mit
SQL machen willst:
select Bild_ID from Zuordnung where Person_ID = 2
Ich würde Dir die
BDE in Kombination mit
Paradox Tabellen empfehlen.
Dann empfiehlt es sich einen Filter zu setzen:
Table3.Filter := 'Person_ID=2';
Wenn Du für die 3 Tabellen jeweils eine TTable nimmst, kannst Du diese 3 Tabellen miteinander verknüpfen.
Du hast dann z.B. 2 TDBGrid Eins für die Bilder eins für die Personen wenn Du Dich im BilderGrid bewegst, wird das PersonenGrid automatisch aktualisiert und zeigt die abgebildeten Personen an.
Ich hoffe Die Info bringt Dich etwas weiter.