the basic rules for designing tables in a relational database are covered by 'normalisation'
Fundamentals of Relational Database Design -- r937.com
and
The Relational Data Model, Normalisation and effective Database Design
are two good sources, but there's plenty of others.
I don't think the model groups entity is neccesarily the right approach, unless you know in advance what serial numbers comprise what build standard. I would expect the manufacturer to have some other mechanism to identify a build standard, or they would retain the serial number ranges within their own system(s). if they release that information then fine, by all means store it.
in the relational DB world normally you have a primary key for every row (something that makes that row unique) however in the real world there may be several cabs for a specific model. or there could be equivalancies (eg say a manufacturer released a set of tinted windows in place of clear glass). I don't know enough about glazing in mechanised plant (and I'm not sure I want to know more), but in other industires its not unknown for a manufacturer to do "specials" eg Makita did a production run of white framed drills instead of their more usual blue drills to celebrate / mark some age milestone. the drill remained the same but was different. if your suppliers do the same you need a mechanism to represent that
seperate tables for what is essentially the same information is never a good idea. every time there is a new cab, it requires development staff time and effort. get the design right firts time means there is little future involvement from development (IE you) as users control their own data.
bear in mind a piece of glass is just that
its a part supplied by a manufacturer, heck it may even be supplied by more than one manufacturer
as a part it has specific dimensions which make it unique
it could be used in multiple locations (either in the same model vehicle or in other models from the same or differnt manufacturers).
to handle part equivalencies you either have to rely on the manufacturers part number being unique (possibly with the manufacturer ID) or devise another mechanism. Id suggest you have your own internal partnumber (it doesn't have to be seen by the outside world, or even be seen inside our company. providing you have a part equivalence it doesn't matter if the manufacturer changes their part ID.
the problem of showing your internal system unique ID is that users can start to use them in the real world where they have little or no relevance personally I would drop the idea of prefixing stuff with 'CAB', especially as the CAB is clear enough given you are using a table called 'Cab Assembly'.
I don't know how your organsiation is structured but there are things you can do ferinstance you associate a drawing with the Assembly entity (or as you currently have it laid out your models table. that assoiciation could be a scan of the relevant parts page or it could be a URL to the manufacturers page. likewise each actual part when displaye on screen could point to a manufacturer info page.
I don't understand the column 'variation'
Calling a column 'year' could cuase problems with the db. I don't use Filemaker, when I last saw it around 10 years ago it seemed a crock of sh1te as far as my needs were concerned but calling columns 'year' does cause problems with other db's. check if filemaker has a list of reserved words which you shouldn't use.
also 'year' isn't very descriptive... im guessing its a production year, but I'd expect a manufacturer to run with a specific build standard for wahterver period they deem neccessary... it coudl be a matter of months it could be a single year, it could be several years. I'd expect your customers to say they are looking for a piece of glass for a JCB 5CX, they may know year of production but may not. so your issue is how do you identify what part the customer actually wants. it may well be that the best way of identifying that part is to refer to the supplier's (in this case JCB) parts system. which means is there any added value in creating a db? what does your proposed design do that existing systems cannot do? what is it that justifies the time and cost in developing your own systems especially as populating the db may be an onerous task and keeping it upto date likewise.
sometimes there are good reasons to reinvent the wheel, but often its far simpler to use a wheel that soemone else already provides for free (or even for a fee)