Hoi allen,
Ik probeer een fatsoenlijk databasemodel te maken voor het volgende geval:
Ik werk bij een bedrijf wat medische apparatuur verkoopt. Zodoende wordt van elk verkocht artikel het serienummer bijgehouden (en evt. lot-nummer voor producten die dat hebben). Normaliter verlaten deze producten via de pakketdienst ons magazijn. Nu leveren wij ook onderhoudscontracten aan klanten die dit wensen. Een van onze installateurs komt op locatie om alles te installeren, en daarna wordt het contract getekend. Daarna komen wij jaarlijks langs om in onderhoud te voorzien.
Alle verkochte producten komen in de "product" tabel. Producten die daarnaast ook in onderhoud zijn komen in "maintained_product" waarin in een link staat naar de "product" tabel.
Nu is dit an sich niet lastig, maar er zijn een paar extra regels die het voor mij wat moeilijker maken:
- niet alle producten die geïnstalleerd worden zijn onderhoudsproducten
- nieuwe producten kunnen ook geïnstalleerd worden tijdens een onderhoudsbeurt.
Ik twijfel over hoe ik dit nu het beste kan opslaan. Op het moment heb ik een tabel "work_sheet" wat een klantenbezoek vertegenwoordigd. Een work sheet heeft meerdere regels, uit de tabel "work_sheet_line". In deze tabel wil ik opslaan:
- Uitgevoerde werkzaamheden (korte beschrijving: bijv. product geinstalleerd of product onderhouden)
- Het product waar de werkzaamheden voor zijn uitgevoerd
Alleen.. soms betekent "product" dus een product wat in onderhoud is --> "maintained_product" tabel, maar het kan net zo goed gaan om een product wat eenmalig wordt geïnstalleerd en waar wij verder geen onderhoud voor verlenen --> "product" tabel.
Een mogelijke oplossing die ik heb is om twee "work_sheet_line" tabellen te maken, waarbij de eerste tabel een link heeft naar "maintained_product" en de tweede naar "product", maar ik vraag me af of het ook ander/beter kan. (nog niet in onderstaande schema verwerkt)
Schema:

En voor de volledigheid ook wat code. Ik schrijf het in PHP en maak gebruik van Doctrine. Dit is voor als ik twee verschillende tabellen met work lines zou gebruiken.
Iemand die me te hulp kan schieten?
Ik probeer een fatsoenlijk databasemodel te maken voor het volgende geval:
Ik werk bij een bedrijf wat medische apparatuur verkoopt. Zodoende wordt van elk verkocht artikel het serienummer bijgehouden (en evt. lot-nummer voor producten die dat hebben). Normaliter verlaten deze producten via de pakketdienst ons magazijn. Nu leveren wij ook onderhoudscontracten aan klanten die dit wensen. Een van onze installateurs komt op locatie om alles te installeren, en daarna wordt het contract getekend. Daarna komen wij jaarlijks langs om in onderhoud te voorzien.
Alle verkochte producten komen in de "product" tabel. Producten die daarnaast ook in onderhoud zijn komen in "maintained_product" waarin in een link staat naar de "product" tabel.
Nu is dit an sich niet lastig, maar er zijn een paar extra regels die het voor mij wat moeilijker maken:
- niet alle producten die geïnstalleerd worden zijn onderhoudsproducten
- nieuwe producten kunnen ook geïnstalleerd worden tijdens een onderhoudsbeurt.
Ik twijfel over hoe ik dit nu het beste kan opslaan. Op het moment heb ik een tabel "work_sheet" wat een klantenbezoek vertegenwoordigd. Een work sheet heeft meerdere regels, uit de tabel "work_sheet_line". In deze tabel wil ik opslaan:
- Uitgevoerde werkzaamheden (korte beschrijving: bijv. product geinstalleerd of product onderhouden)
- Het product waar de werkzaamheden voor zijn uitgevoerd
Alleen.. soms betekent "product" dus een product wat in onderhoud is --> "maintained_product" tabel, maar het kan net zo goed gaan om een product wat eenmalig wordt geïnstalleerd en waar wij verder geen onderhoud voor verlenen --> "product" tabel.
Een mogelijke oplossing die ik heb is om twee "work_sheet_line" tabellen te maken, waarbij de eerste tabel een link heeft naar "maintained_product" en de tweede naar "product", maar ik vraag me af of het ook ander/beter kan. (nog niet in onderstaande schema verwerkt)
Schema:

En voor de volledigheid ook wat code. Ik schrijf het in PHP en maak gebruik van Doctrine. Dit is voor als ik twee verschillende tabellen met work lines zou gebruiken.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| /** * @ORM\Entity * @ORM\Table */ class WorkSheet { /** * @ORM\Id * @ORM\GeneratedValue (strategy="AUTO") * @ORM\Column (type="integer") */ protected $id; /** * @ORM\ManyToOne (targetEntity="Administration\Model\Location") * @ORM\JoinColumn(name="location_id", referencedColumnName="id", nullable=false) */ protected $location; /** * @ORM\ManyToOne (targetEntity="Administration\Model\Relation") * @ORM\JoinColumn(name="relation_id", referencedColumnName="id", nullable=false) */ protected $relation; /** * @ORM\OneToMany(targetEntity="MaintainedProductWorkLine", mappedBy="workSheet") */ protected $maintainedProductLines; /** * @ORM\OneToMany(targetEntity="ProductWorkLine", mappedBy="workSheet") */ protected $productLines; } |
Iemand die me te hulp kan schieten?