AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bilder -> Personen Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder -> Personen Datenbank

Ein Thema von Blacklotus · begonnen am 18. Okt 2004 · letzter Beitrag vom 19. Okt 2004
Antwort Antwort
Blacklotus

Registriert seit: 7. Jun 2003
13 Beiträge
 
#1

Bilder -> Personen Datenbank

  Alt 18. Okt 2004, 17:54
Hi Leute, ich hoffe ich poste das ganze nun nicht in der falschen sektion, aber das Hauptproblem ist die Datenbank

Also ich habe folgendes vor und dabei folgendes Problem:

Ich habe eine relativ große Anzahl von Bildern (momentan ca. 1000, aber es werden immer mehr)
Deshalb will ich mir nun ein Proggi basteln was zu folgendem fähig ist:

Das Programm soll mir eine Liste aller Personen auf den Bildern zeigen, wenn ich nun eine dieser Personen auswähle möchte ich eine Liste haben auf welchen Bilder die Person zu sehen ist.

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. Also hatte ich mir gedacht ich könnte auch beim start des Proggs aus den ganzen Record files eine einfach Verkettete Pointeliste bauen und mich durch die Hangeln. weiß aber nun nicht wie optimal das beides ist. Und bei 1000 Bildern ist das ganze so oder so recht viel Arbeit, deshalb hatte ich nicht vor das ganze 2 mal zu machen und würde deshalb gerne von euch die Meinung hören was ihr von meinen Ideen haltet, bzw wie ihr es umsetzten würdet.

Ich habe ehrlich gesagt nicht viel Erfahrungen mit Datenbanken und weiß deshalb nicht nach was ich suchen soll. Ich benutze Delphi 6 Personal und das lauffähige Programm soll keien extra Programme benötigen die installiert sein müssen (zumindest der Datenbankteil) deshalb kommt die Borland Datenbank schon mal nicht in Frage.

MFG Blacklotus
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

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

Re: Bilder -> Personen Datenbank

  Alt 18. Okt 2004, 18: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
Benutzerbild von MaBuSE
MaBuSE

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

Re: Bilder -> Personen Datenbank

  Alt 18. Okt 2004, 18:34
Zitat von Blacklotus:
Ich habe eine relativ große Anzahl von Bildern (momentan ca. 1000, aber es werden immer mehr)
Deshalb will ich mir nun ein Proggi basteln was zu folgendem fähig ist:
Das Programm soll mir eine Liste aller Personen auf den Bildern zeigen, wenn ich nun eine dieser Personen auswähle möchte ich eine Liste haben auf welchen Bilder die Person zu sehen ist.
Hatte ich vergessen zu schreiben:
Die Idee find gut. Du kannst ja dann das fertige Programm ja in Open Source oder in Freeware allen Anderen zur Verfügung stellen. (Natürlich nur wenn Du möchtest )
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Blacklotus

Registriert seit: 7. Jun 2003
13 Beiträge
 
#4

Re: Bilder -> Personen Datenbank

  Alt 19. Okt 2004, 03:51
Hi Mabuse, erstmal danke für die Antwort

Richtig die Bilder sollen nicht mit in die Datenbank.

Wie gesagt geht es mir auch darum, dass ich keien extra Programme installieren muss. Dass ist für mich kein Problem aber eben für die an die die Anwendung weitergeben werden soll. Somit will und kann ich die BDE schlecht benutzen.

Aber wie ich erfahren habe gibt es ja die Möglichkeit in Delphi "MyBase" Datenbanken zu erstellen die keine installierte BDE brauchen, sondern nur die midas.dll, die man ja ohne Problem mitliefern kann.

Habe das wohl bei den Daten zu schlecht beschrieben. Also es handelt sich um Schulbilder Auf den Bildern sind "Lehrer" und "Schüler" diese sind jeweils in "Kursen" bzw. "Exkursinen" somit ist die Bilder.db, Personen.db und Zuordung.db dann so (Hoffe nix vergessen zu haben):

Bilder.db
=========
Bild_ID Integer // Primärschlüssel
Kurs Integer // Denke das ist am sinnvollsten über konstanten zu verwalten ?
Datum datetime
Filename string

//Unter Kurse würden somit auch die Exkursionen fallen.

Personen.db
===========
Person_ID Integer // Primärschlüssel
Name string
Vorname string
Lehrer boolean

Zuordnung.db
============
Bild_ID Integer // Primärschlüssel
Person_ID Integer // Primärschlüssel

Wie gesagt mir geht es darum das nicht mehrmals zu müssen.


Ich könnte zwar danach den Source posten ist kein Problem, doch der wird vermutlich so speziel für mein Problem ausfallen, dass keiner was damit anfangen kann
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

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

Re: Bilder -> Personen Datenbank

  Alt 19. Okt 2004, 09:45
Zitat von Blacklotus:
// Denke das ist am sinnvollsten über konstanten zu verwalten ?
Nein !

Mach eine 4. Tabelle mit Kursen:

Code:
Bilder.db
=========
Bild_ID         Integer  // Primärschlüssel
Veranstaltung_ID Integer
Datum           DateTime
Filename        string
MD5_Hash        string
Code:
Veranstaltung.db
================
Veranstaltung_ID Integer  // Primärschlüssel
Name            string
Bemerkung       string
Ich habe die Tabelle bewusst nicht Kurse.db genannt, sondern Veranstaltung, damit wird das Ganze universell und Du kannst es für alles Nutzen (Schulfeste, Schnappschüsse mit Schülern aus mehreren Kursen, ...)

In Deinem Fall werden in Veranstaltung.db die Kurse eingetragen.

Zitat von Blacklotus:
//Unter Kurse würden somit auch die Exkursionen fallen.
Wie gesagt mir geht es darum das nicht mehrmals zu müssen.
Das ist damit erreicht, wenn neue Kurse hinzukommen, brauchst Du nur die Tabelle erweitern.

Grundsätzlich ist es besser auf "Konstanten" zu Verzichten und dafür eine Tabelle zu erzeugen, in der die Konstanten "erklärt" sind. Damit wird die Datenbank von Deinem Programm unabhängig, und es ist möglich z.B. auch ein Web Frontend (Bilder Galerie) in z.B. PHP zu schreiben.

Die Wahl der Datenbank muss man natürlich den Gegebenheiten anpassen.
Wenn keine Installation einer Datenbank möglich ist, bleiben nicht mehr so viele Alternativen übrig.
Das TClientDataSet ist keine schlechte Wahl, das habe ich in kleineren Projekten auch schon verwendet.

Warum habe ich den MD5_Hash noch mal mit in die Tabelle geschrieben?
Deine Idee den MD5_Hash zu verwenden um Dateien zu identifizieren hat mir gut gefallen.
Das ist z.B. Nützlich, wenn die Bilder verschoben wurden. Mann könnte wie ich oben schon geschrieben habe eine Funktion schreiben, die die "fehlenden" Bilder wieder sucht und den Filename korrigiert.
Sonst musst Du jedes Mal, wenn Du Änderungen an der Verzeichnisstruktur vornimmst alle betroffenen Bilder in der Datenbank editieren (Feld Filename).
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz