ksmith@m.cs.uiuc.edu (03/03/90)
>> ... >>3. is there a clear distinction between an object-oriented and semantic >> data model? > >A *clear* distinction? Hahahahahahahahahaha...... In my experience the best way to distinguish between the semantic and object-oriented data models is their emphasis (because they do overlap). The semantic model emphasizes providing a rich set of relationships between data: aggregation, generalization, set inclusion, type-instance, customized, etc. Operations on data are emphasized less, and are often performed in an associated programming language. Semantic models seem to be used often for their modeling power alone, without being implemented as a full fledged database with data, buffers, recovery, etc. In this role they provide a medium to record and communicate the structure of a set of data items. Object oriented models heavily emphasize the generalization and type-instance relationships. Operations are stored (logically) with the data that use them in a generalization hierarchy. This is an important distinction: semantic models do not emphasize the object-method coupling, whereas it is fundamental to the object-oriented model. Object-oriented databases are, of course, being pushed into the commercial marketplace currently as full fledged database products. One feature that it appears must be supported by object-oriented databases is aggregation of data (the is-part-of relationship). Aggregation is *not* commonly considered part of the object-oriented model in programming languages (for instance, Smalltalk does not support it directly), but aggregation *is* a feature of semantic data models. Support for aggregation in object-oriented database products is a sign of the blurry relationship between the two models. -Ken Smith University of Illinois ksmith@cs.uiuc.edu