Sample Header Ad - 728x90

Model data with many to many and overrides

0 votes
1 answer
249 views
I'm having some trouble modeling the database for this particular scenario in Postgres: We have a set of toys that contain several pieces. Each piece is associated with one or more materials. All of these relationships are many to many, because a piece can be placed in many different toys, and a material can be associated with many different pieces. Here's where I lack the knowledge on implementation. There's another many to many relationship, where a toy can be made by many factories, and a factory can manufacture many types of toys. In the general case, for a particular toy, we want to know what pieces it has, and which materials are associated with those pieces. However, there's a case where the material can be different for a given piece *depending on the factory the toy is made in.* In short, there's a "default" case where we know that, for a given toy, we have a set of pieces, and for each of those pieces, we have a set of materials. But, for an arbitrary factory, the material associated with a piece is different. The furthest I've gotten is putting this information in the piece_material junction table: | piece_id | material_id | factory_id | |-----------|--------------|------------| | 1 | 1 | | | 1 | 2 | | | 1 | 3 | 1 | But this obviosuly doesn't work because I don't have information indicating which material is being replaced in a particular factory. I'm looking for a query that will get associated materials with a piece, and only the overrides if there are some present (i.e. in the last row of the above example, if it's overriding material 2, that would only get materials 1 and 3 back).
Asked by BrDaHa (101 rep)
May 9, 2017, 06:35 PM
Last activity: Jun 7, 2025, 12:03 PM