WRong. cr2 is a really really bad design.

Database 101, any many to many relationship must be defined through a link
table.

Redesign CR2 like so...


db.define_table('person',.... created_by('person'))
db.define_table('company',...created_by('company'))

db.define_table('person_company', id_person('person'),
id_company('company'))

If you want to knwo what company ap person belongs to, look it up in the
link table

person = db.person.first()
link = db.person_company.id_person == person.id
company = db.company.id == link.id_company

This is the "proper" way to design this type of relationship.

I would opt more for a feature in web2py that did this in the background
than handled circular dependency magick.

--
Thadeus




On Thu, Nov 11, 2010 at 11:32 AM, mdipierro <mdipie...@cs.depaul.edu> wrote:

> Ok. Your crm2jpg makes a good case. You proved me wrong.
> I will try add this by the week-end.
>
> Massimo
>
> On Nov 11, 11:24 am, Mirek Zvolský <zvol...@seznam.cz> wrote:
> > -> mdipierro
> > I have prepared 2 pictures, and in this time there is new post from
> > you about company/author. Interesting that my pictures are about the
> > same :-)
> >
> > Model of your CRM application application is here:
> http://zvolsky.alwaysdata.net/crm1.jpg
> > Such model can be implemented in web2py, but order of definitions is
> > important: auth_user, company, person
> >
> > But let's think, you want all people from person's table can register/
> > login into your application. In such case you will follow web2py book,
> > chapter 8,http://web2py.com/book/default/chapter/08, Customizing Auth &
> Renaming
> > Auth Tables,
> > and you will receive following model:
> http://zvolsky.alwaysdata.net/crm2.jpg
> >
> > And using "reference..." field types, in both definition orders
> > (company,person or person,company) web2py will fail.
> >
> > As you say, I can use 'integer' type to avoid this problem, where it
> > is. But mixing 'reference..' and 'integer' for same goal would be
> > strange. So I can use 'integer' for all foreign keys in database. But
> > that means in other words, that the 'reference..' field type is for
> > nothing.
> >
> > What about a more difficult model ashttp://
> zvolsky.alwaysdata.net/crm3.jpg
> > I'm sorry, this is not in english. However it is something about
> > organization of courses, lessons, we have some teachers and
> > partitipant here, some payments for whole course of for one lesson
> > only, and so on.
> >
> > Generated web2py code from OndrejZara's web designer is here:
> http://zvolsky.alwaysdata.net/jekus.py
> >
> > And of course this code will fail in web2py, because of there is no
> > possibility to find a proper order of table definitions.
> > Please, think about this. The change in web2py in this direction would
> > be great.
> >
> > Best regards, Mirek
>

Reply via email to