On Oct 9, 2005, at 7:58 PM, John Miller wrote: > On Oct 9, 2005, at 12:45 PM, Patrick K. O'Brien wrote: >> Oleg Broytmann wrote: >>> Thank you. Have I missed something important? >> >> Hmm. Tough question. I'm convinced that there is nothing in the >> Relational world that can't be achieved in an OODB with the exception >> of >> language independence. > > What about relationships? I guess one thing I've not been able to > understand about OODBs is how to achieve relations like I can with > relational databases. It is probably because you have come to expect that to define and maintain these must be cumbersome... ;-) All you have to do in an OODB, to relate an object to another object, is, e.g.: person.address = address That's it. However, an OODB normally does not impose a schema on you... you can do what you want, and set whatever values on whatever attributes you want. If you want to impose a schema on your objects, then you would need an additional layer, something like Schevo or moellus in this case. These will provide additional functionalities, such as automatic management of the inverse relationships, whether 1-to-1, 1-to-many, etc., as well as other conveniences such as ndices, simply by declaring that you want them. Thus, assuming 1-to-1 in previous example, to get the person of an address you would typically then simply say: address.person = person The syntax for declaring the inverses, indices, and so on is particular to the layer chosen, and in this respect there is a difference here with relational as how these are declared in sql is at least standardized (almost) across database implementations. If you wish to take a close look, play with the demo in the moellus distibution, at the model definition, at the data sample used to populate it, and at the resulting objects... mario moellus: http://ruggier.org/software/moellus/