A database with two tables: A "record" table and a "link" table, each with a very few attributes. All intelligence coming out of the database is the product of joins between those two tables. For more information, and a more accurate description, see ProximitySoftware.
Even better: a database with a "relation" table for storing binary relations of various classes, a one-column table of objects, and a set of tables for holding "fields" of various data types. Each field gets a field class. Implementing collections in such a monster is a matter of defining more than one instance of a field for a particular object. So, rather than two tables, you have one table for a particular data type in the underlying database system. A bignum_fields and long_int_fields table, for example, and a text_blob_fields table.
Advantages:
See Also: DynamicRelational EntityAttributeValue