I am a complete noob at OpenCart, but I have been poking around with mysql and php for several years now. No formal training, and what I know is piecemeal based on what I have needed to do with various applications etc.
Here is the concept:
I am modifying OpenCart (which is great) as little as possible to make it work for a company that specializes in selling online courses. The goal is to have customers purchase a course in OpenCart and (from their perspective) instantly be registered in their course. To make things more complicated, most of the time the customer purchasing the course is the student, but sometimes not, and occasionally one customer will purchase courses for more than one student - although rarely at the same time. Functionality exists in the course managment system to grab student information from any one table somewhere else. Therefore, as I see it - I can point it at either the customer table or at the order table (to grab shipping info). The course management system will automatically update (on its side) any fields that change in OpenCart based on unique email address.
For the purpose of saving my sanity (at least for now), I am going to assume that anyone trying to register more than one student at a time will contact the registrar by phone and handle it offline.
I can add fields to the shipping information in the order table so that we can capture a unique shipto email and password for each order, but I know that this will break future upgrades.
I have also been tasked with making it so that all students registered in any course can log in (without having to create a new account) and purchase additional courses. This means that for every order I will need to check and see if the shipping info already exists in the customer table and if not add it there (creating a new customer).
Is there a better way? Should I be creating a new table, and inserting all the student info in there, instead of relying on the order table?