Am I correct that these relationships are so that a given Product can be linked to up to 22 other product records to show that they are "compatible"?
I don't think I'd use 22 different relationships for this...
I'd use a Join table. Not only do you get a simpler relationship graph, you are no longer limited to a maximum of 22 compatible product records.
Products::ID_Product = Compatible_Product::ID_Product_1
Products 2::ID_Product::ID_Product = Compatible_Product::ID_Product_2
With this set up, a portal to Compatible_Product with additional fields from Products 2 included on a layout based on products can be used to list all compatible products for a given product record.
If I set this up, how would you recomend the best and easyest way to make the relationship (link the products) a script??
Do you mean how to transition your data from the current set up to the new? Yes, that would require a looping script or series of Import Records actions to create the needed records in the join table. If you are unfamiliar with join tables, you may want to investigate this demo file before proceeding: http://www.4shared.com/file/dZ0bjclw/ManyToManywDemoWExtras.html
Got it all working pretty good. How can I make it so that
Compatible_Product::ID_Product_1 and Compatible_Product::ID_Product_2 cannot contain the same ID # on the same record? So i cant accidentally relate the same product to the same product?
A Validation rule could be set up on either ID field as:
ID_Product_1 ≠ ID_Product_2