You see a mobile can come with or without a SIM, and that SIM can come with or without a mobile number. Thats why i've got seperate tables different types of phones. I'm also getting alot of repitition of stock_code. I'm not sure which way to tackle it, so any help would be appriciated.
This is OK - a standard subtype design - as long as all the subtype tables (stock_phone, stock_sim, etc.) have a foreign key (stock_code) to the "supertype" table stock. Then all tables that deal with stock in general (like delivery) can reference the supertype, stock. Processes that need to look at the subtype details can then follow the link from stock to the relevant subtype table (based on the stock.type_code).
Right, so it IS best to have a seperate table for a subtype of stock, allowing for any extra information required on that stock type? The problem I see is that removing or adding a stock_code would require updating the relation many times (ie in differnt tables).