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.