2011-11-17 2 views
0

현재 내가 일하고있는 회사의 제품 재고 정보를위한 데이터베이스 스토리지 솔루션을 개발 중입니다. 나는 MySql을 사용하고 있으며, 데이터 저장을위한 효율적이고 실현 가능한 형식을 찾는 데 어려움을 겪고있다.MySql 데이터베이스 포맷

지금 당장은 25,000 개의 제품을 추적 할 수 있습니다. 각 제품에는 정보를 추적하는 데 필요한 20 가지 범주가 있습니다 (수량, 가격 등). 이 보고서는 3-4 일마다 다운로드되고 업데이트되며 현재 Excel에 저장되고 업데이트됩니다.

제 문제는 위에서 언급 한 범주 각각에 대해 별도의 테이블을 만들고, 제품 skus를 기반으로하는 외래 키를 사용하고 계단식으로 각 테이블을 업데이트하는 것입니다. 그러나이 방법을 사용하면 프로그램을 실행할 때마다 각 테이블이 24000 행을 추가해야합니다. 각 제품은 실행 된 날짜에 업데이트해야합니다. 이 문제는 데이터가 약 1 년 동안 저장되므로 테이블이 확장 될 것이라는 점입니다. 내 다른 데이터베이스 형식에 대한 연구는 몇 가지 예를 제시했지만 이것의 규모는 없습니다. 그들은 하루에 100 행을 추가하는 방향으로 조정됩니다.

이 유형의 데이터베이스를 설정하는 적절한 방법에 대해 알고 있거나 아이디어가 있습니까? 아니면 위에서 설명한 방법이 MySql 테이블의 제한 내에서 적절합니까?

감사합니다, 마이크

답변

0

25,000 행은 MySQL의에 아무것도 또는 경우에 플랫 파일입니다. 처음에는 데이터 양에 대해 걱정하지 마십시오. 필자는 많은 소매 데이터베이스 스키마에 대해 작업했으며 제품은 일반적으로 정적 또는 임의 길이의 속성 집합으로 정의됩니다. 데이터 양은 어느 쪽이든 멀리 떨어져 있지 않은 상태로 끝납니다.

정적 :

create table products (
    product_id integer primary key auto_increment 
    , product_name varchar(255) -- or whatever 
    , attribute1_id -- FK 
    , attribute2_id -- FK 
    , ... 
    , attributeX_id -- FK 
); 

create table attributes (
    attribute_id integer primary key -- whatever 
    , attribute_type -- Category? 
    , attribute_value varchar(255) 
); 

또는 분명히 :

create table products (
    product_id integer primary key auto_increment 
    , product_name varchar(255) -- or whatever 
); 

create table product_attributes (
    product_id integer 
    , attribute_id integer 
    , -- other stuff you want like date of assignment 
    , primary key (product_id , attribute_id) 
); 

create table attributes (
    attribute_id integer primary key -- whatever 
    , attribute_type -- Category? 
    , attribute_value varchar(255) 
); 

나도 같은 기본 구조로 만 몇 백 기록을 밀어 주저하지 않을 것입니다.

+0

Xepoch, 응답 해 주셔서 감사합니다. 이것은 매우 유용하며이 데이터베이스를 개발하기 위해 귀하의 조언을 참고할 것입니다. 내가 mysql과 데이터베이스 형식에 익숙하지 않기 때문에 베테랑이 나를 도와 주도록하는 것이 좋다. – SubxZero