Database & NoSQL/DB

반응형

ERWIN을 쓸일이 있어서 이것저것 찾아보다.. 아주 기초적으로 정리를 잘 해놓은 파일이 있어서 공유 합니다.

문제 있다면 내리구요~~~

1. Er-win 설치 : 는 생략... 그냥 설치하는 것은 어렵지 않아요
2. Er-win 표기 방식 : IE 와 Ideflx 에 대한 설명
3. 엔티티 생성 방법
4. 식별/비식별, 다대다 관계 예제 
 ***   관계(Relationship) : 두 Entity간의 업무적인 연관성
  1) 식별관계( Identifying Relationship) 
    - 부모 테이블의 기본키 or 복합키가 자식 테이블의 기본키 or 복합키의 구성원으로 전이되는 식별 관계
      (부모가 자식의 모든 정보를 저장하게 됨)
  2) 비식별관계(Non Identifying Relationship)
     - 자식 테이블의 일반 속성(Attribute) 그룹의 구성원으로 전이 되는 비식별관계(부모는 자식의 부분적인 정보를 표현함)

   * A Table이 부모이고, B Table이 자식Table 일때, B에서 FK
     (A와 B를 연결해주는 컬럼, 즉 A의 PK이냐 아니냐에 따라 식별관계와 비식별 관계로 나뉘게 됨.)
   * 식별관계는 B테이블은 A테이블에 종속적이 되어서 A의 값이 없으면 B의 값은 무의미해 지는 것인 
      반면에 비식별관계는 A 의 값이 없더라도 B의 값은 독자적으로 의미를 가짐.

 ERD를 작성할 때 필요한 관계 카디낼리티와 선택성의 표시 기호와 의미는 다음과 같습니다.
1. 실선 : 식별관계 - 부모테이블의 PK가 자식테이블의 FK/PK가 되는 경우
2. 점선 : 비식별관계 - 부모테이블의 PK가 자식테이블의 일반속성이 되는 경우
3. O : Optional(선택) - 0개가 될 수 있다.
4. | : Mandatory - 1개가 될 수 있다.
5. ^ : Many - 여러개가 될 수 있다.
6. - : Exactly - 정해진 개수만 될 수 있다.

5. 슈퍼 타입과 서브 타입
6. 재귀적 관계 정의
7. Erwin Domain 설정  : 이것 말고 사실 Naming 설정하는 것도 있는데 이거 정말 편함.(http://www.dator.co.kr/eyelevel/textyle/218797)
8. Erwin 
물리적 DB 모델링 설계 방법 
9. 인덱스 정의 
10. 스키마 생성...

 

간략 목차 정리 드렸습니다.
감사합니다.

 마지막으로 다시 정리 하면

식별관계(Identifying Relationship)
 부모 엔티티의 주식별자(PK)는 관계(Relationship)을 통해 자식 엔티티의 외부식별자(FK)로 이주하고, 이주한 부모의 주 식별자(PK)는 자식의 주 식별자(PK)의 일부가 된다. -> (PK,FK)
자식은 각 인스턴스를 식별하기 위해 부모에 종속적이고, 부모 없이는 존재할 수 없다.

비식별관계(Non-Ientifying Relationship)
-  
부모 엔티티에 종속적인지 비종속적인지의 여부에 따라 다시 두 가지 관계로 나뉜다.


비식별종속관계 (Non-Identifying Mandatory Relationship)
부모의 주 식별자는 자신의 non-key 영역으로 이주하고, 자신을 식별하는 데 관계하지 않는다.
자식은 자신의 각 인스턴스의 식별을 위해 부모 엔티티에 독립적이고, 부모 없이 존재할 수 없다.
비식별비종속관계(Non-Identifying Non-Mandatory Relationship)
부모의 주 식별자는 자신의 non-key 영역으로 이주하고, 자신을 식별하는 데 관계하지 않는다.
자식은 자신의 각 인스턴스의 식별 위해 부모 엔티티에 독립적이고, 부모없이 존재할 수도 있다.

http://kimseunghyun76.tistory.com 퍼옴.

반응형

'Database & NoSQL > DB' 카테고리의 다른 글

오라클 잡 관리(Oracle job manage)  (0) 2014.01.28
oracle job 생성  (0) 2014.01.28
오라클 데이터 이동(merge)  (0) 2014.01.02
오라클 세로행을 가로 출력(LISTAGG)  (0) 2013.03.22
오라클 시간 연산(SYSDATE)  (0) 2013.03.22
반응형

이번글은 MERGE 문을 이용해 데이터를 이동시켜보는 방법에 대해서 알아보겠습니다.

MERGE 문은 오라클 9i 버전부터 사용하실 수 있습니다.

MERGE문은 언제 쓰면 될까요?



위의 그림처럼 테이블1의 데이터를 테이블2로 복사하려고 합니다.

그런데 테이블1의 내용 중 몇개가 테이블2에 들어있기때문에 INSERT를 하려면 에러가 발생하게 되어 UPDATE 문으로 처리를 해주어야합니다.

하지만 MERGE문을 이용하면 테이블1과 테이블2를 비교하여 테이블1의 내용이 테이블2에 존재하면 UPDATE 존재하지않으면 INSERT 시켜줄 수 있습니다.
(프로그래밍 언어의 IF ~ ELSE ~ 문과 비슷합니다.)

그럼 이제 사용법을 알아보겠습니다.

일단 2개의 테이블을 만들었습니다. 두 테이블에는 NO, NAME, AGE 3개의 컬럼을 가지고 있습니다.

 


일단 1번 테이블 TEMP_TAB_1 테이블에 데이터를 입력했습니다.

DECLARE ~ BEGIN ~ END; 는 PL/SQL 문법으로 아직 설명한적은 없지만 INSERT INTO를 9번 실행하기가 귀찮아서 그냥 썼습니다.

지금 중요한건 이게 아니니까 사용법만 알려드리겠습니다.

ed or edit 명령어를 이용해서 버퍼(이곳에는 바로전에 사용되어진 명령어가 저장되어있습니다.)를 불러와서 다음과 같이 입력합니다.
(아래의 내용은 이 글 처음의 MERGE 예제 텍스트 파일에 첨부되어있습니다. )

 


 ※ ED or EDIT 명령어를 사용했는데 아래와 같이 나올경우는 버퍼에 아무런 내용이 안들어있기 때문입니다.
    이때에는 select 1 from dual; 같은 명령어를 한번 입력하고 불러오시면 됩니다.

 


입력한 후에 R 또는 RUN 명령어를 사용하여 버퍼에 기록되어진 쿼리를 실행합니다.

그럼 테이블1에 데이터입력 끝!

 


테이블 2에는 테이블1의 일부내용만 입력합시다.


이제 극단적인 예를 들어보겠습니다.

 사장님이 TEMP_TAB_2 에 TEMP_TAB_1의 내용을 복사해서 다 집어넣으라고 하시는군요?

거기다가 이름앞에는 소녀시대_ 를 집어넣고 나이는 해가 지났으니 1살씩 더 추가하라고 하십니다. 어찌해야할까요..

사장님이 이렇게 쉬운문제를 줄리는 없지만 이럴때 MERGE 문을 사용하면 됩니다.

다음이 MERGE문의 사용방법입니다.


MERGE INTO 복사당할테이블명 테이블별칭
   USING 복사할테이블명 테이블별칭
   ON (JOIN 조건)
WHEN MATCHED THEN                                       --복사당할 테이블에 복사할 테이블 데이터가 들어있을경우
   UPDATE SET
            t2.name      = '소녀시대_' || t1.name
           ,t2.age         = t1.age + 1
WHEN NOT MATCHED THEN                               --복사당할 테이블에 복사할 테이블 데이터가 없을경우
   INSERT VALUES(
             t1.no
           , '소녀시대_' || t1.name
           , t1.age + 1
   )

※ INSERT(컬럼명1, 컬럼명2, ...) VALUE(컬럼1내용, 컬럼2내용, ..) 처럼 일부컬럼에만 INSERT 할 수도 있습니다.
※ USING ON은 이전글인 [Oracle] Join 방법에 대해 알아봅시다 에서 4번 JOIN-ON 과 같은 형식입니다.

다음은 실행결과입니다. 테이블1의 내용이 테이블2로 정상적으로 복사된것을 보실 수 있습니다.


http://breadshuttle.tistory.com/ 퍼옴.

반응형
반응형
▣오라클 LISTAGG (11g) 
 쿼리 질의시에 세로로 출력되는 필드를 하나에 필드에 구분자를 넣어 출력
SELECT LISTAGG(필드, '|') WITHIN GROUP(ORDER BY 정렬할 필드) 
FROM 테이블명


반응형

'Database & NoSQL > DB' 카테고리의 다른 글

오라클 잡 관리(Oracle job manage)  (0) 2014.01.28
oracle job 생성  (0) 2014.01.28
Erwin 설치, 엔티티생성, 관계설정  (0) 2014.01.04
오라클 데이터 이동(merge)  (0) 2014.01.02
오라클 시간 연산(SYSDATE)  (0) 2013.03.22
반응형
▣오라클 시간 연산 
+,- 를 이용하여 현재 시간 기준으로 연산
SELECT
       TO_CHAR(SYSDATE, 'yyyyMMddhh24miss')                    //현재시간
       ,TO_CHAR(SYSDATE+1, 'yyyyMMddhh24miss')                //1일 후    
       ,TO_CHAR(SYSDATE+1/24, 'yyyyMMddhh24miss')           //1시간 후 
       ,TO_CHAR(SYSDATE+1/24/60, 'yyyyMMddhh24miss')      //1분 후
       ,TO_CHAR(SYSDATE+1/24/60/60, 'yyyyMMddhh24miss')   //1초 후
       ,TO_CHAR(SYSDATE-1/24/60/60, 'yyyyMMddhh24miss')   //1초 전
FROM DUAL
       
--동일한 기능 쿼리
        

SELECT SYSDATE - INTERVAL '10' MINUTE FROM DUAL;     //10분 전
SELECT SYSDATE - INTERVAL '1' HOUR FROM DUAL;     //1시간 전
--전날 11:59 조회
        
SELECT TRUNC(SYSDATE-1)+ 0.99999 FROM DUAL;    //전날 마지막 시간


반응형

+ Recent posts

반응형