The answer will be C,
And for the generalization...
It actually goes this way,
Suppose, you have an entity A and it's generalization set to system.images.
And the system.images is actually generalized to system.file
This way your entity A is actually generalized to two different entities.
And if you made another entity B, and generalize it with entity A,
It will have the property of all three ( i.e, image, file, A)
Hope it helps!
Yes its possible to have generalization from multiple entities, but not directly.
Entity A, B, C, D
it is possible to have entity B generalized from A
then C generalized from B
then D generalized from C
this way D would have all the attributes of the entities A, B and C
But you can not generalize entity D from A,B and C directly as you can generalize from a single entity only.
secondly when you generalize, Id of child is equal to Id of parent i.e, if you commit an object of D basically you will get one row in each
of the entities A, B and C and these row would have same Ids as the child object.
Association vs Generalization
there is another concept here, should you go for association or generalization in such situations and the answer is
If your transactions invloves related data frequently go with the Generalization as it performs faster as retriving data using Id is faster
and if your transactions not always need the related data go with the association as it would minimize the payload and hence better app performance.
Hope I cleared the confusion.
So I think you swapped the terms around but just like system FileDocument can be used as a generalization multiplue times. in the same way you can make any other entity a specialization by using that entity as the generalization for other entities.