Omgaan met ID's
Je hebt een CMS systeem gemaakt en verkocht aan een X aantal klanten.
Hierop maak je nieuwe functies die de DB nodig hebben.
Voorbeeld van zo een Call kan zijn:
Deze doet het dan goed bij Klant A maar niet bij Klant B of bij een toekomstige Klant omdat de ID's daar anders zijn.
Wat is een goede oplossing voor deze situatie?
Gewijzigd op 02/10/2013 09:55:54 door Lendl Verschoor
Of wel?
Ik zie niet waarom id's consistent moeten zijn over systemen heen; zolang de id's maar zinnig zijn binnen het systeem van klant A; of binnen het systeem van klant B.
Mis ik iets?
Als ik nu een functie erbij maak voor Klant X(bijvoorbeeld het ophalen van berichten met een bepaalde statusID). Als ik dan dezelfde functie wil toevoegen bij klant Y, dan moet ik nagaan wat de statusID daar zo is en zo de DB Call aanpassen.
Dat betekent dus twee stapjes
1. SELECT id FROM statussen WHERE name='ready' //je haalt het id op van de status waar je mee wilt werken
2. "SELECT * FROM bericht WHERE statusID=" . $row['id']; //met dat id stel je de volgend query samen
Wellicht zou dit ook nog wel met een subquery mogelijk zijn. dan begeef ik me een beetje op glad ijs maar het zou dan iets worden als
"SELECT * FROM bericht WHERE statusID=(SELECT id FROM statussen WHERE name='ready')
of een JOIN:
SELECT ... FROM bericht LEFT JOIN statussen ON statussen.id=bericht.statusID WHERE statussen.name='ready'
Toevoeging op 02/10/2013 12:26:33:
als je er niet uitkomt geef dan even de opbouw van je tabellen.
Gewijzigd op 02/10/2013 12:24:22 door Frank Nietbelangrijk
Ik heb geen database structuur, ik gaf een voorbeeld.
Het is meer dat als je een nieuwe functie maakt voor Klant X hoe ga je dan na dat ze ook bij de andere klanten het gelijk doen?
Je kan zo een heel ander resultaat terug krijgen dan verwacht?
Op omschrijving/naam controleren kan zolang deze uniek is. Als de klant dit kan aanpassen werkt deze manier niet.
Gewoon dezelfde code/functie toevoegen en het zou overal moeten werken.
Maar ik neem aan dat je maar op 1 plek de code hebt staan, en dat die door verschillende mensen/klanten wordt gebruikt?