1인칭 학습 시점_웹개발/SQL

[SQL] SQL 데이터 무결성과 트랜잭션 개념 정리 + 파이썬으로 오라클 DB 연결하기

awesong 2024. 6. 27. 17:55
728x90
반응형

데이터베이스를 설계하고 활용할 가장 중요한 요소 하나는 데이터의 정확성과 안정성입니다. 이번 포스팅에서는 데이터 무결성, 트랜잭션, 그리고 파이썬을 통한 오라클 DB 연결 방법에 대해 정리하겠습니다.

 

1. 데이터의 무결성(Data Integrity)

데이터 무결성이란, 데이터베이스에 저장된 데이터 값이 사용자의 의도와 정확히 일치하는 상태를 말합니다. 정확성, 유효성, 일관성, 신뢰성을 유지해야 하며, 잘못된 입력·수정·삭제로부터 데이터를 보호해야 합니다.

 

무결성이 중요한 이유

  • 부적절한 데이터의 입력을 방지합니다.
  • 시스템의 신뢰도를 높입니다.
  • 데이터 간의 관계를 정확히 유지할 있습니다.

 

2. 제약조건(Constraints)

제약조건은 테이블에 저장되는 데이터가 정해진 규칙을 따르도록 강제하는 설정입니다. 이를 통해 데이터의 무결성을 보장할 있습니다.

 

제약조건의 종류

제약조건 설명
NOT NULL 해당 열에 반드시 값이 있어야
UNIQUE 중복되지 않는 값을 유지
PRIMARY KEY NOT NULL + UNIQUE, 테이블의 식별자 역할
FOREIGN KEY 다른 테이블의 키를 참조하는 제약
CHECK 특정 조건을 만족하는 값만 허용

 

3. 트랜잭션(Transaction)

트랜잭션은 하나의 논리적인 작업 단위로, 데이터베이스에서 여러 DML 작업을 하나로 묶어 처리하는 단위입니다. 예를 들어, 계좌 이체 출금과 입금이 모두 성공해야 의미가 있듯이, 모든 작업이 성공하거나 하나라도 실패하면 전체를 취소(rollback)해야 합니다.

 

트랜잭션의 특징 (ACID)

특징 설명
Atomacity (원자성) 모두 수행되거나 아무것도 수행되지 않아야
Consistency (일관성) 트랜잭션 전후에 데이터는 항상 일관된 상태여야
Isolation (고립성) 동시에 수행되는 트랜잭션 간섭이 없어야
Durability (지속성) 트랜잭션이 성공적으로 완료되면 결과는 영구적이어야

 

4. 파이썬에서 오라클 DB 연결하기

파이썬으로 오라클 데이터베이스에 접근하여 데이터를 조회하거나 조작할 있습니다. 이를 위해선 oracledb 모듈을 사용하며, 먼저 설치가 필요합니다.

 

oracledb 모듈 설치

pip install oracledb

 

오라클 DB 연결 예제

import oracledb

oracledb.init_oracle_client()  # 오류 방지용 초기화

username = '**' (직접설정)
password = '****' (직접설정)

dsn = 'localhost:1521/xe'  # 연결 문자열

conn = oracledb.connect(user=username, password=password, dsn=dsn)
cur = conn.cursor()
cur.execute('SELECT MEM_ID, MEM_NAME, ADDR, DEBUT_DATE FROM MEMBERS')

print('멤버ID   멤버이름    주소    데뷔년도')
print('-'*100)

while True:
    row = cur.fetchone()
    if row is None:
        break
    print(f'{row[0]:<5} {row[1]:<15} {row[2]:<20} {row[3].strftime("%Y-%m-%d"):<10}')

cur.close()
conn.close()

 

FOR문을 활용한 출력 예제

for row in cur:

    print(f'{row[0]:<5} {row[1]:<15} {row[2]:<20} {row[3].strftime("%Y-%m-%d"):<10}')

 

다중 테이블 JOIN 예제

query = """SELECT S.이름 AS 학생이름, C.과목명 AS 수강과목, E.성적, P.이름 AS 담당_교수명, P.이메일
           FROM 학생 S
           JOIN 수강 E ON S.학번 = E.학번
           JOIN 과목 C ON C.과목코드 = E.과목코드
           JOIN 교수 P ON C.교수ID = P.교수ID"""
cur.execute(query)

while True:
    row = cur.fetchone()
    if row is None:
        break
    print(f'{row[0]:<5} {row[1]:<10} {row[2]:<5} {row[3]:<5} {row[4]:<20}')

 

이처럼 파이썬과 오라클을 연결하면 다양한 쿼리 결과를 자동화하거나, 다른 시스템과 연동하는 데도 유용합니다.

 

5. 마무리하며

이번 글에서는 데이터의 무결성, 트랜잭션의 개념, 그리고 파이썬으로 오라클 DB 연결하고 활용하는 방법에 대해 정리했습니다. 실무나 프로젝트에 활용할 , 이런 기초 개념과 실습 예제를 통해 유연하고 정확한 데이터 처리가 가능합니다.

반응형