
64247
23.08.2008, aktualisiert am 29.08.2008
Datenbankaufbau, wie mach ichs am besten
Hallo,
ich schreibe zur Zeit ein kleines Programm mit welchem ich den Bestand meiner ganzen Elektronischen Bauteile verwalten kann. Es ist mir dank einer relativ großen Menge an (verschiedener) Bauteile schon oft passiert, dass ich einfach mal ein Bauteil übersehen hatte und es so nicht bestellt oder doppelt und dreifach rumliegen hatte bzw. einfach nicht mehr wusste, welches Teil für welches Projekt eingeplant war und so blöder Verwechslungen vorkamen... Daher wird auch ein Menüpunkt eingebaut, in welchem man dann seine Projekte verwalten kann. Hier sollen dann auch die benötigten Teile für jeden Projekt aufgeführt werden.
Das ganze soll PHP basiert sein und eben im Browser laufen, somit ist es einerseits auf allen Betriebssystemen lauffähig anderseits könnte man es so auch Online irgendwo ablegen. Aber jetzt zu meinem Hauptproblem, wie viele Tabellen für welche Werte brauch ich:
Auf jeden Fall habe ich eine Tabelle "artikel" angedacht, in der alle Artikelnummern, kurze Artikelbeschreibung und der vorhandener Bestand aufgelistet werden. Soweit sogut...
Aber wie kann ich das mit der Projektübersicht realisieren? Das einfachste wäre ich könnte das mit in der artikel Tabelle in ein zusätzliches Feld reinmachen, was aber wohl nicht gehen wir, da ein Teil auch in mehreren Projekten verwendet wird. Somit müsste ich mir erst mal überlegen wie ich die in das eine Feld reibekomme und auch wieder auslesen kann.
Die andere Möglichkeit, die mir eher zugesagt hat, wäre für jedes Projekt eine neue Tabelle zu machen in der dann wieder die Artikelnummer und die benötigte Menge enthalten ist. Den Rest könnte man dann ja aus der Verknüpfung der beiden Tabellen erzeugen.
Oder welche Ideen hättet ihr noch wie man das ganze aufbauen könnte?
ich schreibe zur Zeit ein kleines Programm mit welchem ich den Bestand meiner ganzen Elektronischen Bauteile verwalten kann. Es ist mir dank einer relativ großen Menge an (verschiedener) Bauteile schon oft passiert, dass ich einfach mal ein Bauteil übersehen hatte und es so nicht bestellt oder doppelt und dreifach rumliegen hatte bzw. einfach nicht mehr wusste, welches Teil für welches Projekt eingeplant war und so blöder Verwechslungen vorkamen... Daher wird auch ein Menüpunkt eingebaut, in welchem man dann seine Projekte verwalten kann. Hier sollen dann auch die benötigten Teile für jeden Projekt aufgeführt werden.
Das ganze soll PHP basiert sein und eben im Browser laufen, somit ist es einerseits auf allen Betriebssystemen lauffähig anderseits könnte man es so auch Online irgendwo ablegen. Aber jetzt zu meinem Hauptproblem, wie viele Tabellen für welche Werte brauch ich:
Auf jeden Fall habe ich eine Tabelle "artikel" angedacht, in der alle Artikelnummern, kurze Artikelbeschreibung und der vorhandener Bestand aufgelistet werden. Soweit sogut...
Aber wie kann ich das mit der Projektübersicht realisieren? Das einfachste wäre ich könnte das mit in der artikel Tabelle in ein zusätzliches Feld reinmachen, was aber wohl nicht gehen wir, da ein Teil auch in mehreren Projekten verwendet wird. Somit müsste ich mir erst mal überlegen wie ich die in das eine Feld reibekomme und auch wieder auslesen kann.
Die andere Möglichkeit, die mir eher zugesagt hat, wäre für jedes Projekt eine neue Tabelle zu machen in der dann wieder die Artikelnummer und die benötigte Menge enthalten ist. Den Rest könnte man dann ja aus der Verknüpfung der beiden Tabellen erzeugen.
Oder welche Ideen hättet ihr noch wie man das ganze aufbauen könnte?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95176
Url: https://administrator.de/forum/datenbankaufbau-wie-mach-ichs-am-besten-95176.html
Ausgedruckt am: 22.04.2025 um 13:04 Uhr
8 Kommentare
Neuester Kommentar
Hallo foobar2000,
ich denke ich würde es so angehen:
In der Tabelle Projekte wird für jedes Projekt ein Datensatz angelegt. In der Tabelle Proj_Pos werden die einzelnen Artikel eines Projektes eingetragen, natürlich als Verweis auf die Tabelle Artikel.
Die Tabelle Proj_Pos wird über das Feld Projekt_nr mit der Tabelle Projekte verbunden.
Ich denke dies gibt dir mehr Flexibilität, falls du Erweiterungen planst.
Es wird dann eben nicht mehr für jedes Projekt eine eigene Tabelle erstellt.
In der Tabelle Proj_Pos könntest du noch andere Parameter einfließen lassen, die dann von den anderen Tabellen unabhängig sind. Felder wie Rabatte, Garantie usw.
Hoffe das hilft.
mfg
Alforno
ich denke ich würde es so angehen:
In der Tabelle Projekte wird für jedes Projekt ein Datensatz angelegt. In der Tabelle Proj_Pos werden die einzelnen Artikel eines Projektes eingetragen, natürlich als Verweis auf die Tabelle Artikel.
Die Tabelle Proj_Pos wird über das Feld Projekt_nr mit der Tabelle Projekte verbunden.
Ich denke dies gibt dir mehr Flexibilität, falls du Erweiterungen planst.
Es wird dann eben nicht mehr für jedes Projekt eine eigene Tabelle erstellt.
In der Tabelle Proj_Pos könntest du noch andere Parameter einfließen lassen, die dann von den anderen Tabellen unabhängig sind. Felder wie Rabatte, Garantie usw.
Hoffe das hilft.
mfg
Alforno
Hallo,
dein "Problem" ist ein sehr übliches und wird in jedem Grundlagen-Artikel/Kurs/Buch zu SQL durchdiskutiert. Da heißen nur die Projekte nicht "Projekte" sondern "Bestellungen" - ansonsten ist es genau das gleiche. Es gibt Artikel, die haben einen Bestand, es gibt Bestellungen (Projekte), die setzen sich aus mehreren Artikeln zusammen.
Die Lösung hat Aforno ja schon beschrieben. So ist das von der DB-Modellierung her auch sauber. Schonmal was von Normalformen gehört? Wenn nein: Schaue dir http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/index.htm an (und wenn ja: schau's dir trotzdem an), da hat man nach 20 Minuten eine sehr konkrete Ahnung von Datenbanken bzw. Relationenalgebra (und ausgerechnet da kommt das Beispiel mit den Bestellungen nicht vor).
Gruß
Filipp
dein "Problem" ist ein sehr übliches und wird in jedem Grundlagen-Artikel/Kurs/Buch zu SQL durchdiskutiert. Da heißen nur die Projekte nicht "Projekte" sondern "Bestellungen" - ansonsten ist es genau das gleiche. Es gibt Artikel, die haben einen Bestand, es gibt Bestellungen (Projekte), die setzen sich aus mehreren Artikeln zusammen.
Die Lösung hat Aforno ja schon beschrieben. So ist das von der DB-Modellierung her auch sauber. Schonmal was von Normalformen gehört? Wenn nein: Schaue dir http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/index.htm an (und wenn ja: schau's dir trotzdem an), da hat man nach 20 Minuten eine sehr konkrete Ahnung von Datenbanken bzw. Relationenalgebra (und ausgerechnet da kommt das Beispiel mit den Bestellungen nicht vor).
Gruß
Filipp
Hallo foobar2000,
mir ist nicht klar, was eine Zwischentabelle sein soll.
Wie gesagt ich würde nicht für jedes Projekt eine eigene Tabelle erstellen, das wird auf Dauer undurchsichtigt und bei Programmerweiterungen ist der Aufwand größer.
Was hält dich denn davon ab, es so zu lösen, wie filippg und ich es Dir vorgeschlagen haben?
Ich selber kann kein PHP, denke aber das dein Szenario in jedem halbwegs brauchbaren Tutorial beschrieben ist. Schonmal im Netz nach einem passenden Tutorial gesucht?
mfg
Alforno
mir ist nicht klar, was eine Zwischentabelle sein soll.
Wie gesagt ich würde nicht für jedes Projekt eine eigene Tabelle erstellen, das wird auf Dauer undurchsichtigt und bei Programmerweiterungen ist der Aufwand größer.
Was hält dich denn davon ab, es so zu lösen, wie filippg und ich es Dir vorgeschlagen haben?
Ich selber kann kein PHP, denke aber das dein Szenario in jedem halbwegs brauchbaren Tutorial beschrieben ist. Schonmal im Netz nach einem passenden Tutorial gesucht?
mfg
Alforno
Aber wie kann ich dann konkret 20 Artikel mit
einem Projekt verknüpfen? Ich kann ja nicht in der Tabelle
Bestellungen (Projekt) tausend Reihen machen wobei jede für einen
Artikel steht.
einem Projekt verknüpfen? Ich kann ja nicht in der Tabelle
Bestellungen (Projekt) tausend Reihen machen wobei jede für einen
Artikel steht.
Was spricht dagegen?
Zweite Frage: Was verstehst du unter Reihen?
Meinst du damit Zeilen? Also Datensätze?
In deiner "Zwischentabelle" gibt es dann für ein Projekt mehrere Datensätze, für jeden Artikel, der dem Projekt zugeordnet ist, Einen.
Wenn du 5 Projekte hast und in jedem Projekt sind 10 Artikel eingetragen, dann ergibt das 50 Einträge in deiner "Zwischentabelle".
mfg
Alforno
Hallo foobar,
du brauchst genau drei Tabellen, unabhängig davon, wie viele Projekte du hast.
1. Die von dir beschriebene "Artikel"-Tabelle (Artikel_ID [Prim], Beschreibung, Vorratsmenge, ...)
2. Die von dir beschriebene "Projekte"-Tabelle (Projekt_ID [Prim], Beschreibung, Dauer...)
3. Artikel-Projekt-Relationship-Tabelle.
Diese besitzt 3 Spalten: Projekt_ID, Artikel_ID, Menge. Dabei bilden Projekt_ID und Artikel_ID zusammen den Primärschlüssel.
Gruß
Filipp
du brauchst genau drei Tabellen, unabhängig davon, wie viele Projekte du hast.
1. Die von dir beschriebene "Artikel"-Tabelle (Artikel_ID [Prim], Beschreibung, Vorratsmenge, ...)
2. Die von dir beschriebene "Projekte"-Tabelle (Projekt_ID [Prim], Beschreibung, Dauer...)
3. Artikel-Projekt-Relationship-Tabelle.
Diese besitzt 3 Spalten: Projekt_ID, Artikel_ID, Menge. Dabei bilden Projekt_ID und Artikel_ID zusammen den Primärschlüssel.
Gruß
Filipp