2009-05-18 4 views
1

정상적인 (전통적인) 데이터베이스 데이터를 가지고있는 상황을 처리하는 동시에 " ini 파일 "데이터를 사용하고 이들 사이의 무결성을 유지하고자합니다 (heirachical data?).전통을위한 데이터베이스 디자인 및 무결성을 지닌 ini-file-like 데이터

예를 들어, 100 개의 행이있는 'CURRENCY'테이블이 있다고 가정합니다. 동시에 '기본 통화'에 대한 시스템 설정이 있으며이 값은 100 행 중 하나에 매핑되어야합니다.

지금은 XML 구성 파일, ini 파일 또는 Windows 레지스트리에 기본 통화 코드를 저장합니다. 데이터는 괜찮지 만 XML 파일의 값이 실제로 데이터베이스의 유효한 외부 키 값과 일치하는지 확인하는 작업은 조금 있습니다.

데이터베이스에서 어떻게 선언적 데이터를 수행하여 관계형 데이터가 참조 할 수 있고 관계형 데이터와 무결성을 가질 수 있습니까?

답변

0

외래 키 ID를 사용하는 대신 구성 파일에 이름으로 값을 저장하는 것이 좋습니다. 설정 파일에 "USD"가 있으면 코드가 CURRENCY 테이블의 행을 가져 오기 위해 이름순으로 조회합니다.

0

구성 설정은 텍스트 편집기, regedit 등과 같은 외부 프로그램에 의해 항상 업데이트 될 수 있기 때문에 수행 할 수 없습니다.이 문제를 방지하는 유일한 방법은 파일이나 레지스트리를 지속적으로 모니터링하는 서비스를 실행하는 것입니다 데이터베이스를 실행하고 무결성 검사를 수행 할 수없는 경우 변경 사항을 허용하지 않습니다. 이것은 분명히 지나친 것입니다. 올바른 해결책은 구성 데이터를 데이터베이스에 저장하는 것입니다.

+0

내가 묻는 바는이 종류의 일이 데이터베이스 내에서만 어떻게 수행 될 수 있는가하는 것입니다. 즉, 현대 데이터베이스가 어떻게 (이 행을 하나만 가진 테이블을 갖는 오히려 못 생기는) 대신에 config 파일을 사용하는 대신에? –

+0

한 행만있는 테이블에 어떤 문제가 있습니까? 그것은 못생긴 것이 아니며 가장 좋은 해결책 일 수도 있습니다. 그러나 대부분의 앱에는 둘 이상의 구성 설정이 있으므로 몇 줄로 끝날 수 있습니다. –

1

2 열, 키 (또는 이름) 및 값 열이있는 테이블이 필요한 작업을 수행 할 수 있습니다. 관계형 데이터를 정규화 된 테이블에 넣고 'config'형식 데이터를 키/값 쌍 테이블에 넣습니다.

+0

이것은 config 테이블의 "value"열이 XML 데이터 인 필자와 비슷합니다. 최신 데이터베이스는 참조 무결성을 연속으로 포함 된 XML 데이터로 지원합니까? –

+0

RI를 XML로 사용하는 방법에 대해 알지 못합니다. 귀하의 질문에 대한 이해에서, 나는 데이터를 별개의 키/값 쌍으로 분리하고 키 당 하나의 값을 갖는 작업을 할 것입니다. XML을 가지고 있다면 키/값 쌍으로 분해 된 데이터가 있습니까? – Karl

+0

설정 정보에 대한 키/값 모델링은 LedgerSMB에서 수행하는 것과 정확히 같습니다. –