私は2つのテーブルを持っています: tblCustomer, tblProduct:
tblCustomer:
    Id: Integer, auto-increament
    Name: Varchar(30)
    ....
tblProduct
    Id: Integer, auto-increament
    Name: Varchar(50)
    customerId: Integer
    ....
および 2 つのクラス: Customer、Product:
public class Product
{
    private int id;
    private int name;
    /* Other stuffs */
}
public class Customer 
{
    private int id;
    private String name;
    private String phoneNumber;
    /* get-set and others stuffs */
    public static boolean add(Customer cus) {
        /* This is for insert a customer to tblCustomer */
    }
    public boolean addProduct(Product pd) {
        /* This is for insert a product to tblProduct with current customer Id */
    }
}
顧客がアカウントを登録すると、次のように呼び出されます。
Customer cus = new Customer(/* ... */);
Customer.add(cus);
顧客が製品を購入するとき:
Product pd = new Product(/* ... */);
currentCustomer.addProduct(pd);
しかし、私の先生は、テーブルCustomer.addProduct上で動作するため、OOAD (および OOP でさえ) では正しくないと言っていましたが、そうですか? tblProductこの場合の良い設計は何ですか?
** 更新: ** 製品はまだ事前に定義されていません。顧客が製品を購入すると、ストアが作成して顧客に配送するため、同じ製品が 2 つ発生することはまれtblCustomerProductです。必要ですか?