First off, absolutely do not store several values in a single field as you mentioned. That is a bad idea for many reasons, as others have described.
Secondly, I'm not clear what is contained in the CostumerPayments table. Is this individual payments (with an amount) made by the customer? And each one of these payments has a payment type associated with it?
If that's the case you want the following tables:
- Costumers, with a primary key of CostumerID and no reference at all to payments.
- PaymentTypes, with a primary key of PaymentTypeID and no reference to either payments or customers.
- CostumerPayments, with a foreign key of CostumerID pointing back to the Costumers table and a second foreign key of PaymentTypeID pointing to the PaymentTypes table.
To find all payments for a customer, look in the CostumerPayments table WHERE CostumerID = <>. To get customer information and payments in the same query JOIN the two tables Costumers and CostumerPayments. To find the correct name of a payment type, JOIN the PaymentTypes table in as well.
Alternatively, if your goal is to store a list of PaymentTypes each customer is allowed to use (not referencing an amount, just the fact that a customer is allowed to use, for instance, a VISA card) add a table:
CostumerAllowedPaymentTypes, with foreign keys CostumerID and PaymentTypeID into their respective tables.