AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Wieder mal die Tabellenstrukturen
Thema durchsuchen
Ansicht
Themen-Optionen

Wieder mal die Tabellenstrukturen

Ein Thema von stOrM · begonnen am 18. Mai 2017 · letzter Beitrag vom 23. Mai 2017
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Wieder mal die Tabellenstrukturen

  Alt 18. Mai 2017, 11:36
Dann erzähl mal was für ein Problem Du hast.
Moin haentschman,
auch wenn das etwas durcheinander zu lesen ist,
Was an Haentschmans Beitrag war denn durcheinander?

Datensätze die über einen JOIN abgrufen werden können nicht bearbeitet werden! Du mußt dich entscheiden. Entweder eine vernünftige Normalisierung oder datensensitive Controls. Beides geht nicht.
Das halte ich für falsch. Es ist eine Frage der Vorgehensweise, der verwendeten Datenbank sowie der Komponenten.
Vielleicht noch etwas gesunder Menschenverstand dazu und alles ist gut.
da mag ich Dir nicht pauschal wiedersprechen, aber das jetzt und hier zu diskutieren bringt stOrM erst einmal nicht weiter, denke ich.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Wieder mal die Tabellenstrukturen

  Alt 18. Mai 2017, 12:19
Dann erzähl mal was für ein Problem Du hast.
Moin haentschman,
auch wenn das etwas durcheinander zu lesen ist,
Was an Haentschmans Beitrag war denn durcheinander?

Datensätze die über einen JOIN abgrufen werden können nicht bearbeitet werden! Du mußt dich entscheiden. Entweder eine vernünftige Normalisierung oder datensensitive Controls. Beides geht nicht.
Das halte ich für falsch. Es ist eine Frage der Vorgehensweise, der verwendeten Datenbank sowie der Komponenten.
Vielleicht noch etwas gesunder Menschenverstand dazu und alles ist gut.
da mag ich Dir nicht pauschal wiedersprechen, aber das jetzt und hier zu diskutieren bringt stOrM erst einmal nicht weiter, denke ich.

Gruß
K-H
Na ja, dass Problem ist, ich glaube Heanschman hat seinen Beitrag editiert?
Weil jetzt tauchen neue Dinge auf, die wir vorhin nicht hatten...

1. laufendenummer // gehört eigentlich in die Positionen? Oder?
2. bezeichnung // des Angebotes oder der Position?

1. Hab ich abgeändert.
2. Gute Frage, ich müsste ja wissen wo das hingehört oder ob das weg kann. Denn laut Heanschman hat die Tabelle Positionen kein Feld Bezeichnung oder ich lese es falsch.

Dort steht ja:

Zitat:
4: Tabelle für die Positionen fehlt mit der ID für das Produkt
ID
AngebotsID // ID aus Angebote = Zuordnung zum Auftrag
ProduktID // ID des eigentlichen Produktes
Menge
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
794 Beiträge
 
#3

AW: Wieder mal die Tabellenstrukturen

  Alt 18. Mai 2017, 12:39
Mal eine weitere Frage: Wie willst du z.B. bei Preisänderungen reagieren? So wie dein Datenmodell jetzt ist, würde eine Preisänderung die alten Angebote verändern.

Lösungsmöglichkeiten:

- Du lässt eine Änderung der Artikel nicht zu. Ggf. muss dann der alte Artikel auf inaktiv (Statusfeld) gesetzt werden und ein neuer Artikel angelegt werden.

- Du rückst etwas von der Normalform ab und übernimmst Felder wie Preis, Artikelbezeichnung etc. mit in die Position (als "Kopie"). Da könnte man es (sofern gewünscht) sogar ermöglichen, dass der Nutzer einen individuellen Preis eintippt.

- Du machst noch eine Tabelle Preise mit Von-Datum, Bis-Datum, Preis.
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Wieder mal die Tabellenstrukturen

  Alt 18. Mai 2017, 12:53
Mal eine weitere Frage: Wie willst du z.B. bei Preisänderungen reagieren? So wie dein Datenmodell jetzt ist, würde eine Preisänderung die alten Angebote verändern.

Lösungsmöglichkeiten:

- Du lässt eine Änderung der Artikel nicht zu. Ggf. muss dann der alte Artikel auf inaktiv (Statusfeld) gesetzt werden und ein neuer Artikel angelegt werden.

- Du rückst etwas von der Normalform ab und übernimmst Felder wie Preis, Artikelbezeichnung etc. mit in die Position (als "Kopie"). Da könnte man es (sofern gewünscht) sogar ermöglichen, dass der Nutzer einen individuellen Preis eintippt.

- Du machst noch eine Tabelle Preise mit Von-Datum, Bis-Datum, Preis.
Guter Einwand, aber Du siehst ja das ich komplett am Anfang stehe damit, deshalb könnte ich, selbst wenn ich wollte Dir deine Frage nicht beantworten.
Wir fangen ja erstmal an die Tabellen zu gestalten und die benötigten Felder in die richtigen Tabellen einzuordnen. Wenn es um spezifische Fragen geht bin ich da der falsche Ansprechpartner.

Aber ich denke auch, so wie Du geschrieben hast, dass ich Variante 1 nehmen würde jetzt so rein vom Gefühl her, also neuen Artikel anlegen, danke für die Anregung!
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
794 Beiträge
 
#5

AW: Wieder mal die Tabellenstrukturen

  Alt 18. Mai 2017, 13:02
Guter Einwand, aber Du siehst ja das ich komplett am Anfang stehe damit, deshalb könnte ich, selbst wenn ich wollte Dir deine Frage nicht beantworten.
Wir fangen ja erstmal an die Tabellen zu gestalten und die benötigten Felder in die richtigen Tabellen einzuordnen. Wenn es um spezifische Fragen geht bin ich da der falsche Ansprechpartner.
Das musst/solltest du aber jetzt schon beim Datenbankdesign berücksichtigen, also welche Felder/Tabellen du dann dafür benötigst.

Version 1 würde ich (wenn überhaupt) nur nehmen, wenn sich die Preise fast nie ändern. Wenn du z.B. später wissen willst, wie oft sich ein Produkt verkauft, macht das die Abfrage deutlich schwieriger.
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Wieder mal die Tabellenstrukturen

  Alt 18. Mai 2017, 13:06
Guter Einwand, aber Du siehst ja das ich komplett am Anfang stehe damit, deshalb könnte ich, selbst wenn ich wollte Dir deine Frage nicht beantworten.
Wir fangen ja erstmal an die Tabellen zu gestalten und die benötigten Felder in die richtigen Tabellen einzuordnen. Wenn es um spezifische Fragen geht bin ich da der falsche Ansprechpartner.
Das musst/solltest du aber jetzt schon beim Datenbankdesign berücksichtigen, also welche Felder/Tabellen du dann dafür benötigst.

Version 1 würde ich (wenn überhaupt) nur nehmen, wenn sich die Preise fast nie ändern. Wenn du z.B. später wissen willst, wie oft sich ein Produkt verkauft, macht das die Abfrage deutlich schwieriger.
Das Problem ist doch das ich es nicht weiß wie die Tabellen richtig gestaltet werden müssen, wenn ich das wüsste könnte ich das ja berücksichtigen.
Also fällt wohl Variante 1 raus, die Preise können sich täglich ändern.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
794 Beiträge
 
#7

AW: Wieder mal die Tabellenstrukturen

  Alt 18. Mai 2017, 13:15
Das Problem ist doch das ich es nicht weiß wie die Tabellen richtig gestaltet werden müssen, wenn ich das wüsste könnte ich das ja berücksichtigen.
Also fällt wohl Variante 1 raus, die Preise können sich täglich ändern.
Also benötigst du entweder eine Tabelle Preise oder musst die Tabelle Positionen um die Felder Preis, Artikelbezeichnung etc. erweitern. Das kannst du ja jetzt in dein Datenmodell einbauen und dann können wir weitersehen was noch fehlt bzw. falsch ist.

Übrigens: Die Felder KundenPK und KundenId verwirren mich. Du solltest eine ID als PrimaryKey haben (das nennst du dann KundenPK oder KundenID) und ein Feld KundenNr.
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

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

AW: Wieder mal die Tabellenstrukturen

  Alt 18. Mai 2017, 13:27
Ich habe da mal ein - bewusst flachgehaltenes - Datenmodell als Bild angehängt. Alle Tabellenfelder haben einen eindeutigen Präfix, macht später die Zuordnung in den Joins einfacher und auch die Identifizierung - woher kommt das Feld...

Die Angebotspositionen nehmen den Preis auf, eine Änderung des Preises in der Preistabelle wird sich dann nicht auf das Angebot auswirken. Darüber hinaus habe ich in der Preistabelle die Möglichkeit geschaffen, einen Gültigkeitszeitraum für den Preis zu definieren.

Die Anschrift besitzt ein Feld Anschrifttyp, der als SmallInt definiert ist (1=Lieferadresse, 2=Rechnungsadresse, 3=abweichende Lieferadresse...), kann man auch über eine Nachschlagetabelle realisieren.

Insgesamt habe ich das Modell flach gehalten und nur die rudimentären Datenfelder erfasst.

Es ist ein Einstieg, bei weitem nicht perfekt und zur Diskussion gestellt. Das Script zur Generierung einer Firebird-Datenbank liegt bei...

Grüße
Mikhal
Angehängte Grafiken
Dateityp: jpg angebote.jpg (33,1 KB, 36x aufgerufen)
Angehängte Dateien
Dateityp: 7z Angebote.7z (1,3 KB, 4x aufgerufen)
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  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 22:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz