Django Model building 1) Database
MODEL
Python의 객체 지향 프로그래밍의 특징을 이용해 우리가 Django 앱 안에서 쓰일 데이터베이스들의 테이블들을 만들 수 있다.
앱 안의 models.py에 class를 이용한다.
그런데 여기서 데이터베이스가 무엇이냐는 질문이 올 수 가 있겠지!
Database?
컴퓨터공학을 직접적으로 접해보지 않은 사람들도 데이터베이스라는 말은 들어봤을 것이다. 그러나 아마 데이터베이스가 뭐냐고 물어보면 "엄...데이터가...모여있는..그런거요..." 라고 밖엔 대답할 수 없는 사람들이 있을 것이다. 유식해보이기 위해 데이터베이스에 대한 것들을 CS 적으로 간단하게 알아보고 이를 후에 어떻게 직접 구현하는지 알아보는 형식으로 하자. (SQLD, 정보처리기사, 혹은 나중에 혹시 보게 될 기술면접에도 도움이 될 것이다.)
Database의 정의
데이터베이스는 특정 조직의 업무를 수행하는 데에 필요한 상호 관련된 데이터들의 모임이다.
1)통합된 데이터(Integrated Data), 2) 저장된 데이터(Stored Data), 3) 운영 데이터(Operational Data), 4) 공용 데이터(Shared Data)인 것이다. (정처기 첫장 첫페이지에 나온 약간 수학의 정석으로 치면 집합 1페이지에 나오는 내용)
특징
데이터베이스의 특징은 다음과 같다.
- Real-Time Accessibility: 수시적이고 비정형적인 질의에 대하여 실시간 처리에 의한 응답이 가능해야 한다.
- Continuous Evolution : 데이터베이스의 상태는 동적이다. (삽입, 수정, 삭제로 항상 최신의 데이터를 유지해아한다. )
- Concurrent Sharing: 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
- Content Reference: 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터의 내용으로 데이터를 찾는다.
DBMS
DBMS(데이터베이스 관리 시스템)란 데이터베이스를 관리하며 응용 프로그램들이 데이터 베이스를 공유하며 사용할 수 있는 환경을 제공하는 소프트웨어를 의미한다. DBMS는 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템으로 모든 응용 프로그램들이 데이터베이스를 공용할 수 있도록 관리해 준다.
장고에서 쓰는 프로그램은 Sqlite3이다!
관계형 데이터베이스
현재 가장 많이 사용되고 있는(Django에서 사용하고 있는 sqlite3 포함!) 데이터베이스. 관계형 데이터베이스는 테이블로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타낸다.
관계형 데이터베이스의 특징
- 데이터의 분류, 정렬, 탐색 속도가 빠르다.
- 신뢰성이 높고, 데이터의 무결성을 보장해준다.
- 기존에 작성된 스키마를 수정하기가 어렵다.
- DB 부하를 분석하는 것이 어렵다.
Terminology
열(column),(field,attribute, domain): 데이터의 타입! (ex. 학번, 이름, 전화번호)
행(row), (tuple, record, entity): 관계된 데이터의 묶음 (ex, 1번째 학생, 4번째 학생)
값(value): 테이블은 각각의 행과 열에 대응하는 값을 가지고 있다.
기본키(primary key): 테이블에서 행의 식별자로 이용되는 열!
관계(relationship)
- 일대일
- 일대다
- 다대다
관계별 django안에서 구현 방법을 후에 자세히 서술하도록 하겠다!
외래 키(foreign key): 한 테이블의 키 중에서 다른 테이블의 행을 식별할 수 있는 키
스키마(schema): 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술함
무결성
무결성이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미한다.
무결성의 종류
- 널 무결성: 릴레이션의 특정속성 값이 Null이 될 수 없도록 하는 규정
- 고유 무결성: 릴레이션의 특정 속성에 대해서 각 튜플이 갖는 값이 서로 달라야 한다는 규정
- 참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다는 규정(릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정) -> 파이썬 데이터 모델링시 중요
- 도메인 무결성 : 특정 속성의 값이, 그 속성에 정의된 도메인에 속한 값이어야 한다는 규정
- 키 무결성 : 하나의 테이블에는 적어도 하나의 키가 존재해야 한다는 규정
무결성을 유지하는 방법
대표적으로 사용되는 방법은 중앙 통제에 의한 데이터 갱신으로, 검증 프로그램을 이용하여 모든 갱신 처리 과정에서 반드시 검증 단계를 거치도록 통제를 가한다.
일단은 여기까지 알아보도록 하자 오늘안에 Django 구현 방법까지 가야하니까!
'웹 프로그래밍 > DB' 카테고리의 다른 글
프로그래머스 SQL Kit 연습문제 답 (by me) (0) | 2020.05.23 |
---|
댓글