2011-12-16 2 views
0

예 : 하나의 소스 (웹 사이트, 책 등)의 밀도 값과 융점을 발견 할 수있는 여러 금속 (밀도, 색상, 녹는 점 등)의 이름과 특성을 포함하는 데이터베이스. 다른 사람에게서 나는 어떤 주어진 가치든지 어느 근원에서 왔는지 검색 가능하게하고 싶다.필드를 다른 필드에 연결하는 효과적인 방법이 있습니까?

간단한 해결책은 모든 속성에 대해 '밀도'열과 '밀도 소스'열을 만드는 것입니다.하지만이 문제를 해결하는 방법은 매우 장황한 것 같습니다. 네, 'Density Source'는 소스를 철자하는 다른 테이블과 함께 간단한 정수가 될 수 있습니다.

어떤 의미에서 나는 필드에 각주와 같은 것을 추가하려고합니다.

+0

는 않을 것 [MaterialID, Property, Value, Source]가있는 테이블을 쉽게 만들고 [mercury, 'meltingPoint', -39, "website here"와 같이 채우십시오. – jclozano

+0

데이터베이스 설계에는 "올바른 방법"이 없습니다. 사용 사례, 데이터 특성 등을 고려해야합니다. 어떤 쿼리가 빠르게 작동해야합니까? 얼마나 많은 데이터가 있습니까? – kan

+0

@jclozano - 예. – MatBailie

답변

0

까다로운 대답은 source 테이블을 가지고있는 것보다 덜 장황한 것으로 어디서나 가져올 것이 아니라 각 정보 비트에 대한 각 소스로 다시 연결되는 것입니다.

당신이 할 수있는 일은 밀도, 색, 녹는 점 등을위한 가능한 소스의 매트릭스를 만든 다음, 그것을위한 보편적 인 "SourceKey"를 할당하는 것입니다. 그래서 실제 소스에 하나의 소스 만 저장하면됩니다. 속성 테이블 그런 다음 밀도 소스를 얻으려면 다음을 수행하십시오.

select 
    s.SourceName as DensitySource, 
    m.* 
from 
    metals m 
    inner join SourceMatrix sm on 
     m.SourceKey = sm.SourceKey 
    inner join Source s on 
     sm.DensitySourceKey = s.SourceKey 

이는 사용자가 가질 수있는 조합의 수와 효율성 여부에 달려 있습니다. 데이터베이스는 관계를 저장하지만 혈통은 저장하지 않습니다.

+0

나는 당신의 대답이 본질적으로 jclozano가 내 질문에 대한 코멘트에서 위에 제안한 것이라고 생각한다. – sseelenluft

0

전체 열에 플래그를 지정하려면 SQL Server의 extended properties 또는 MySQL COMMENT 옵션을 사용할 수 있습니다. 다른 열을 추가, 컬럼 당 한 줄에 플래그를 지정할 경우 모델에 저장 관련 데이터이기 때문에 이들은, 데이터베이스

의 관계형 디자인의 "외부"입니다

관련 문제