데이터베이스 디자인에 새로운 것이므로 잘 작성했으면합니다. 이 속성을 사용하여 변경할 수 없기 당신이 내 돈 들어(데이터베이스 디자인, mysql) 기본 쇼핑 카트에 내 데이터베이스 디자인이 유용합니까? (데이터베이스 디자인의 새로운 기능)
답변
, 그것은 가난한 디자인
//table that holds shopping cart items that customer choose(not press checkout and order //them)
**shopping_cart**
{
id (int)
product_id (int) fk
product_quantity (int)
customer_user_id (int) fk
}
//table that holds product order data in time of checkout.(i hold them because supplier //can change after time products attributes value add some attributes or delete and change //the price of product)
**order**
{
id (int)
product_id (int) fk
customer_user_id (int) fk
}
//table that connect order to attribute table for products attributes value in the moment //of checkout
**order_attributes**
{
id (int)
order_id (int) fk
attribute_id (int) fk
}
//main product table
**product**
{
id (int)
sku (int)
product_name (varchar)
supplier_user_id (int) fk
}
//connection table many to many
**product_attributes**
{
id (int)
product_id (int) fk
attribute_id (int) fk
}
//table that holds products attributes (price, weight, color + new attributes that user //will create)
**attribute**
{
id (int)
product_id (int) fk
attribute_name (varchar)
attribute_value(varchar)
}
감사 :
기본 쇼핑 카트에 대한 나의 데이터베이스 설계 : 내 데이터베이스 설계의 일부를 봐 주시기 바랍니다 테이블 whe는 EAV 테이블이며 성능 문제를 일으킬 수 있습니다. 제품에 대해 원하는 속성을 실제로 정의 할 시간을 가지십시오. 대부분의 제품 (색상, 크기, 단위 (10 개 패키지, 단일 항목 등)의 대부분은 실제로 simliar입니다.) EAV가 최후의 수단입니다 ..
. 주문 에 OrderID :. 나중에 도로 아래로 제품 가격이 변경 이내 구조가 뭔가를해야만처럼 될 경우 등 가격의
스토어 세부 사항은 orderdetail 테이블에 당신은 가격이 변경하지 않으 , 날짜, 고객 ID 주문 정보 주문 ID, 부품 번호, 부품 번호, 제품 이름, 수량, 가격, 단위, 색상, 크기, 기타 속성 주문 노트 ORDER_ID주의
제품 PRODUCT_ID, PART_NUMBER, 제품 _, COMPANY_ID, 제품 가격, 색상, 크기, 단위
더 나은 (당신이하는 당신이 일반적으로하지 않습니다 속성의 수백하지 않는 한) 널 (null) 열을 가질 때 일부 제품에는 동일한 attrubutes가 없음) 제품에 대한 완전한 사양을 원하면 대용량 varchar 파일에 전체 텍스트 색인을 넣는 것을 고려하십시오. 이것은 EAV 테이블보다 나은 성능을 발휘해야합니다.
흠. 디자인에서 제거 할 수있는 두 개의 테이블, order_attributes, product_attributes가 있습니다. 그렇지 않으면 선택 쿼리가 너무 많은 테이블에서 조인 할 필요가 매우 느립니다. 특성을 주문 W 제품 테이블의 컬럼으로 저장할 수 있습니다.
대단히 감사합니다! – Yosef
당신이 내 대답을 좋아한다면 너는 그것도 올바른 것으로 설정할 수 있습니다 lol –
- 1. Mysql 데이터베이스 디자인 복잡한 쇼핑 카탈로그 파트
- 2. MySQL 데이터베이스 디자인 질문
- 3. Mysql 데이터베이스 디자인
- 4. MySQL 데이터베이스 디자인
- 5. mysql 데이터베이스 디자인?
- 6. MySQL 데이터베이스 디자인 제안
- 7. 데이터베이스 디자인
- 8. Mysql 데이터베이스 디자인 도움말
- 9. MySQL 데이터베이스 디자인 문제
- 10. Mysql 기본 데이터베이스 사용량
- 11. 데이터베이스 디자인
- 12. 비슷한 디자인의 두 필드가있는 데이터베이스 디자인의 욕망
- 13. Drupal MySql 데이터베이스 디자인 질문
- 14. 디자인 데이터베이스 -
- 15. MySQL 데이터베이스 기본 키를 사용
- 16. 데이터베이스 디자인
- 17. 데이터베이스 디자인
- 18. 데이터베이스 디자인의 테이블에 해당 개체
- 19. 데이터베이스 디자인
- 20. 데이터베이스 디자인
- 21. 데이터베이스 디자인
- 22. MySQL 데이터베이스 - 기본 키 문제
- 23. 추적 디자인 - 데이터베이스 추적
- 24. 제약 적용을위한 데이터베이스 디자인
- 25. 데이터베이스 디자인 - 큰 필드
- 26. 데이터베이스 디자인 질문
- 27. 다음 기능 - 데이터베이스 디자인 문제 - 레일 3
- 28. MySQL 데이터베이스
- 29. AlertRules/AlertAction 데이터베이스 디자인
- 30. 데이터베이스 기능 비교 매트릭스
대단히 감사합니다! – Yosef
Magento가 EAV 테이블을 사용하는 이유는 무엇입니까? 또한 나의 신청에서 공급자가 그 (것)들을 정의하기 때문에 나는 제품의 속성을 모른다. 만약 모든 공급자가 새로운 속성을 추가 할 수 있다면 테이블 제품은 많은 컬럼을 갖게 될 것입니다. – Yosef
EAV 테이블은 성능 저하 요인이며 코드를 작성하기가 어렵습니다. 파트에 얼마나 많은 attriub가 있는지 알지 못하면 테이블에 조인 할 횟수를 모릅니다. 모든 쿼리는 여러 테이블을 하나의 테이블에 조인하므로 잠금 문제가 발생하며 일반적으로 실제 작업 부하가 있으면 성능이 심각해질 수 있습니다. 나는 공급 업체가 칼럼을 추가하도록 허용하지 않을 것이다. 부품을 선택하는 데 필요한 특성 (색상, 치수, 무게, 단위 등)이 여섯 가지가 있습니다. 나머지는 설명 적이며 전체 텍스트 색인이있는 하나의 큰 필드에 저장해야합니다. – HLGEM