Мне нужна помощь для проектирования базы данных и класса сущностей.
У нас есть продукты, продаваемые в разных ресторанах.
Каждый ресторан имеет свою цену продукта. это таблица store_product.
У клиента есть корзина для покупок в ресторане.
Заказчик может добавить товар в корзину для ресторанов.
У меня такой дизайн базы данных: я не знаю лучшего решения для продукта в корзине.
Я не уверен: правильна ли связь между таблицей store_product и customer_order store_product или нет. И это OneToMany или OneToOne ассоциация?
И что должно быть CascadeType в классе сущности.
Благодарю.
вот мой дизайн базы данных: дизайн базы данных
ЗАКАЗЧИК У клиента может быть n адресов.
CUSTOMER_ADDRESS
Столбцы: customer_address_id PK, customer_id FK, address_id FK, имя (если адрес доставки отличается от customer_name)
Товар Товар не имеет цены. Каждый магазин имеет свою цену.
STORE Магазин может добавить цену к продукту
STORE_PRODUCT есть цена со скидкой
store_id (FK), product_id (FK). store_id и product_id являются составным первичным ключом
CUSTOMER_STORE_ORDER Его заказ или корзина покупателя в магазине (состояние = 1 - состояние корзины покупок = 2 - состояние оплаченного заказа = 3 - доставленный заказ.
некоторые столбцы (order_id PK, customer_id FK, customer_order_state_id FK, store_id FK, bank_account_id, credit_card_id FK, customer_address_id, total_order_price
customer_order_store_product Товар в корзине покупок.
у него есть количество купленного продукта и это Forainkeys: order_id, store_id и product_id (это FKs составные PK
проблема в связи между store_product и customer_order_store_product
Теперь классы сущностей:
StoreProduct:
@Entity
@ Table (имя = "store_product")
Открытый класс StoreProduct реализует Сериализуемый {
private BigDecimal price;
@Column(name="discount_price")
private BigDecimal discountPrice;
//bi-directional many-to-one association to Product
@Id
@ManyToOne
@JoinColumn(name = "product_id")
private Product product;
//bi-directional many-to-one association to Store
@Id
@ManyToOne
@JoinColumn(name = "store_id")
private Store store;
...
}
Неправильное назначение в CustomerOrderStoreProduct
@Entity
@ Table (имя = "customer_order_store_product")
открытый класс CustomerOrderStoreProduct реализует Serializable {
private static final long serialVersionUID = 1L;
//bi-directional many-to-one association to CustomerStoreOrder
@Id
@ManyToOne
@JoinColumn(name = "order_id")
private CustomerStoreOrder order;
//bi-directional many-to-one association to Product
@Id
@ManyToOne
@JoinColumn(name = "product_id")
private Product product;
private Integer quantity;
...
}