In designing a database correctly there is some art to it. Not all rules are hard and fast. What determines that, is how you plan to use the data and what your requirements are. Doing it in a purist way is always correct to ensure maximum useability and flexibility, but it can be overkill if your use is limited. So I know you are trying to fix this quickly, but to do it correct will take some work. The benefit of doing it correctly will be that data entry will be much simpler and flexible. Doing analysis, data integrity, management will be much easier and more capable.
I understand why you are finding this challenging because your data model is not trivial. This type of database that you are doing can be very difficult to design correctly. A lot of people would try to do it the way you are. If doing this correct, you will end up with several many to many relationships which are more challenging. Some of your current tables would be made into multiple tables. And some of your user interfaces will be more complex than now. It is like building a house. If everything is level and square in the framing, everything falls into place. It is more work up front, but if not everything else becomes a work around and a cludge.
So my question is do you have the time to do this correct? If so then I recommend hitting it one table at a time and getting each one rock solid. There is enough work to be done that I cannot give you a short answer on how to fix this. You can just try to band-aid this, but I would caution against it. You will get it to do something with a cludge and a work around, but everytime you want to add or do something else it will be a painful band aid and work around.