![]() |
Datenbank: MySQL • Version: 5.7 • Zugriff über: Unidac
Wieder mal die Tabellenstrukturen
Moin,
ich bräuchte mal wieder Hilfe bezüglich einiger Tabellen die ich anlegen muss da weiß ich im Moment nicht was in welcher Tabelle stehen muss und wie sich das ganze verknüpfen soll. Im Grunde geht es darum ein Angebot zu erstellen, mit folgender Struktur die vom Benutzer ausgefüllt werden soll: 1. Laufende Nummer 2. Bezeichnung 3. Menge 4. Einheit (Kg, m2, Std usw...) 5. E-Preis 6. G-Preis Soweit so gut, jetzt dachte ich lege ich erstmal zum Test 3 Tabellen an: Kundentabelle Produkte Angebote Dabei tritt aber folgendes Problem auf, als Bezeichnung können z.B. auch Anfahrtskosten stehen. Jetzt weiss ich nicht soll ich die mit in die Produkttabelle aufnehmen, oder z.B. so etwas machen: Zonen-Tabelle Zone1 / Preis Zone 2 / Preis Zone 3 / Preis Dann gehts weiter was ist mit den Einheiten? Da brauche ich ja dann noch eine Tabelle für die verschiedenen Einheiten? Also hab ich jetzt schon Kunden, Produkte Einheiten Zonen Wenn ich das in Felder aufspalte, dann hab ich jetzt in etwa so etwas (nicht alle Felder aufgeführt, nur grob umrissen) Kundentabelle pk kundennr kundenname .... Produkttabelle pk bezeichnung e-preis produkt artikelnr artikelnr_intern Zonentabelle Zone1 / Preis Zone 2 / Preis Zone 3 / Preis Einheitentabelle pk bezeichnung_einheit Angebote pk angebotsnummer kundennummer laufendenummer bezeichnung menge leistungsdatum Im Grunde müsste ich einmal wissen, welche Tabelle muss welche Felder aufnehmen und wie müssen die Tabellen zwingend verknüpft werden. Ich hab zwar eine Menge dazu gelesen, aber leider keine Beispiele gefunden, die ich sinnvoll hätte nachvollziehen können. Ich hab das jetzt schon zig mal versucht, bin aber immer wieder gestolpert. Erst hab ich gar nichts verknüpft, nur über Joins mir die Sachen zusammen gesaugt, was zwar geht, aber so ist es bestimmt nicht im Sinne des Erfinders. Dann hab ich mit PK und FK rumgefummelt, was zu diversen Problemen geführt hat, ich konnte plötzlich keine Daten mehr eingeben (update war nicht erlaubt, wegen meiner Verknüpfungen bis auf die Kundentabelle mit der durfte ich weiterhin alles machen) Verknüpft war es in etwa so das aus der Angebotstabelle sich ein Feld auf die Kundennummer in der Kundentabelle bezog, die Produkttabelle mit Ihrer Produktnummer auf die Angebotstabelle mit dem Feld Produktnummer usw. jedenfalls völliges Chaos. Mal generell noch eine Frage zur Verknüpfung.: Geht so etwas automatisch das wenn man in der Angebotstabelle z.B. unter Artikelbezeichnung einen Artikel eingibt, das in der Angebotstabelle automatisch beim E-Preis der Preis steht oder muss ich dann ein weiteres Query ausführen im Hintergrund welches mir den Preis zum Produkt ermittelt und dann in das vorgesehene Feld schreibt? Wäre auch z.B. auch wenn ich eine Artikelnummer eingebe die ich zufällig auswendig kenne das dann automatisch die Bezeichnung im Bezeichnunsfeld steht? |
AW: Wieder mal die Tabellenstrukturen
Moin...:P
Dein Problem ist nicht einfach zu erklären. Das muß man erstmal in Teilprobleme aufteilen: 1: Normalisierung sollte man kennen (1. Normalform) ![]() 2: Du mußt dich von der Optik in der GUI beim Datenbankdesign trennen! Die Daten werden/sollten via JOIN in der Query zusammengesetzt werden. Zitat:
3: Tabellen erstellen mit jeweils einer ID Spalte mit dem PK drauf Kunden, Produkte Einheiten Zonen 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 5: Angebotstabelle: ID // = pk angebotsnummer KundenID // ID aus der Kunden Tabelle statt kundennummer ZonenID // ID aus der Zonentabelle laufendenummer // gehört eigentlich in die Positionen? Oder? bezeichnung // des Angebotes oder der Position? // menge wird durch die Positionstabelle ersetzt leistungsdatum 6: Daten laden in separaten Querys: Angebot, Positionen 7: Daten der Tabellen speichern in einer Transaktion ...wenn das so verstanden ist, dann gehts weiter mit FK usw. Zitat:
:wink: |
AW: Wieder mal die Tabellenstrukturen
Moin haentschman,
auch wenn das etwas durcheinander zu lesen ist, ich versuch das mal fix in Tabellen zu gießen nach deinem Vorbild und schmeiss am besten nachher mal ein Bild rein wie die Tabellen dann so aussehen.... Erstmal Danke dafür! |
AW: Wieder mal die Tabellenstrukturen
Liste der Anhänge anzeigen (Anzahl: 2)
So wie versprochen die angelegten Tabellen inkl. Feld Definitionen im Anhang
Zu Pos. 6 in deinem Beitrag meinst Du das?
Code:
SELECT
* FROM positionen INNER JOIN angebote ON positionen.angebotsID = angebote.angebotPK |
AW: Wieder mal die Tabellenstrukturen
Ich muß dich trösten... ich muß außer Haus. Was ich beim Überfliegen gesehen paßt soweit...:P
|
AW: Wieder mal die Tabellenstrukturen
Zitat:
|
AW: Wieder mal die Tabellenstrukturen
Zitat:
Vielleicht noch etwas gesunder Menschenverstand dazu und alles ist gut. |
AW: Wieder mal die Tabellenstrukturen
Dann erzähl mal was für ein Problem Du hast.
Zitat:
Zitat:
Gruß K-H |
AW: Wieder mal die Tabellenstrukturen
Zitat:
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:
|
AW: Wieder mal die Tabellenstrukturen
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 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 by Thomas Breitkreuz