On Jan 10, 2010, at 2:55 PM, Jules Stevenson wrote:

> Sorry for the bad subject, and probably incorrect terminology but is
> it possible to set up a table that would allow a foreign key link (or
> any other technique) that would enable it to bind against *any* other
> mapped class?
> 
> The context for this is there is a DB table that stores tasks to be
> executed. These tasks could relate to lots and lots of other mapped
> classes, and essentially I'd just like to be able to call:
> 
> sentinelTask.dbObject
> 
> where dbObject could be a user, project, client or any other allready
> mapped class.
> 
> Is this possible? What should the DB structure be to set this sort of
> relationship up.
> 
> Sorry if this is just plain stupid, any pointers much appreciated.

In order from easiest to most tedious:

method 1:

- put individual foreign key columns on "task" relating to each kind of target 
object.     On your class, "dbObject" just checks each of the related 
attributes for non-None, then returns that.

method 2:

- user, project client etc. all have a foreign key back to your "task" table, 
not the other way around.   As before "dbObject" checks among several related 
attributes.

method 3:

- use an association table for each association of "task" to "X".   The basic 
idea of this is described at http://techspot.zzzeek.org/?p=13 .   The examples 
there use an older style of SQLA querying but are easy to update.

method 4:

- user, project, client etc. are all inherited from a "base" table, and your 
task table contains a foreign key to that.   See the docs on joined table 
inheritance for that.   If you're already using "joined" then this would be the 
easiest method.







> 
> Jules
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To post to this group, send email to sqlalch...@googlegroups.com.
> To unsubscribe from this group, send email to 
> sqlalchemy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.
> 
> 

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.


Reply via email to