Datenbankstruktur Artikel

Albjo

Neuer Benutzer
Beiträge
1
Hallo ich bin sehr neu im Umgang mit Datenbanken und brauche Hilfe, wie ich meine Datenbank strukturieren soll.
Meine Daten bestehen aus eindeutigen Artikelnummern je Artikel. Pro Artikel gibt es teils mehrere Lieferanten mit jeweils unterschiedlichen Preisen. Zusätzlich gibt es Artikel von Reimporteuren mit eigener Artikelnummer, welche aber das gleiche Produkt beschreiben. Um nun das günstigste Angebot zu finden sollte daher je Artikel der günstigste Lieferant erkannt werden und mit den Reimport-Waren und deren günstigsten Angeboten vergleichen werden. Es handelt sich um 40.000 Artikelnummern (Originale und Importe) und etwa 5.000 einzigartigen Artikeln.
1, Arbeite ich mit einer großen Tabelle mit einer Spalte in der für gleiche Artikel eine "Vergleichs-Artikelnummer" eingetragen wird und für die verschiedenen Lieferantenpreise je eine Spalte?
2, Gruppiere ich die vergleichbaren Artikel in ca 5.000 kleinere Tabellen?
3, oder brauche ich sogar 40.000 Tabellen mit je einem Eintrag pro Lieferant/Preis?
4, oder ganz anders?

Zur Info: Alle 15 Tage gibt es Aktualisierungen einzuspielen, dazu zählen Preisänderungen, Löschungen und Neuaufnahmen.

Ich möchte nicht zu Beginn des Projekts die falsche Struktur wählen, die mir später Probleme bereitet.
Vielen Dank bereits.
 
Werbung:
Jedes Modell, was dazu führen würde, dass Du neue Tabellen anlegst, weil neue Daten kommen, ist mit an Sicherheit grenzender Wahrscheinlichkeit falsch.

Ich denke es ist ein klassische "many-to-many" Relation. Wenn ich alles richtig verstanden habe, reichen drei Tabellen:

  • Produkt
  • Lieferant
  • Produktpreis (pro Lieferant)
etwas in der Art:

Code:
create table produkt
(
   artikel_nr          int primary key,
   original_artikel_nr int
   ... weitere Attribute des Produktes ...
)

create table lieferant
(
  lieferant_id     int primary key,
  ist_re_importeur boolean,
  ... weitere Attribute des Lieferanten ...
)

create table produkt_preis
(
   lieferant_id  int references lieferant
   artikel_nr    int references produkt
   preis         decimal,
   primary key (lieferant_id, artikel_nr)
)
 
Werbung:
Ein paar Ergänzungen:
- Der Produktpreis kann sicherlich auch beim selben Lieferanten noch zeitlich variieren. Da müsste also ein Gültigkeitszeitraum angehängt werden.
- Die Reimporteure sollten mit in der Lieferantentabelle stehen. Je nach System könnte die alternative Produktnummer aber je Reimporteure unterschiedlich sein, dann müsste man eine eigene Tabelle für alternative Produktnummern mit FK auf Lieferant und FK auf Artikel haben. Bei 40k Artikelnummern und 5000 Artikeln scheint mir das angebracht.
- Wenn die Daten alle 15 Tage aktualisiert werden solltest du dir im Vorfeld Gedanken machen über Historisierung. Ich würde keine Informationen zu Preisen oder Produkten überschreiben sondern immer Datensätze mit neuen Gültigkeitszeiträumen zusätzlich importieren. Ich finde das deutlich transparenter, wenn ich in einem ERP nachvollziehen kann, wann welcher Preis gegolten hat. Auch könnte sich mal eine Betriebsprüfung für sowas interessieren.
 
Zurück
Oben