>> I have a 'central' table in my design called 'entity' >> which contains lots of data (including names, company, emails, phones, >> address, etc.) and I want many other tables to point to ONE entity >> instance, i.e. 'entity' as an _extension_ of records in many different >> tables.
When you say 'joined tables' do you mean SELECT tabl1.some_col, tabl2.other_col FROM tabl1 LEFT JOIN tabl2 ON ..... or something else? I don't know a web2py component that can be used to edit a result of a joined select. If your 'entity' table includes all fields you want to present to a user you can avoid joins by use of references. I don't use db references myself. I think usage can look like this: db.define_table('names', Field('name', 'string')) db.define_table('companies', Field('company', 'string')) db.define_table('entity', Field('name', db.names.name), Field('company', db.companies.company)) also you can alter the way a field is represented with .represent and .requires methods The details are in documentation on Database Abstraction Layer(DAL) http://www.web2py.com/book/default/chapter/06 SQLFORM allows to edit a row in a table which is fine if you have all fields in 'entity' table. If your 'entity' table contains references to rows in other tables you will need SELECT...JOIN... To edit its result you will have to make a page with multiple SQLFORMs to edit individual rows in tables ' entity' refers to , or make a custom form with SQLFORM.factory, or invent something. >> My background is with object databases, and this kind of design makes >> sense, although I'm not sure if it makes sense with relation >> databases?. It's pretty common to store an object information in a relation db as a set of tables.