[SQL] Extra constante opnemen in tabel voor identificatie?

Pagina: 1
Acties:

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Beste mensen,

Ik ben momenteel bezig met het opzetten van een database met bedrijfsgegevens, die o.m. een tabel met afdelingen bevat. Nu wil ik graag vanuit mijn applicatie logica hangen aan de verschillende afdelingen, maar nu loop ik dus tegen het probleem aan: hoe identificeer / herken ik een bepaalde afdeling?

De mogelijkheden die ik zie zijn als volgt:
  • Aan de primary key van de afdeling-rij (als ID = 17, dan gaat het om personeelszaken)
    Nadeel: Het is imo erg onduidelijk om met database PK's te werken, en bovendien worden de ID's door de database bepaald (identity-waarden). Als je een rij met ID = 17 eenmaal hebt weggegooid, dan kost het je een hoop gevogel om een nieuwe personeelszaken-rij met ID = 17 in te voegen.
  • Aan de naam van de afdeling zelf (als naam = "Personeelszaken", dan gaat het om personeelszaken)
    Nadeel: op het moment dat een gebruiker de naam wijzigt (naar human resources, bijv.) dan breekt je code.
Mijn idee was daarom om een extra kolom op te nemen met een ProgID, een unieke programmatische constante van 4 of 6 karakters die niet voor de gebruiker zichtbaar is en alleen vanuit de businesslogica wordt gebruikt om een rij te herkennen. De afdeling personeelszaken zou dan bijv. de ProgID 'PZ' kunnen krijgen, en vanuit je stored procedures kun je dan zoeken op ProgID = 'PZ' om de afdeling personeelszaken te identificeren.

Is dit wel of geen goed idee? Hoe doen jullie dit?

  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10 14:25
Zoiets kan inderdaad goed... doen wij hier ook. Meestal een code van 3 of 4 characters en dan een PK daarop zetten.

Misschien wat je wel al weet: een PK hoeft niet een integer te zijn, mag ook een code/string zijn.

edit:

Eventueel kan je er ook een constraint op zetten dat de code alleen bepaalde waardes mag hebben

[ Voor 20% gewijzigd door reddevil op 17-06-2008 10:59 ]


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 16-11 19:52

Gerco

Professional Newbie

Dit soort logica zal over het algemeen wel een settings file / registry key / scherm / database tabel hebben. Op die plaats kun je dan het afdelingsnummer van personeelszaken instellen. Je geeft je business logica dus gewoon een afdelings id wat je door de gebruiker laat selecteren bij het instellen van je applicatie.

Op die manier is je logica niet afhankelijk van een bepaald ID en als het bedrijf een nieuwe afdeling tot personeelszaken wil benoemen is dat slechts een aanpassing van een setting in de applicatie en alles werkt gewoon verder alsof er niets aan de hand is.

[ Voor 29% gewijzigd door Gerco op 17-06-2008 11:01 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!