balkje gen website
Switch to the english website.

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.

Cursussen


© Educagen | disclaimer | info@educagen.com |
Gen, CA Gen, AllFusion Gen, Advantage Gen, Cool:Gen, coolgen, IEF en Composer

Cool:gen contact