나는 곧 구현할 MySQL 데이터베이스의 대략적인 디자인을 가지고 있지만 기술적으로 정확한지 확신 할 수 없습니다. 나는 내 마음에, 데이터베이스 설계에 따라서 의심 정규 교육을 찍은 적이 없다 :MySQL 데이터베이스 디자인
엔티티/테이블
- 상품 (P_ID, 이름)
- 패키지 (P) ID, 이름)
- Default_Package (* Commodity_ID * package_id와, P_ID)
- Custom_Package (* Commodity_ID * package_id와, Order_ID라고, P_ID)
- 오더 (P_ID, package_id와, Custom_Package = 0)
이 기본적으로 시스템이 작동하도록 설계하는 방법입니다 :
- 관리자는 default_package 테이블에 저장된 기본 패키지의 무리를 만들 Order_ID 테이블의 Package_ID 필드에서 참조됩니다.
사용자는 기본 패키지를 사용자 정의 할 수 있습니다. 그들이 그렇게 선택하면 Custom_Package 필드는 1로 flicked되고 Custom 패키지의 정보는 Custom_Package 테이블에 저장됩니다.
조회를 수행 할 때 orders 테이블의 custom_package 필드가 점검됩니다. 0 인 경우 패키지는 default_package 목록에서 검색되고 그 다음에는 주문을 다시 참조하는 모든 레코드를 검색하여 Custom_Package 목록에서 패키지를 검색합니다.
데이터베이스 설계 및 구현에 대한 필자의 경험에 비추어 볼 때이 방법이 효과적입니다. 그러나 이것이 최선의 방법인지 확실하지 않습니다.
누군가가 의견을 나눌 수 있다면 정말 감사하겠습니다.
:
을 모두 설계를 사용하여 쿼리를 작성 시도하고 하나가 쉽게 확인할 패키지의 유형. 또한 패키지 ID가 고유 한 경우 (즉, 모든 패키지에 고유 한 이름이있는 경우)이 디자인을 기반으로 패키지에 자체 테이블이 필요한 이유가 표시되지 않습니다. – Sparky
패키지 테이블을 제거하면 반복적 인 데이터 세트를 자신의 테이블에 배치하도록 요구하는 정규화 규칙 패키지는 하나 이상의 필수품으로 구성됩니다. 따라서 여러 상품이있는 패키지의 경우 각 상품 ID에 대해 패키지 이름이 반복됩니다. 사용자 정의 패키지와 기본 패키지를 하나의 테이블로 옮기는 경우 기본 패키지를 검색 할 때마다 WHERE 절을 포함시켜야하는 방법을 고려하여 약간의 시간을 들여야합니다. 하나의 여분의 테이블은 실제로 상처를 입혀서는 안됩니다. – captainspi
예를 들어, 상품 표가 분리되어야한다는 것에 동의합니다. 귀하의 응답을 기반으로, 나는 패키지가 작은 이름 집합이라고 가정하므로 같은 테이블에 있어서는 안됩니다 (반복을 방지하기 위해). – Sparky