Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Bilder -> Personen Datenbank

  Alt 18. Okt 2004, 17:27
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.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat