I agree with what Mike said, but I would just suggest renaming 
"projector_table" to something like "purchased_table" or "inventory_table". 
 Everything in "models" is a different model of a projector, so the table 
names are a bit confusing. 

In non-database terms, a good way to visualize relationships is to think of 
a form on a webpage.  If you expect to select items from a "dropdown" 
select menu, then those things are usually best as something your 
foreign-key into their own table (or perhaps some sort of enumerated value, 
but that's another topic).  If something is a bit of freeform text you 
enter, then it belongs in a column.  You can also think of ways you'd want 
to search or display data.  You might want to show projectors that only 
match a specific MFG, or have a specific type of source.  Both of those 
requirements suggest having a seperate table with a foreign key might be a 
good idea ( vs a fulltext search )


That said, I'm unclear about what "sources" are.

If a "source" is an AV input, then the source "types" would be global and 
shared.  So a more normalized DB would have the sources in:

  sources_table = Table(u'source', metadata,
        Column(u'id', Integer, primary_key=True),
        Column(u'label', String(20)),
    )

  model_2_source_table = Table(u'model_2_source', metadata,
        Column(u'model_id', Integer, primary_key=True, 
ForeignKey(u'model.id'),
        Column(u'source_id', Integer, primary_key=True, 
ForeignKey(u'source.id' ),
    )

If a "source" is a local input in your building though, then you would want 
to associate the 'source' with the inventory item you are tracking.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to