Modelleer tip 3 : Identifiers en Source Code
Werk je wel eens met een Data Model waar twee (of meer) identifiers bij één Entity Type zijn gedefiniëerd? Let dan extra op bij leesacties in de database, want het kan onverwachte effecten hebben. Hieronder wordt één en ander toegelicht.
1. Entity Type Customer In een model is de entity type Customer met vijf attributen gedefiniëerd. Er is één identifier: het attribuut number. Entity Type
Customer
I number
name
address
city phone
2. Het Action Diagram met READ customer Van een ingevoerde customer worden de details gelezen. Uit de database worden de volgende attributen opgehaald: - number - phone
Het Action Diagram ziet er als volgt uit:

3. Gegenereerde code (één identifier) Als van dit Action Diagram C-code gegenereerd wordt, kan de volgende SQL worden gevonden:
 Het Select statement vraagt om de attributen number en phone van Customer te lezen uit de tabel van Customer.
Misschien verwacht je dat de gegenereerde source code altijd een SQL Select statement zal bevatten dat slechts de twee attributen van de Entity Action View Customer uit de database zal lezen, omdat in de Entity Action view slechts deze twee attributen zijn opgenomen.
Dat is echter niet altijd het geval. Welk SQL-statement gegenereerd wordt, hangt ook af van zaken die niet in het Action Diagram staan.
Als men meerdere identifiers voor de ET customer heeft gedefiniëerd, heeft dit gevolgen voor de gegenereerde source code. Hieronder wordt het toegelicht.
4. Entity Type Customer met twee identifiers De Entity Type customer is nu gedefiniëerd met twee identifiers:
1. number 2. name + address + city
In het model zie je dan:
Entity Type
Customer
I number
I name
I address
I city
phone
5. Het Action Diagram met READ customer Het action diagram wordt niet veranderd en blijft zoals hierboven staat.
6. Gegenereerde code (twee identifiers) Als van dit Action Diagram C-code gegenereerd wordt, zie je in de code het volgende SQL-statement:
 Er wordt nu niet alleen om de attributen number en phone gevraagd, maar ook om de attributen name, address en city. Deze staan echter niet in de Entity Action view in het Action Diagram. Blijkbaar wordt er gezocht naar alle attributen die deel uitmaken van een identifier. Het is daarom goed om voor de gebruikte programmeertaal te controleren, hoe de code gegenereerd wordt.
Dit effect kan nadelige gevolgen hebben voor de performance van applicaties. Het is beter deze situatie te vermijden door voor elke Entity Type niet meer dan één identifier te definiëren.
7. Conclusie Om deze reden zijn al veel organisaties ertoe overgegaan om altijd één en slechts één enkele identifier te definiëren voor elke Entity Type.
N.B. Bij CBD definiëert men veelal één kunstmatige identifier en zal men deze situatie niet vaak tegenkomen.
|