Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie diese Tabelle (tdbf) am günstigsten anlegen ? (https://www.delphipraxis.net/131735-wie-diese-tabelle-tdbf-am-guenstigsten-anlegen.html)

NoGAD 30. Mär 2009 02:26

Datenbank: tdbf • Version: 6.9 • Zugriff über: direkt

Wie diese Tabelle (tdbf) am günstigsten anlegen ?
 
Hiho.

In Sachen DB bin ich ein Anfänger, daher bitte ich um Rat, wie eine Tabelle auszusehen hat, die folgenden Ansprüchen genügt:

1. Datenbank muss vordefiniert werden, da in die Felder später Daten eingetragen werden.
Bsp: Vorgabe 12 Stunden alle 1/4 Stunde Eintragsmöglichkeit
2. Index sollte Datum und Uhrzeitabhängig sein
3. Feld Datum/Uhrzeit darf nicht fix sein, da eine Anpassung des Intervalles erfolgen sollte.
Bsp: Aus 1/4 Stunde kann auch 10 Minuten-Takt werden. Die Assoziationen der Uhrzeit-Termin sollen dabei entweder neu geordnet oder bestehen bleiben/angepasst werden
(vorher: Termine = 8:15, 8:30 -> 8:10, 8:20 ODER [..] -> 8:10, 8:30 wobei in Fall 2 um 8:20 ein leeres Feld entsteht)
4. Aus Pkt.3 ergibt sich eine Indizierte Erweiterbarkeit der DB, was sich wiederum wohl auf den Index bezieht, der neu erstellt werden muss (?)

Wie sähe so eine Struktur aus ?

Danke für Tipps,

~M.

mkinzler 30. Mär 2009 05:38

Re: Wie diese Tabelle (tdbf) am günstigsten anlegen ?
 
Ich würde die Zeitpunkte nicht vorgeben, sondern nur den Start speichern.

hoika 30. Mär 2009 07:16

Re: Wie diese Tabelle (tdbf) am günstigsten anlegen ?
 
Hallo,

1. Warum dbf .. (jaja, musste sein ;) )

Also, du brauchst mindestens 2 Tabelle,

Tab 1: Main
ID integer (autoinc, primary key),
wird immer hochgezählt, hat aber sonst keinen Bezug zu den Daten
TheDate DATE
TheTime TIME

Tab 2: Data
ID siehe Tabelle Main
MainID Integer Foreign key auf Main.ID
Data1 XXX
Data2 XXX


Bsp.-Datensätze
Main
ID, TheDate, TheTime
10, 12.03.2009, 12:03
11, 12.03.2009, 12:05

Data
25, 10, XXX Daten für Main-Record 10
27, 11, XXX Daten für Main-Record 11


Warum so kompliziert ?
Es geht sogar noch "komplizierter"

Tab 2: Data
ID siehe Tabelle Main
MainID Integer Foreign key auf Main.ID
DataName Char(20)
DataValue Char(20)

Data
25, 10, 'Name', 'Müller'
26, 10, 'VorName', 'Heinz'
28, 10, 'Name', 'Walter'
20, 10, 'VorName', 'Fritz'



Mit dieser Struktur bist du flexible gegenüber Änderungen !
Neues Daten-Feld gewünscht ? -> Einfach Speichern.
Neues Datum/Zeit ? -> Einfach Speichern.



Heiko

NoGAD 30. Mär 2009 13:26

Re: Wie diese Tabelle (tdbf) am günstigsten anlegen ?
 
Danke Euch beiden ersteinmal für die schnellen Antworten. Gleich noch vornweg: mir schwirrt der Kopf. Ich kann DiESES abstraktes Denken einfach nicht umsetzen :(
Die Relationen einer Datenbank bzw der Tabellen untereinander/miteinander geht mir einfach nicht leicht von der Denkweise in mich hinein. Rechnen geht besser ;)
Arrays kann ich besser im Kopf verwalten. Aber sowas nicht. Bin leider auch kein gelernter Informatiker, mache alles als Autodidakt. Auch ein Hinweis auf Dieses Tutorial (http://www.delphi-treff.de/tutorials...bank-einstieg/) hilft mir nicht, weil das nur eine eindimensionale Tabelle beinhaltet und mir vom Prinzip nicht weiterhilft :(

Zitat:

Zitat von hoika
Hallo,

1. Warum dbf .. (jaja, musste sein ;) )

Weil ich diese DB miteinkompilieren kann. Es geht um tdbf (http://tdbf.sourceforge.net/ Stand 2006), da diese auch kostenfrei ist und mein Projekt Freeware/Opensource werden soll.

Zitat:

Zitat von hoika
Also, du brauchst mindestens 2 Tabelle,

Tab 1: Main
ID integer (autoinc, primary key), wird immer hochgezählt, hat aber sonst keinen Bezug zu den Daten
TheDate DATE
TheTime TIME

Tab 2: Data
ID siehe Tabelle Main
MainID Integer Foreign key auf Main.ID
Data1 XXX
Data2 XXX


Bsp.-Datensätze
Main
ID, TheDate, TheTime
10, 12.03.2009, 12:03
11, 12.03.2009, 12:05

Data
25, 10, XXX Daten für Main-Record 10
27, 11, XXX Daten für Main-Record 11

Warum benötige ich dann noch ein Feld ID für die Tabelle Daten ?

Zitat:

Zitat von hoika
Warum so kompliziert ?
Es geht sogar noch "komplizierter"

Tab 2: Data
ID siehe Tabelle Main
MainID Integer Foreign key auf Main.ID
DataName Char(20)
DataValue Char(20)

Data
25, 10, 'Name', 'Müller'
26, 10, 'VorName', 'Heinz'
28, 10, 'Name', 'Walter'
20, 10, 'VorName', 'Fritz'

In diesem Bsp. wären dann also am 12.03.2009 12:03 zwei verschiedene Termineinträge definiert (Heinz Müller und Fritz Walter)?


Zitat:

Zitat von hoika
Mit dieser Struktur bist du flexible gegenüber Änderungen !
Neues Daten-Feld gewünscht ? -> Einfach Speichern.
Neues Datum/Zeit ? -> Einfach Speichern.

Hm, grundlegend, nach auseinaderklamüsern habe ich es glaube ich verstanden. Nur umsetzen - das wird eine Sisyphusarbeit für mich ;P

Danke nochmals.

hoika 30. Mär 2009 13:47

Re: Wie diese Tabelle (tdbf) am günstigsten anlegen ?
 
Hallo,

kurz, ja du hast es verstanden ;)

Man muss immer weitersehen.
Das schwierigste bei einer DB ist, wenn das Design der Tabellen geändert werden muss,
weil z.B. neue Felder eingefügt werden müssen.


Heiko

NoGAD 30. Mär 2009 15:05

Re: Wie diese Tabelle (tdbf) am günstigsten anlegen ?
 
Hm, deswegen versuche ich es mit der von mir gewählten, da ich mit einer einzelnen DB schon Erfahrungen habe und nachträgliche Felder leicht einbaubar sind.
Aber in dem Zusammenhang noch eine Frage:

ist es sinnvoll schon vorher einige leere Felder zu definieren, die später evtl. nutzbar gemacht werden können und bis dahin 'einfach so nebenher mitlaufen'?
Z.B. eine TB mit vorname 1x nachname 1x dummy_int 5x dummy_char 5x dummy_date 3x (5 x dummy_xxx => dummy_xx1, dummy_xxx2 ...) ?

hoika 30. Mär 2009 16:23

Re: Wie diese Tabelle (tdbf) am günstigsten anlegen ?
 
Hallo,

nein, ist es nicht.
1., du weisst nicht, wie gross z.B. ein Char sein wird.

Les dir ausserdem mal in wikipedia was zu Normalisierung von Tabellen durch.

Noch ein Tip:
Wir reden von Tabellen, nicht von Datenbanken, wenn wir dir tbf meinen.
Unter DBase wäre das Verzeichnis der dbf's eine Datenbank.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 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