Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
해당되는 게시물 3건
  PK가 설정된 테이블 두개를 한테이블로 데이터 이전 
작성일시 : 2008. 3. 25. 22:36 | 분류 : SQL Server/Administration | 태그 : data migration, PK, table, 엔티티 무결성

[Action Plan]

DB01.test 테이블의 데이터와 DB02.test 테이블의 데이터를 DB03.test 테이블로 Migration 쿼리 작성
단 이때 seq (Primary Key)를 변환 하여 중복을 피해준다.
본 예제 에서는 DB02.test.seq 칼럼에 1000을 더하여 Primary Key 중복을 피하도록 하겠다.

[DB 및 Table 구조]

[입력 데이터]

seq 가 PK로 겹치기 때문에 단순 입력은 불가능하다.

[실행 쿼리]

일단 db01.dbo.test01의 데이터는 그대로 입력해 주고, db02.dbo.test01의 데이터는 pk 제약 조건을 해결 하기 위해여 커서를 사용했다.
해당 쿼리에서는 커서를 통해 해당 seq에 1000을 더하여 데이터의 중복의 회피 하였다.

begin tran 

    insert db03.dbo.test01 -- 먼저 db01의 데이터를 db03에 넣는다.
        select seq, inputText from db01.dbo.test01

    declare @seqNum int, @inputTextV nvarchar(1000) -- db02의 데이터를 입력할 때 사용할 변수를 선언

    declare seqCursor scroll cursor -- 커서를 선언
    for
        select * from db02.dbo.test01
    for read only

    open seqCursor

    while @@fetch_status = 0
    begin
        fetch from seqCursor into @seqNum, @inputTextV -- 한라인씩 읽어서 변수에 할당
        select @seqNum = @seqNum + 1000

        if @seqNum > 2000 -- 마지막 라인의 경우 항상 2번 출력됨므로 해당 출력을 막기 위해 설정한 구문
            break

        insert db03.dbo.test01
            values (@seqNum, @inputTextV)
    end

    close seqCursor
    deallocate seqCursor

commit tran

[기타...]
그리고 쉽게 하는 방법도 있습니다.
역시 전 쿼리에 약하나 봅니다...
하긴 첨 짜보는 쿼리니깐...;;;
최석준님 감사합니다...^^

begin tran

       insert db03.dbo.test01

       select seq, inputText from db01.dbo.test01

       union all

       select seq+1000,inputText from db02.dbo.test01

commit tran

Name   Password   Home   Secret   Submit
  선언적 데이터 무결성(Declarative Data Integrity) 
작성일시 : 2008. 1. 23. 20:09 | 분류 : SQL Server/Kernel | 태그 : Declarative Data Integrity, Microsoft sql server, 도메인 무결성, 선언적 데이터 무결성, 엔티티 무결성, 참조 무결성

목차
Database 기본기 다지기
1. 선언적 데이터 무결성(Declarative Data Integrity)

실 세계 데이터의 옮은 반영을 위한 RDBMS의 제약 사항

•도메인 무결성 (Domain Integrity)
열에 저장되는 값들은 일관성을 가져야 하며, 업무 규칙에 부합되어야 한다.
예) Check …

•엔티티 무결성 (entity integrity)
관계형 데이터베이스 이론의 핵심은 모든 관계의 모든 튜플(Tuple)(모든 테이블의 모든 행)이 고유하게 식별 될 수 있다는 것이다.
예) Primary Key …

•참조 무결성 (referential integrity)
개체 간에 포함된 정보는 일관성을 유지되도록 해야 한다.
예) Foreign Key …

Name   Password   Home   Secret   Submit
  선언적 데이터 무결성(Declarative Data Integrity) 
작성일시 : 2008. 1. 15. 13:25 | 분류 : SQL Server/Kernel | 태그 : Declarative Data Integrity, Microsoft sql server 2005, 도메인 무결성, 선언적 데이터 무결성, 엔티티 무결성, 참조 무결성

도메인 무결성 (Domain Integrity) : 열에 저장되는 값들은 일관성을 가져야 하며, 업무 규칙에 부합되어야 한다. 도메인 무결성은 가 열에서 수용 가능한 값을 지정해 주는  Check같은 제약 조건을 기본으로 가진다.
주 1 Check 제약 조건 : 제약 조건으로 지정된 기준을 만족시키는 값을 넣어야 한다. 데이터베이스 개발자는 양수값만 들어오게 Check 제약 조건을 정의 할 수 있다.

엔티티 무결성 (entity integrity) : 행(Row)에 저장된 정보를 참조한다. (테이블에 있는 각 행은 테이블을 설명하는 하나의 엔티티 유형에 관한 정보를 저장한다.) 이 유형의 제약 조건에서는 테이블 내에 있는 행에 저장된 정보가 일관성을 유지하고 지정된 규칙을 따르도록 해야한다. 예를 들면 각각의 행은 반드시 같은 수의 열을 보함해야 한다. (어떤 값은 빈곳으로 남겨두더라도) 좀 더 설명하도록 하겠다. 관계형 데이터베이스 이론의 핵심은 모든 관계의 모든 튜플(Tuple)(모든 테이블의 모든 행)이 고유하게 식별 될 수 있다는 것이다. 유일성을 보증하는 속성이나 속성들의 조합 (칼럼이나 칼럼들의 조합)을 "기본키"라고 부른다. 테이블은 한개의 기본키만을 가질 수 있다. 테이블을 정의할 때 키본키를 구성하는 칼럼들을 지정할 수 있다. 이를 Primary key 제약이라 부른다. 이렇게 기본키를 사용함으로써 테이블의 엔티티 무결성이 파괴되는것을 막는다. 물론 가끔 여러 칼럼들이 행을 고유하게 식별할 수 있다. 예를 들어 , employee 테이블은 ID, 주민번호 칼럼을 갖고 있을 수 있고, 이 칼럼들의 값들이 모두 유일한 값을 갖는다고 생각 할 수 있다. 이 키들을 대체키(alternate key) 또는 후보키 (candidate key) 라고 부른다.

참조 무결성(referential integrity) : 참조 무결성은 테이블 사이에 적용되며 이들 개체 간에 포함된 정보는 일관성을 유지되도록 해야 한다. 참조 무결성은 테이블들 사이의 관계를 포함한다. 테이블 사이에 대응하는 실제 열은 외래 키와 기본키를 참조한다.

Name   Password   Home   Secret   Submit