Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Wie Netzplan in DB abbilden? (https://www.delphipraxis.net/173351-wie-netzplan-db-abbilden.html)

Jumpy 19. Feb 2013 09:52

Datenbank: Egal • Version: -- • Zugriff über: --

Wie Netzplan in DB abbilden?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,

zur Unterstützung der Steuerung eines komplexen Workflows (Releasewechsel) möchte ich ein Hilfstool erstellen. Am RW sind mehrere Abteilungen quer über die Firma verteilt beteiligt. Koordiniert wird das mit einer Papier-Checkliste und viel Telefonieren wer was wann schon gemacht hat.

Da dieser Prozess sowas wie ein kleines, an einem Tag stattfindendes Projekt darstellt ist mit aus der Schule als gute Analogie der Netzplan (s. Bild) eingefallen. Hier ist ersichtlich in welcher Reihenfolge einzelne Schritte erfolgen müssen. Abhängigkeiten sind ersichtlich.

Im Prinzip möchte ich also nachher sowas wie einen Netzplan in meiner GUI sehen, wo dann angeklickt werden kann, was erledigt ist, dadurch wird erst etwas ggf. davon Abhängiges freigeschaltet usw.

(Gedacht ist das nacher als Server-Client-Anwendung, wobei der Server ggf. der Client des Projektleiters ist, der alles koordiniert, aber auch jeder andere kann über seinen Client sehen, was der aktuelle Stand ist und kann auch, die Dinge, die er erledigt hat freischalten).

Zu Anfang fehlt mir aber die Idee, wie man das in einer DB abbildet. Es gibt das ganze als eine Art Tabellendarstellung (s. Bild) aber das ist mMn nich DB-geignet (keine Normalisierung usw.).
Hat jemand in der Richtung mal was gemacht oder eine Idee?

Aphton 19. Feb 2013 10:05

AW: Wie Netzplan in DB abbilden?
 
Warum keine Normalisierung?
Normalisiere alles wie gewohnt, passt halt die Darstellung dann dementsprechend an.
Mein erster Gedanke wäre das hier:

Vorgang {[ID, Bezeichnung]}
Vorgänger {[ID, vorID]}
Nachfolger {[ID, nachID]}

Die Beziehung zwischen Vorgäng und Vorgänger/Nachfolger ist 1:n.
Du kannst bei der Darstellung der Vörgänge die Vorgänger und Nachfolger ermitteln und diese auch genauso wie in dieser Tabelle
anzeigen.

Edit: Ich hab mir nur das erste Bild angesehen und direkt daraufhin geantwortet.
Falls es nichts zur Sache tut, dann sry xD

jfheins 19. Feb 2013 11:19

AW: Wie Netzplan in DB abbilden?
 
Zitat:

Zitat von Aphton (Beitrag 1204263)
Die Beziehung zwischen Vorgäng und Vorgänger/Nachfolger ist 1:n.
Du kannst bei der Darstellung der Vörgänge die Vorgänger und Nachfolger ermitteln und diese auch genauso wie in dieser Tabelle
anzeigen.

Nö, eigentlich nicht. Hättest du dir das erste Bild mal genauer angeschaut, wärst du auf eine m:n Beziehung gekommen. Schließlich kann jeder Vorgang mehrere Vorgänge als "Vorgänger" haben und mehrere Vorgänge als "Nachfolger"

Ich würde da jetzt so ein Datenbankdesign machen:

Tabelle "Vorgang"
- id int autoinc primary_key
- duration int (Zeitaufwand in Minuten oder sowas)
- name varchar(255) (Name des Vorgangs, also z.B. "Material bestellen")

Tabelle "VorgangVorgang"
- id int (optional)
- predID int
- succID int

Die Namen könnte man vielleicht noch überdenken :stupid:

Aphton 19. Feb 2013 11:25

AW: Wie Netzplan in DB abbilden?
 
Sry, stimmt. Ich habe nur aus der Perspektive von "Vorgang" gedacht.. Also zu einem Vorgang kann es mehrere Vorgänger/Nachfolger geben..
Danke fürs Korrigieren

EarlyBird 19. Feb 2013 11:28

AW: Wie Netzplan in DB abbilden?
 
Bei DevExpress findest Du eine Komponente "ExpressOrgChart™ Suite"
Die ist DB gebunden.
http://www.devexpress.com/Products/VCL/ExOrgChart/
In der Trialversion gibt es auch eine Demo dazu.
Vielleicht hilft Dir das als Ansatz ja weiter

Furtbichler 19. Feb 2013 14:31

AW: Wie Netzplan in DB abbilden?
 
Der Renderer ist aber mistig, oder?

QuickAndDirty 19. Feb 2013 15:18

AW: Wie Netzplan in DB abbilden?
 
Einen Graph aus Knoten und gerichteten Kanten abbilden.

nodes{ID,Bezeichnung,Dauer, Farbe...}
edges{ID(der form halber),StartNodeID, EndNodeID, Bezeichnung, LinienArt, Farbe,...}

mehr braucht es nicht
Eine liste von Knoten und eine Adjazenzliste.

Furtbichler 19. Feb 2013 19:42

AW: Wie Netzplan in DB abbilden?
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1204316)
mehr braucht es nicht

Nun ja. Vielleicht einen Layouter und einen Renderer. Der Layouter sollte die Knoten so plazieren, das sie gleichmäßig angeordnet sind und sich die Verbindungen möglichst nicht überschneiden.

Und der Renderer malt.

Also ein klitzekleinwenig mehr braucht es schon. Und -wie ich finde- sind das die größten Humpen, wobei der Renderer auch keine Hürde ist.

Jumpy 20. Feb 2013 08:40

AW: Wie Netzplan in DB abbilden?
 
Hallo und guten morgen. Und erstmal danke.

Bevor das ausartet, mir ging es primär um die Datenbankstruktur und da haben apthon und jfheins ja gute Vorschläge gemacht, die ich als Basis nehmen werde.
Ich werde den Vorgängen zusätzlich einen Rang/Ebene/Kategorie o.ä. spendieren, um zu wissen, welche Vorgänge parallel (auf gleicher Höhe) gezeichnet werden sollen.

Aber mir ging es wie gesagt primär um das Speichern in der DB. Zeichnen will ich das gar nicht, vor allem nicht als Graph mit Linien und so, das könnt ich in Visio 100mal schneller. Meine momentane Idee ist, das jeder Rang ein Panel oder Frame ist in den dann die Vorgänge als Checkboxen oder Button kommen. Aber soweit bin ich mit der Planung noch nicht.

jobo 20. Feb 2013 10:23

AW: Wie Netzplan in DB abbilden?
 
Zitat:

Zitat von Jumpy (Beitrag 1204410)
Ich werde den Vorgängen zusätzlich einen Rang/Ebene/Kategorie o.ä. spendieren, um zu wissen, welche Vorgänge parallel (auf gleicher Höhe) gezeichnet werden sollen.

Wenn Du dass machst, wäre das m.E. eine redundante Information. Ob es notwendig ist, diese Info (Rang) bequem auslesen zu können, sei dahingestellt. Es wäre dann aber notwendig, bei jedem Insert/Update zu prüfen, ob sich die Rang-Infos verschoben haben. Das kann 0-n Sätze (u.U. ganz viele) betreffen.
Also wäre zu entscheiden: Aufwändig nachführen und bequem auslesen oder aktuell abfragen/evaluieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr.
Seite 1 von 2  1 2      

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