I'd lean towards this:
or if I wanted it would look like this:
Product number 1: Component A
Product number 1: Component B
Product number 1: Component C
Looking at your DB Schema, products should have a 1-many relationship with components, and components should have a 1-many relationship to technologies, and types (respectively).
Once it is set up that way (make sure you make the link/search key the Primary index), you can use a foreach() loop to build up the list of what all belongs in Product #1.
Otherwise, if you have a semi-standardized PC "out of box", trying to add in the additional config of the upgraded video card would be a nightmare. This way, you simply join the tables together on ID keys (HDD, Video, etc), and do a large join to get what you need.
--ETA: For your overall table, where you have the predefined systems, break it out into fields of "Product Name", "CaseID", "MBID", "MemID","HDD1ID", "HDD2ID", "HDD3ID", "HDD4ID", "HDD5ID", "RAIDID","AudioAcc", "Keyboard","Mouse","Disc unit 1", "Disc Unit 2", "DLT_1", "SCSI_ID", "DLT_2","Water cooling system", "CPU", ... etc ...
Then all your systems would be "built" in that "parent" database, each with a 1-many option for each serial number of the machine built. Avoid many-many links, and make sure the key you join tables on for the SINGLE QUERY that will give all the info about that system ID.
If I jumped ahead of myself, I'd suggest making the leftmost table into a "serial#" table, and having the description as a field of that table. Then add components in columns, of course, with the choices above, you will have NULL values in the table, but can get all the info in a single query to display.