2010-12-14 3 views
0

저는 현재 응용 프로그램을 설계하고 있는데 어떻게 상수 매개 변수 테이블을 설계해야하는지 알고 싶습니다. 또한 응용 프로그램에서이 테이블을 사용하는 방법을 알고 싶습니다. 예 : 시스템에서 매개 변수 sex (M 또는 F)의 경우 자체 테이블에 있어야하거나 다른 테이블과 함께 해당 매개 변수를 특수 테이블에 넣는 것이 좋습니다. 후속 레이어에서 매개 변수와 기본 키가있는 상수 클래스를 사용하여 매개 변수를 "봉투"로 만들려면 어떻게해야합니까?bussinesses 및 GUI 레이어에서 설계되고 사용되는 매개 변수 테이블은 무엇입니까?

특수한 "DB 패턴"또는 스키마를 사용하여 개발 프로세스가이 단일 매개 변수 테이블에서 릴레이 할 수 있도록 테이블을 만드는 일반적인 방법에 대해 들어 봤습니다. 이게 어떻게 불리는 지 알아?

기타 ...이 문제에 대한 좋은 참고 문헌을 추천 해 주시겠습니까?

답변

0

나는 많은 시간을 Parameter Enumeration Tables이라고 불렀다. module은 내 ZXAF opensource framework의 일부입니다.

기본 디자인은 간단하며 매개 변수가있는 필드가 필요한 각 테이블과 1 - 많은 관계가있는 Parameters 테이블이 있습니다.

alt text

우리가 status 필드를 포함하는 users 테이블로 작업 할 경우 실제 예제를 제공하기 위해이에 확장 : 그것은 다음과 같이 보입니다. 우리는 다음과 같이 제약을 통해 params 테이블에 필드를 색인화하고 연결합니다.

INDEX `FK_user_status` (`status`), 
CONSTRAINT `FK_user_status` FOREIGN KEY (`status`) REFERENCES `params` (`id`) 
      ON UPDATE CASCADE ON DELETE CASCADE 

참고 : 이것은 우리에게 다음과 같은 스키마를 제공이

싶지 않을 때 나는 시간이있다, 여기 CASCADE를 사용하고 있습니다;

alt text

이의 핵심 개념은 데이터베이스 참조 무결성을 유지하고, 코드 내에서 데이터 모델과 통합 매개 변수화 데이터를 포함 할 수 있도록하는 것입니다. 이 코드는 엔티티의 관련성을 데이터베이스에 쿼리하여 알 수 있습니다. 예를 들어 특정 필드의 유효한 값은 무엇입니까?

Parameter Enumeration Tables sample schema

는 마지막으로 내가 소개하고 매개 변수 Tuples의 개념을 설명하고자합니다. 이것은 한 쌍의 매개 변수 (Tuple)를 값과 연관시킬 수있는 또 다른 테이블입니다. 이것은 데이터 중립적 인 방식으로 PET을 확장하여 조회 및 예상 값을 제공 할 수 있습니다.이것은 새로운 열거 형을 추가 할 수있는 확장 가능 모델에 가장 적합하지만 값을 포함 할 수 있어야합니다. 그것은 * * 관계

Parameters schema with Tuples

내가 favour of enums in databases 아니에요 이렇게하는 것이 더 나은이지만,이 단지 내 의견이고 당신이이 마음에 뭔가있을 수 있습니다.

0

대부분의 응용 프로그램은 "열거 형"을 사용합니다. 이 열거 형을 사용하는 방법은 응용 프로그램이 구현되는 방식에 전적으로 의존합니다.

"M"및 "F"성별 이상을 제공하지 않는 한, 나는이 두 옵션을 자신의 테이블에 넣을 것입니다.

바인딩을 작성하여 후속 레이어에 매개 변수를 "봉투"로 지정하면 어떤 종류의 마샬링을 사용하거나 사용하지 않을 수 있습니다. 이것은 전적으로 응용 프로그램을 구현하는 방법에 따라 다릅니다.

+0

바인딩 및 마샬링은 어떻게 수행됩니까? 일반적인 매개 변수 표를 디자인하는 "패턴"또는 "일반적인 관행"을 알고 있습니까 (즉, 한 응용 프로그램에 모든 매개 변수가있는 경우)? – JPCF

+0

마샬링 또는 언 마샬링 프로세스를 자동화 할 수 있습니까? 런타임에 DB 테이블에서 매개 변수를 생성합니까? 또는 어떤 패턴이 상수를 묶는 데 유용 할 수 있습니까? – JPCF

+0

이것은 언어와 프레임 워크가 제공하는 도구에 전적으로 달려 있습니다. 파이썬에서는 거의 완전히 자동화 될 수 있습니다. C# (및 기타 .NET 언어)은 자동화를 제공하는 몇 가지 도구를 제공합니다. 프레임 워크가 투명한 마샬링 지원을 포함하도록 특별히 설계되지 않은 한 C와 같은 다른 요소는 안전한 자동 마샬링을 위해 어떠한 기회도 제공하지 않습니다. – Arafangion

1

나는 Richard Harrison이 게시 한 것과 비슷한 본질적 모델을 사용합니다. Design

코드 테이블을 사용하면 테이블의 서브 세트에 특정한 소수의 상태가있는 경우 문제를 단순화 할 수 있지만 이러한 상태가 데이터베이스의 다른 부분에서 공유되거나 필요하지 않으면 코드 테이블을 균일하게 만들 수 있습니다. 한 곳에서 모든 것을 저장하면 더 혼란 스럽습니다. 이것은 스스로 판단해야하는 판단입니다. 현재 사용중인 응용 프로그램에서는 데이터베이스가 너무 작기 때문에 코드 테이블 하나를 사용합니다.

여기에 저장하는 내용 : 비즈니스 요구 사항에 따라 변경 될 수있는 데이터 레코드 만 데이터베이스에 보관합니다. 이 중 몇 가지 예 :

  • 배송 목적지는
  • 주문 상태 코드 (만 미국에서 몇 주, 또는 특정 지역에서 국가의 소수 등을 배송 할 수 있음).
  • 응용 프로그램 역할.
  • 당신이 (엄격하게 우리가 지금 성보다는 섹스에 대해 이야기하고 말할 수 있지만, 또는 같은) 남성, 여성, 트랜스젠더 만 M/F에서 "섹스"질문에 대한 답을 변경 예상되는 경우

, 또는 다른 성별을 수용하면 데이터베이스에 포함시키는 것이 좋습니다. 그렇지 않으면, 당신이 얻을 수있는 것과 같이 영구적으로 가까운 것을 위해, 그것을 데이터베이스에 저장하지 마십시오.

0

어쩌면 당신은 Dimension 테이블을 찾고 있습니다. 이것은 SCD과 관련됩니다. 이 중 하나가 "단일 매개 변수 테이블"일 수 있습니다. 시간이 지남에 따라 여러 테이블 (성, 위치 등)을 갖는 것이 더 나을 수도 있습니다.