AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Table in einer Table
Thema durchsuchen
Ansicht
Themen-Optionen

Table in einer Table

Ein Thema von MichaelSchaefer · begonnen am 6. Okt 2002 · letzter Beitrag vom 6. Okt 2002
Antwort Antwort
Seite 1 von 2  1 2      
MichaelSchaefer

Registriert seit: 6. Okt 2002
5 Beiträge
 
#1

Table in einer Table

  Alt 6. Okt 2002, 11:06
Hallo!

Ich arbeite zwar mit Borland C++-Builder und nicht mit Delphi, aber in diesem Forum sollte sich - hoffe ich - doch jemand mit den Paradox7-Datenbanken der BDE auskennen. Zum Problem:

Ich entwickle zur Zeit ein System zur elektronischen Erfassung und Verwaltung der Schulbücher unserer Schule. Dazu sollen für jedes Buch die bisherigen Benutzer gespeichert werden. Dazu will ich innerhalb der Table für das Buch ein weiteres Table einbauen, schließlich können ja unterschiedlich viele Benutzer vorkommen, das Ganze soll also variabel sein.

Wie geht das? Ich hoffe mein Problem ist verstanden worden. Wenn nicht bitte nachfragen, ich erläutere es dann besser - hoffe ich.

Michael Schaefer
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 6. Okt 2002, 11:24
Hallo Michael und Willkommen,

Du könntest doch im OnNewRecord von Table1, also wenn ein Buch aufgenommen wird, z.B. eine Einfach ListBox Createn und dort alle bisherigen User auflisten.
Du willst doch, das wenn ein Buch neu aufgenommen wird oder neu angelegt, einfach eine Auflistung sichtbar wird wer das Buch ausgeliehen hat oder hatte?!?
Oder hab ich da was falsch verstanden?

Grüsse, Daniel
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3
  Alt 6. Okt 2002, 11:25
Hi,

du brauchst keine Table in der Table, sondern 2 Tables. Eine für das Buch und eine zweite für die variablen Daten. Also eine Master-Detail Relation, wobei der Buch-Datensatz die Master- und die Verleihdaten die Detailtabelle wäre. Schließlich brauchst Du die Buchdaten nicht bei jedem Verleihvorgang mitzuschleppen.

Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 6. Okt 2002, 11:43
Eigentlich ist die Lösung recht einfach. Du benötigst drei Tabellen. Die erste Tabelle speichert die Daten der Schüler und die zweite Tabelle die Daten der Bücher. Die dritte Tabelle stellt die Verlinkung zwischen den ersten beiden Tabellen dar.

Für jedes Mal, wenn ein Buch verliehen wird, dann wird in die dritte Tabelle ein Link auf den entsprechenden Schüler und ein Link auf das entsprechende Buch gesetzt. Zusätzlich werden dort die Daten gespeichert, welche mit dem Verleih im Zusammenhang stehen (z.B. Datum von-bis).

Anbei ist eine kleine Grafik, welche das Prinzip veranschaulicht.



Ausserdem such mal bei Google nach "Datenbanken normalisieren", da findest Du eine Menge an Informationen zum Thema DB-Design.

Viel Erfolg, wir helfen auch BC++.
Miniaturansicht angehängter Grafiken
53_1033901036.gif  
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
MichaelSchaefer

Registriert seit: 6. Okt 2002
5 Beiträge
 
#5
  Alt 6. Okt 2002, 11:44
Was ist mit Master-Detail RElation gemeint? Verstehe ich das so, dass man in beiden Tables einen eindeutigen Schlüssel hat, zb die Buchnummer, der den Eintrag aus der Ausleiher-DB dem entsprechenden Buch zuordnet?
  Mit Zitat antworten Zitat
MichaelSchaefer

Registriert seit: 6. Okt 2002
5 Beiträge
 
#6
  Alt 6. Okt 2002, 11:47
Den letzten Eintrag hab ich zu spät gesehen. ich denke das ist schon die antwort auf meine letzte frage gewesen. ich werde mal versuchen, das so zu realisieren. vielen dank schon mal für die hilfe.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#7
  Alt 6. Okt 2002, 11:48
Hallo Michael,

das ist korrekt. Die dritte Tabelle enthält dann nur noch die Beziehung BuchNr und LeserNr und eventuell noch Datum der Ausleihe oder der Rückgabe.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
MichaelSchaefer

Registriert seit: 6. Okt 2002
5 Beiträge
 
#8
  Alt 6. Okt 2002, 11:53
kann das nicht auf dauer ein problem mit dem verwaltungsaufwand geben? ich meine unsere schule hat zwischen 20 und 30 klassen mit je etwa 25 schülern, die jedes jahr in etwa 5 bis 7 fächern bücher bekommen (alles grob geschätzt) -> ca. 3000 - 4000 Bücher pro Jahr, da wachsen die datenbanken recht schnell an. gibt das nicht einen sehr hohen verwaltungsaufwand wenn man die gesamte ausleiher-history so verarbeiten will? ich kenn mich da noch nicht so ganz gut aus!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 6. Okt 2002, 11:57
Wenn Du den Jahrgang in die Ausleihtabelle nimmst und diesen indizieren lässt, dann geht das recht gut, da die Datenbank die Struktur dahingehend optimiert, dass Suche etc. sehr schnell geht. Wahrscheinlich kann man die Einträge nach ein paar Jahren auch verwerfen, da es nicht interessant ist, wer vor zehn Jahren das Buch hatte, welches seit fünf Jahren auf der Mülldeponie liegt.

Hier noch eine interessante Sammlung an Dokumenten zum DB-Design.
http://www2-iiuf.unifr.ch/ds/courses/db/

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
MichaelSchaefer

Registriert seit: 6. Okt 2002
5 Beiträge
 
#10
  Alt 6. Okt 2002, 12:05
danke danke, ich werde jetzt mal versuchen die sache programmiertechnisch in den griff zu bekommen!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:25 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