Multi-level tree in processflow: hoe opzetten?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • japaveh
  • Registratie: Maart 2003
  • Laatst online: 24-09 08:56
Ik ben bezig met het verder ontwikkelen van een databaseapplicatie waarin het mogelijk is om process-flows in bij te houden. Deze process-flows worden runs genoemd welke op zichzelf bestaan uit een onbepaald aantal steps. Wanneer een run geopend wordt ziet dat er vereenvoudigd ongeveer zo uit:

StepIdpartsprocessequipment
1abcacid cleanwetbench
2acwater rinsewetbench
3acdrywetbench


Runs worden soms op meerdere substraten gedaan die in dit systeem dus parts worden genoemd. In deze tabel stelt de kolom parts dus voor op welk stukje het proces precies is uitgevoerd. Op zichzelf is niet natuurlijk niet zo spannend, ik het daarvoor namelijk een table 'Parts' in de database met de volgende structuur. Hierin is de listing zoals hierboven aangegeven ook al ingevuld.

Parts
PartIdFkStepIdPartNumber
111
212
313
421
523
631
732


Wanneer nu de run wordt opgevraagd haal ik met 1 query de volledige stap-info binnen van alle parts in de run en met een beetje PHP scripting zorg ik dat de juiste cellen in de run gevold worden met het juiste getal.

Het verzoek is nu gekomen om een part later nog een keer te splitsen in een part, schematisch zou dat er dan als volgt uitzien:

StepIdpartsprocessequipment
1abcacid cleanwetbench
2acwater rinsewetbench
3a1a2cdrywetbench


Dit is natuurlijk op te lossen door een extra rij in de Parts tabel toe te voegen "Parent" waarbij de parent eventueel 0 is voor een eerste splitsing en de de waarde van een PartId heeft voor een latere splitsing.

De listing hierboven zou dan worden:

Parts
PartIdFkStepIdPartNumberParent
1110
2120
3130
4210
5230
6314
7324
8330


Ik ben nu echter al een aantal dagen mijn kop gek aan het maken met het zoeken naar een efficient script om deze tabel zo snel en goed mogelijk op het scherm te krijgen. Een run kan soms uit 50 stappen bestaan dus ik moet het aantal query's beperken. Ik wil dan ook voor de parts liefst maar 1 query gebruiken. Ik kan natuurlijk op basis van een multi-level idee wel een script maken die alles in 1 keer uit de database haalt maar ik krijg het maar niet goed voor elkaar om bijvoorbeeld voor de eerste stap efficient uit te rekenen wat de colspan moet zijn indien die part later geplitst worden, of voor latere stappen hoe ik moet bepalen welke cel overgeslagen moet worden.

Uiteraard vraag ik geen compleet script, maar met een zetje in de goede richting zou ik al erg geholpen zijn. Hoe zouden jullie zoiets aanpakken? Alle hulp is welkom!

Een online demo van het systeem is beschikbaar (http://demo.solodb.net), via http://demo.solodb.net/run/view/1/page/1 kun je zien hoe dat opdelen in parts in de praktijk werkt.

Solo Database: Online electronic logbook and database system for research applications


Acties:
  • 0 Henk 'm!

  • japaveh
  • Registratie: Maart 2003
  • Laatst online: 24-09 08:56
Een subtiel kickje...

Solo Database: Online electronic logbook and database system for research applications


Acties:
  • 0 Henk 'm!

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ik weet niet of ik de vraag helemaal begrijp. Is de vraag nu hoe je effectief een boomstructuur in/uit een database kan opvragen?

En is het geen idee om 1 query de ruwe data te vragen en dit te bewerken in php? Het is niet noodzakelijk dat het direct 100% goed uit de database komt.

Welke db server gebruik je?

Acties:
  • 0 Henk 'm!

  • japaveh
  • Registratie: Maart 2003
  • Laatst online: 24-09 08:56
Je hebt de vraag inderdaad goed begrepen. Mijn database is Mysql.

De vraag is eerder gerelateerd aan het correct doorwerken (met PHP) van de ruwe data die uit de database komt. Wellicht had dit topic dan ook beter in PRG gestaan, maar aangezien ik ook wat feedback wilde hebben over de gekozen opzet (database-structuur, etc) heb ik het topic geopend in SEA.

Solo Database: Online electronic logbook and database system for research applications


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Hier staat een artikel over verschillende manieren om hierarchische data op te slaan en weer te geven in een database

http://www.sitepoint.com/article/hierarchical-data-database/

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”