[Mysql] Hoe opsplitsen afzonderlijke stappen binnen run?

Pagina: 1
Acties:

  • japaveh
  • Registratie: Maart 2003
  • Laatst online: 15:30
Ik ben bezig met het schrijven van een toepassing waarin wij al onze resultaten opslaan via een webtoepassing. Hiervoor gebruik ik PHP en Mysql.

Alle gegevens worden opgeslagen per run, waarbij alle algemene gegevens in de RunInfo tabel worden opgeslagen. Dit gaat dan om gegevens als beschrijving, conclusie, runnummer, startdatum etc. Verder worden per run alle afzonderlijke stappen opgeslagen in een Steps-tabel die middels een FK op runnummer worden gekoppeld aan RunInfo. Tot zover niets bijzonders.

Nu het volgende. Soms wordt dezelfde run uitgevoerd met een aantal partjes waarop verschillende afzonderlijke stappen worden uitgevoerd. Deze partjes worden gelabeled met bv 12(a), 12(b), etc.

Tot voorkort hield ik dat bij door in de Steps tabel een kolom Parts te nemen en die te vullen met nullen en enen, zodanig dat dit overeen kwam met het bewuste partje.

Bijvoorbeeld
110000 -> stap uitgevoerd op (a) en (b)
001100 -> stap uitgevoerd op (c) en (d) etc

Met php zocht ik dan de juiste letter bij het juiste 1-tje

Nu vraag ik me af of dit de meest juiste manier is waarop ik dit kan bijhouden. Ik blijf nu namelijk gelimiteerd dat een beperkt aantal partjes. Volgens mij is het ook niet juist genormaliseerd.
Ik zou liever in de RunInfo tabel een aparte kolom maken welke het aantal partjes bijhoud en zodanig deze opsplitsing willen maken, maar ik kom daar niet goed uit.

Heeft iemand hier iedeëen over? Graag jullie mening. Ik hoop overigens dat ik alles duidelijk genoeg heb geformuleerd :)

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


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

De juiste oplossing lijkt mij een nieuwe parts tabel aanmaken, en deze met een FK koppelen aan de steps tabel, aangezien het een 1 - * relatie is :) .

DM!


  • japaveh
  • Registratie: Maart 2003
  • Laatst online: 15:30
Ja, daar had ik aan zitten denken, maar hoe zou die structuur van die partstabel eruit moeten zien? Daar kwam ik dus niet op.

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


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Runs
  id
  description
  (...)

Steps
  id
  description
  (...)
  run_id (fk to runs.id)

Parts
  id
  description
  (...) (waaronder de daadwerkelijke data, 
    als een step maar één part hebt, hou je toch hier de data)
  step_id (fk to steps.id)

Zoiets :? .

DM!


  • japaveh
  • Registratie: Maart 2003
  • Laatst online: 15:30
Maar wat nu als een step op meerder parts tegelijkertijd wordt uitgevoerd? Dit komt namelijk heel vaak voor. Dan zou voor ieder part dezelfde info in de DB worden opgeslagen?

Of begrijp ik het nu niet meer :?

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


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Ooh, dan begreep ik je verkeerd :) . Dan heb je veeleerder een koppeltabel tussen steps en parts nodig, aangezien het dan een * - * relatie wordt. Dan zou je denk ik zoiets krijgen:

Runs
  id
  description
  (...)

Steps
  id
  description
  (...)
  run_id (fk to runs.id)

parts_stepts
  id
  part_id (fk to parts.id)
  step_id (fk to steps.id)

Parts
  id
  description
  (...) (waaronder de daadwerkelijke data, 
    als een step maar één part hebt, hou je toch hier de data)


Uit je verhaal wordt me overigens niet duidelijk of steps nu uniek zijn voor runs. Als dat niet zo is heb je ook een koppeltabel tussen runs en steps (of parts) nodig.

DM!


  • japaveh
  • Registratie: Maart 2003
  • Laatst online: 15:30
Uit je verhaal wordt me overigens niet duidelijk of steps nu uniek zijn voor runs. Als dat niet zo is heb je ook een koppeltabel tussen runs en steps (of parts) nodig.
Steps zijn inderdaad uniek per run, dus dat is ok zo, die koppeltabel is niet nodig.

Toch nog een opmerking:
Ik zocht eerder naar een oplossing waarbij ik in de step-tabel kan aangeven op welke parts die step was uitgevoerd of niet, wellicht via een koppeltabel. Ik hoopte daarbij op een oplossing waarbij het niet nodig is om alle relevante info uit de step-tabel te halen.

Waarschijnlijk is een extra koppeltabel tussen het stapnummer en de relevate parts dan voldoende.

[ Voor 88% gewijzigd door japaveh op 18-05-2006 11:27 . Reden: eea verduidelijkt ]

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

Pagina: 1