2017-05-24 8 views
-1

조회 테이블의 개념을 파악할 수 없습니다. 현재 두 개의 테이블을 사용중인 프로젝트를 진행 중입니다.조회 테이블을 구현하는 방법은 무엇입니까?

  1. 첫 번째 테이블은 name (varchar)과 value (varchar)의 두 열로 구성됩니다.
  2. 두 번째 테이블에는 Result (varchar)와 value (varchar)의 두 행이 있습니다.

결과는 Java 코드에서 가져온 값을 저장하는 데 사용됩니다. Java 코드의 결과가 첫 번째 테이블의 이름과 일치 할 때마다 두 번째 테이블을 첫 번째 테이블의 해당 값으로 업데이트해야합니다. 조회 테이블 도움말은 어떤 식 으로든 사용합니까? 그렇다면 예제로 설명 할 수 있습니까? 그렇지 않다면 다른 방법이 있습니까?

+0

기본적으로 이미 조회 테이블이 아닌가요? – Kayaman

+0

조회 테이블에 두 개의 열만 있어야한다는 규칙입니까? 그리고 그들이 룩업 테이블이라면 어떻게 테이블을 업데이트 할 수 있습니까? 특정 코드가 있습니까? –

+0

아니,별로 모르겠다. 비록 [엄격한 정의]에서 (https://en.wikipedia.org/wiki/Lookup_table)는 복잡한 값'y'을 조회하는 간단한 값'x'를 사용하는 것입니다. 보다 복잡한 매핑을 사용하면 룩업 테이블 대신'Map' 영역에 들어가기 시작합니다. – Kayaman

답변

0

person의 열이 인 경우를 상상해보십시오. 이 값을 1 (예, 소년) 또는 0 (아니, 소녀)으로 설정할 수 있습니다. 이것은 초기에 쉽습니다.

이제 더 많은 카테고리가 있습니다. this link페이스 북에 따르면 룩업 테이블이 활동하기 시작하는 50 개 이상의 서로 다른 종류 ...이

을 제공합니다 : 당신은있는 테이블 생성 - minium로 - 고유 키와 값입니다. 대부분의 경우 이것은 ID INT IDENTITYContent VARCHAR(100) NOT NULL입니다. Abbreviation 또는이 값에 직접 바인딩 된 기타 추가 콘텐츠 (예 : 다른 언어 또는 외부 코드 시스템 코드 read about mapping tables also)를 추가 할 수 있습니다.

다음 단계는, 멀리 GenderIsMale -Column을 촬영하고, 사용자 테이블에만 관련된 값을 부가 테이블에 저장된 GenderID 저장하는

GenderID INT NOT NULL 
    CONSTRAINT FK_Person_GenderID FOREIGN KEY REFERENCES GenderLookUpTable(GenderID) 

로 교체하고 될 수 조회 :.

간단한 찾아보기 테이블의 기본 구문으로 min에서 관계형 데이터베이스 모델을 만드는 방법입니다. 3.NF 또는 BCNF (전문 데이터베이스 설계를위한 최소 요구 사항이어야 함). 자바 코드의 결과는 첫째 테이블의 이름과 일치 할 때마다

+0

나는 이것이 룩업 테이블 (lookup table)이 아닌 데이터베이스 정규화를 기술한다고 말하고 싶다. – Kayaman

+0

@Kayaman 이것은 정확히 조회 테이블이 무엇입니까? - 주 테이블의 필드에 짧은 값을가집니다 (주 필드에서 긴 이름을 허용 할 수 없기 때문에 여러 가지 이유가있을 수 있지만 일반적으로 다른 테이블이 있습니다) - 그것은 주 테이블의 필드에있는 코드에 따라 실제 값을 조회하는 조회 테이블입니다. – Drako

+0

@Drako 데이터베이스에 관해 이야기 할 때 "이 테이블 1에는 조회 테이블 table2가 있습니다"라고 말하지 않을 것입니다. 게다가, 포스터는 트리거 기능을 찾고있는 것 같지만, 전체 질문은 말도 안되는 소리에 의해 탈선했습니다. 계속 하시겠습니까? – Kayaman

0

, 나는 첫 번째 테이블의 해당 값 와 두 번째 테이블을 업데이트해야합니다.

database trigger의 완벽한 사용 예입니다. 변경 (삽입, 업데이트, 삭제)이 테이블에서 발생할 때 다양한 작업을 수행하는 데 사용할 수 있습니다. 당신이 당신의 (result, value) 테이블에 자바 계산의 값을 삽입하고 가정

당신이 서로 값으로 기록되는 값을 대체하는 트리거를 작성할 수 (의이 foo를 호출하자, 다른 테이블 bar입니다) 표. Postgres에 주어진 예제, 다른 db를 사용하는 경우 특정 RDBMS 매뉴얼을 참조하여 구문을보십시오.

CREATE FUNCTION get_value_from_lookup_table() RETURNS trigger AS $$ 
    BEGIN 
     IF EXISTS (SELECT 1 FROM bar WHERE name = NEW.result) THEN 
      RETURN SELECT name, value FROM bar WHERE name = NEW.result; 
     END IF; 
     RETURN NEW; 
    END; 
$$ LANGUAGE plpgsql; 

CREATE TRIGGER lookup_value 
INSTEAD OF INSERT ON foo 
FOR EACH ROW 
EXECUTE PROCEDURE get_value_from_lookup_table(); 

INSERTfoo에서 수행 될 때마다 확인은 행이 barname=result에 존재하는지 확인하기위한 것입니다. 그럴 경우 해당 행이 삽입되고, 그렇지 않으면 삽입이 정상적으로 진행됩니다. 그것이 그 기본 요지입니다. 실제 솔루션은 테이블 제약 조건, 삽입 및 업데이트 처리가 필요한지 여부 등에 따라 다릅니다.