2011-11-17 3 views
0

구성 요소를 구성 요소 테이블에 저장하는 데이터베이스가 있습니다. 구성 요소 가격에 대한 두 번째 테이블이 있습니다. 이 테이블에는 구성 요소 ID에 매핑되는 필드가 있습니다. 내 가격 테이블은 다양한 가격 (10, 100, 1000, 10K, 100K, 1M)에 대한 정보를 저장해야합니다. 문제는 앞으로 25K 또는 50K와 같은 다른 유형의 가격을 저장할 가능성이 있음을 의미합니다.가격 데이터를위한 데이터베이스 설계

지금 현재, 내 가격 테이블은 다음과 같다 : 유형이 현재 1-6에서 값을 취할 수

id component_id type price 

. 이것은 내가 아주 쉽게 미래에 새로운 가격 유형을 추가 할 수있게 해주기 때문에 좋다.

다른 옵션은 다음과 같습니다 가격 테이블 :

id component_id price_10 price_100 price_1000 price_10K price_100K price_1M 

그러나이 경우, 나는 새로운 분야에 새로운 가격 유형이 추가 될 때마다 추가해야

.

나는 여기 사람들이 첫 번째 방법에 동의하기를 바랍니다.

첫 번째 방법을 사용하면 데이터베이스에있는 모든 구성 요소를 6 가지 가격으로 표시하는 페이지를 표시하는 데 문제가 있습니다 (이 경우 0을 표시해야 함). 분명히 이것은 두 번째 방법을 사용하면 간단 할 것입니다.

내가 지금까지 가지고있는 쿼리입니다 :

SELECT * FROM `component` LEFT JOIN `component_cost` ON `cmpcst_component` = `cmp_id` 

편집 : 내가 구성 요소 가격 테이블에서 일부 샘플 데이터를 표시 것이라고 생각 : 가격은 양의 X를 X의 단가입니다 10-1 백만 범위. 그래서 난 내 구성 요소 가격 테이블에 이런 일이있을 수 있습니다 :

id component_id type price 
1  1    1  0.50 
2  1    2  0.45 
3  1    3  0.40 
4  1    4  0.35 
5  1    5  0.32 
6  1    6  0.30 
+0

유형과 가격 간의 관계는 무엇입니까? 1 가지 유형에 대해 2 가지 가격이있을 수 있습니까? 즉,이 숫자는 10, 100, 1000, 10K, 100K, 1M, 25K, 50K입니다. 그들은 $ 또는 다른 것입니까? – Kash

+0

방금 ​​샘플 데이터를 내 게시물의 맨 아래에 추가했습니다. 가격은 단가입니다. 따라서 구성 요소는 10 단위를 주문할 때 $ 0.50, 1000 단위를 주문할 때는 $ 0.40을 소비합니다. – Justin

+0

예상되는 출력뿐만 아니라 테이블 구조와 샘플 데이터를 제공하면 도움이 될 것입니다. 제공하는 내용에 따라 SQL 질문에 단순히 대답하는 것보다 나은 솔루션을 제공 할 수 있습니다. 예를 들어 조회 테이블을 사용하는 것이 더 나을 것이므로 나중에 더 쉽게 유지 관리 할 수있는 것으로 나타납니다. 대신에 비정규 화 된 테이블이 필요한 경우 :) – Nonym

답변

2

첫 번째 옵션은 훨씬 더 : 같은

1

두 테이블 (최소 카운트) compontent의 가격 구성 요소 하나 하나를 만듭니다. 그런 다음 원하는 구성 요소마다 가격을 추가 할 수 있습니다. 현재와 ​​미래.

이것은 첫 번째 예제의 변형입니다. 유형을 하드 코딩하지는 않지만 특정 가격과 관련된 번호가 있습니다.

select * from component c join compcst_component cc on true and c.id = cc.cmp_id; 
+0

편집 : 첫 번째 게시물에 샘플 데이터를 추가했습니다. – Justin

0

보십시오 뭔가.

데이터를 표시하려면 피벗 테이블이있는 뷰를 만듭니다.

SELECT c.cmp_id, ISNULL(p.price, 0) AS Price 
FROM component AS c INNER JOI component_cost AS p 
ON p.cmpcst_component = c.cmp_id 

것은 어쩌면 나는 '돈 :

당신은 .. 당신이 우리에게 테이블 구조를 줄 수 있기를 바랍니다 만, 여기에 하나 개의 시도이다 내가 당신을 따라 잘 모르겠어요 여기에 도움 http://en.wikibooks.org/wiki/MySQL/Pivot_table

0

찾을 수 있습니다 열 - 테이블 매치업 권한을 가지고 있지만 그렇게 해보십시오.