Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank Frage (https://www.delphipraxis.net/35891-datenbank-frage.html)

The_Tremendous 13. Dez 2004 13:00


Datenbank Frage
 
Ich muss eine Fahrtenbuchanwendund mit delphi und ParadoxTabellen schreiben.


Dafür habe ich zwei Tabellen: Fahrzeuge und Fahrtenbuch.


Fahrzeuge(Kennzeichen, Hersteller, Typenbezeichnung, Fahrzeugtyp, Fraftstoffart, Anfangskilometer)


Fahrtenbuch(Kennzeichen, Datum, Abfahrtsort, Fahrtziel, Abfahrtszeit, Ankunftszeit, Kilometerstand, Grund, Fahrer, Tankmenge, Tankkosten, Bemerkung)


1) Ist das so schon in der 3. Normalform??

2) Wäre ne andere Tabellenaufteilung sinnvoller??

3) Wie kann ich, da ich die Tabellen Programmieren muss die Schlüssel erstellen.
Wie einen Primer, und wie kann ich einen Sekundärschlüssel erstellen??

4) Sind die von mir gewählten Schlüssel so richtig, oder müssten die anders sein?



Wäre cool, wenn ihr mir helfen könntet.


The_Tremendous :coder2:

alcaeus 13. Dez 2004 13:05

Re: Datenbank Frage
 
Hallo The_Tremendous,

zu 1) So wie ich das sehe sind die beiden Tabellen in der 3. Normalform.
zu 2) das musst du selbst wissen, es gibt weißgottwieviele Möglichkeiten für die beiden Tabellen :roll:
zu 3) Du musst die Tabellen nicht programmieren, sondern erstellen. Wie machst du dies? Über die Datenbankoberfläche oder mit SQL?
zu 4) In Tabelle "Fahrtenbuch" musst du einen anderen Primärschlüssel wählen, da mit einem Auto durchaus mehrere Fahrten gemacht werden können, und deshalb der Schlüssel "Kennzeichen" nicht mehr eindeutig ist. Evtl. löst du es mit einer AutoInc-ID und setzt "Kennzeichen" als Foreign Key fest.

Greetz
alcaeus

shmia 13. Dez 2004 13:07

Re: Datenbank Frage
 
Zitat:

Zitat von The_Tremendous
Ich muss eine Fahrtenbuchanwendund mit delphi und ParadoxTabellen schreiben.
Dafür habe ich zwei Tabellen: Fahrzeuge und Fahrtenbuch.

Dir fehlt die Tabelle Fahrer mit Name, Anschrift, Führerscheinnr/klassen, Telefon, Pager, EMail.
Zitat:

Zitat von The_Tremendous
Fahrzeuge(Kennzeichen, Hersteller, Typenbezeichnung, Fahrzeugtyp, Fraftstoffart, Anfangskilometer)

Fahrtenbuch(KennzeichenDatum, Abfahrtsort, Fahrtziel, Abfahrtszeit, Ankunftszeit, Kilometerstand, Grund, Fahrer, Tankmenge, Tankkosten, Bemerkung)

Das Kennzeichen muss als Feld alleine vorhanden sein!
Abfahrtsdatum & Abfahrtsuhrzeit können in einem Feld gespeichert werden.
Primärschlüsselfelder wären dann Kennzeichen & Abfahrtszeit zusammen.

MrSpock 13. Dez 2004 13:08

Re: Datenbank Frage
 
Hallo The_Tremendous,

1) ja, es ist schon die dritte Normalform
2) die Aufteilung ist in Ordnung
3) Beim Erstellen der Tabelle kannst du einen * in das Kennzeichenfeld packen, dann wird es zum Primärschlüssel. Wenn du noch einen Sekundärschlüssel brauchst, kannst du diesen auch über die Datenbankoberfläche erstellen. Einfach unter Tabelleneigenschaften "Sekundärindizes" auswählen.
4) Du könntest alternativ auch beiden Tabellen eine ID verpassen, aber du kannst auch das Kennzeichen benutzen.

Tonic1024 13. Dez 2004 13:09

Re: Datenbank Frage
 
Hi...

Nebenbei:
Das mit der 3. Normalform ist so eine Sache... Es ist immer gut in diese Richtung zu denken, aber nicht immer die 3. normalform mit gewalt anzuwenden. Meine persönliche Meinung...


Dein Kennzeichen kann streng genommen kein Primärschlüssel sein. weil 1. das Kennzeichen im Ausland nochmal vorkommen kann und 2. irgendwann der Wagen abgemeldet wird und nach 6 Monaten (glaub) ein Zweites mal auf Deutschlands Straßen fährt.

Der Schlüssel KennzeichenDatum (soll doch der Schlüssel sein, oder?) Kann nur funktionieren, wenn du zu jedem Datum und Fahrzeug auch NUR ein einzigen Eintrag erlauben willst. Wenn du mehr brauchst oder einen nachtrag pflegen willst ist das nicht mehr Möglich.

Meine Empfehlung: Mach eine "nichtssagende" ID, mit Autoincrement. Das ist eine saubere, eindeutige Lösung, die dir irgenswann viel ärger erspart.

Ausserdem brauchst du natürlich zu jedem Deiner Felder Hersteller, Typenbezeichnung, Fahrzeugtyp, Kraftstoff eine eigene tabelle um eine 1:n Beziehung herstellen zu können. Also kommst du mit zwei Tabellen nicht aus.

Hab mir das nur kurz angeschaut, aber das ist erstmal alles was mir so aufgefallen ist.

MfG

Tonic

[Edit]
Ich seh grad, du hast deinen beitrag überarbeitet...

So wie es jetzt ausschaut geht es garnicht. Wenn du in dem Fahrtenbuch das Kennzeichen als primärschlüssel einstzt, dann kannst du für Jeden Wagen jemals nur einen Eintrag machen und nie einen zweiten...
[/Edit]

Jasocul 13. Dez 2004 13:11

Re: Datenbank Frage
 
Ich hoffe, dass das "nur" eine Übungsaufgabe ist.
Wenn das regulär eingesetzt werden soll, muss das Programm imho zugelassen werden.
Frag mich jetzt aber nicht wo. Das kann dir aber vermutlich das örtliche Finanzamt mitteilen.

Tyrael Y. 13. Dez 2004 13:12

Re: Datenbank Frage
 
Tabelle für Fahrer wäre sinvoll und eine Tabelle für Orte.

Wenn der Abfahrtsort IMMER gleich ist könnte man bei Tabelle Orte auch die Entfernung hinzuschreiben.


mfg


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