AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankschema - Tabellenverknüpfung
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankschema - Tabellenverknüpfung

Ein Thema von NoGAD · begonnen am 17. Mär 2021 · letzter Beitrag vom 19. Mär 2021
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#1

Datenbankschema - Tabellenverknüpfung

  Alt 17. Mär 2021, 11:24
Datenbank: ABS_Database • Version: 7.92 • Zugriff über: ABSTable/ABSQuery
Hallo,

im Anhang habe ich ein Schema (in Libreoffice erstellt) angehängt, wie ich mir die Relation meiner Datenbank vorstelle. Die Feldlänge, gerade bei den Verweisen auf andere Tabellen (id) habe ich meist mit 25 wohl zu hoch angesetzt, was wäre hier für ein gängiger Wert?

Ist das vom logischen Aufbau so in Ordnung?

LG Mathias
Miniaturansicht angehängter Grafiken
2021-03-17-database-schema.png  
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datenbankschema - Tabellenverknüpfung

  Alt 17. Mär 2021, 11:32
Zitat:
Ist das vom logischen Aufbau so in Ordnung?
...mir ist nur der Umlaut "Ü" aufgefallen. Manche DBMS könnten allergisch reagieren...Wenn man alles in englisch macht, hat man solche Probleme nicht.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#3

AW: Datenbankschema - Tabellenverknüpfung

  Alt 17. Mär 2021, 12:03
Integer umfasst (für gewöhnlich) den Wertebereich von −2.147.483.648 bis 2.147.483.647, das sind 10 Stellen. Ob Du wohl jemals so viele Bücher verwalten wirst?

Im Beispiel für ein Create Table (https://www.componentace.com/sql/create-drop-table.htm) ist bei Integer kein Wert für die Größenangabe vorgesehen, was durchaus üblich ist. Es kann also gut sein, dass Du hier nichts angeben musst, analog zu z. B. Boolean, Date ...

Für den Preis würd' ich jetzt nicht unbedingt einen String wählen. Zulässige Datentypen sind hier https://www.componentace.com/help/ab...ddatatypes.htm zu finden. Bei Preisen handelt es sich um Währungsangaben, da wäre dann wohl der Datentyp Currency angebracht.

Wenn der Preis als Currency angegeben wird, kann man dann eventuell später auch mal die Summe aller Bücherpreise berechnen oder den Durchschnittspreis aller Bücher oder die Summe der Buchpreise zu Autor X oder Verlag Y, ... Bei 'nem String für die Preisangabe wird das eher sportlich und fehleranfällig.
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Datenbankschema - Tabellenverknüpfung

  Alt 17. Mär 2021, 13:12
Vielen Dank!

Das ist wirklich sehr schöne konstruktive Hilfe.

Umlaute fliegen raus

Die Feldgröße für Integerwerte hatte ich tatsächlich übersehen.

Auch das mit dem Preis ist tatsächlich besser.

LG Mathias.
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Datenbankschema - Tabellenverknüpfung

  Alt 17. Mär 2021, 14:35
Ich habe eine Nachfrage.


Ist die Tabelle table_bibo2 überhaupt nötig bzw. sinnvoll? Eigentlich könnte ich diese doch weglassen, ist mir eben aufgefallen.

Die Haupttabelle wäre dann table_book.

Im Anhang eine neue Aufstellung der Tabellen, in englisch.

LG Mathias
Miniaturansicht angehängter Grafiken
2021-03-17-database-schema-eng.png  
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Datenbankschema - Tabellenverknüpfung

  Alt 17. Mär 2021, 14:53
Die Tabelle macht so wirklich keinen Sinn. Wenn du mehrere Bibliotheken verwalten willst, ist der Ansatz sowieso falsch. Dann müsstest du in der Table_book einen Verweis auf die Bibliothek haben - nicht umgekehrt.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Datenbankschema - Tabellenverknüpfung

  Alt 17. Mär 2021, 15:13
Warum lagerst du die Description aus? Thumbnail kann ich ja ggf. noch verstehen.

borowto und borowdate?
Für die Verwaltung der Ausleihen würde ich eigene Tabellen verwenden.

Die bibo Tabelle könnte schon Sinn machen, wenn es ein Buch mehrfach gibt. Dann ist in bibo die Buchinstanz und es wird dann auch eine konkrete Buchinstanz verliehen.
Ralph

Geändert von Jumpy (17. Mär 2021 um 15:17 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#8

AW: Datenbankschema - Tabellenverknüpfung

  Alt 17. Mär 2021, 15:18
Könnte man weglassen.

Wenn man das Programm aber mal ausbauen will, um damit auch CDs, DVDs, VHS-Vidokassetten (wir sind ja schon was älter), Musiknoten und was sonst noch ... verwalten will, dann könnte man diese Tabelle erweiteren und anhand der Auswahl dort auf unterschiedliche Programmteile verzweigen, könnte aber ggfls. auch Verknüpfungen unter den Tabellen zu den verschiedenen Themenbereichen erstellen. Z. B.: Haben wir zu dem Titel xy auch die passenden Noten und auf welchen CDs ... ist er ebenfalls zu finden, jedenfalls ist er in dem Liederbuch im Regal a, Fach b, sowie als MusicXML ... vorhanden.

Ok: Wäre dann erstmal nur Spielerei, aber wer weiß, was noch daraus wird.

Ließe sich ggfls. dann später "nachmodelieren". Momentan jedenfalls absolut entbehrlich.

Die ISBN ist eine Nummer und kein String (fällt mir gerade noch so ein). Es gibt sie in zwei Varianten, als 10-stellige Zahl oder als 13-stellige Zahl. String 42 ist da irgendwie seltsam.

https://de.wikipedia.org/wiki/Intern...dardbuchnummer

Die ISBN 10 ist die ISBN 13 abzüglich der ersten drei Ziffern zuzüglich der Neuberechnung der Prüfziffer an der letzten Stelle. Genaugenommen handelt es sich hier um eine Redundanz. Aus ISBN 13 bekommt man über definierte Regeln immer ISBN 10. Persönlich würd' ich nur die ISBN 13 speichern. Aus ISBN 13 bekommt man im Bedarfsfall immer ISBN 10. Ob man aus ISBN 10 immer auf die führende 978 bzw. 979 der ISBN 13 zurückschließen kann, weiß ich nicht.

Delphi-Quellcode:
{als reine Ziffernfolge} Copy(ISBN13,4,9) = Copy(ISBN10,1,9)
{nach ISO formatiert} Copy(ISBN13,4,14) = Copy(ISBN10,1,12)
Die Bindestriche, Leerzeichen, ... in den Nummern sind was für die Menschen, die das dann ggfls. besser lesen können, aber eigentlich nicht für die Abspeicherung erforderlich.
Zumal: Wenn man die Bindestriche korrekt setzen will, so sind sie abhängig davon zu setzen, zu welchem Land, zu welcher Gruppennummer, zu welchem Verlag sie gehört. Der Rest ist dann die Nummer des Titels, gefolgt von der einstelligen Prüfziffer. Bei der Beachtung der Formatierregeln für die Anzeige, wird eine ISBN 13 17 Zeichen lang. Wenn man dann noch das ISBN mit speichert, kommt man auf 22 Zeichen. Beim Speichern der Bindestriche muss man natürlich String als Datentyp wählen.
  Mit Zitat antworten Zitat
borstenei

Registriert seit: 12. Nov 2011
121 Beiträge
 
#9

AW: Datenbankschema - Tabellenverknüpfung

  Alt 17. Mär 2021, 15:55
Ein Autor kann doch aber mehr als ein Buch schreiben, wenn jetzt bei diesem Tabellenaufbau 5 Bücher von Grisham eingegeben werden erscheint doch auch in der Tabelle Autor 5 x der Name John Grisham
und das sollte doch vermieden werden.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#10

AW: Datenbankschema - Tabellenverknüpfung

  Alt 17. Mär 2021, 16:02
Ein Autor kann doch aber mehr als ein Buch schreiben, wenn jetzt bei diesem Tabellenaufbau 5 Bücher von Grisham eingegeben werden erscheint doch auch in der Tabelle Autor 5 x der Name John Grisham
und das sollte doch vermieden werden.
Nee das ist schon OK so. In Autor ist ja der Fremdschlüssel auf die Autor-Tabelle gespeichert.

Aber: Ein Buch kann auch mehrere Autoren haben, deswegen ist das zwichen Buch und Autor eigentlich eine n:m Beziehung die über eine Zwischentabelle abzubilden ist.
Ralph
  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 20:48 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