목록CS/DB (25)
공부기록
ORM (Object Relational Mapping) ORM은 객체지향 프로그래밍의 객체 (Object)와 관계형 데이터베이스 (RDBMS)의 데이터를 연결 (Mapping)하는 기술을 의미한다. 장점 ORM은 객체지향 프로그래밍에서 사용할 수 있는 가상의 객체지향 데이터베이스를 만들어 프로그래밍 코드와 데이터를 연결한다. ORM으로 생성된 가상의 객체지향 데이터베이스는 프로그래밍 코드 또는 데이터베이스와 독립적이므로 재사용성 및 유지보수가 용이하다. ORM은 SQL 코드를 직접 입력하지 않고 선언문이나 할당 같은 부수적인 코드가 생략되기에 직관적이고 단단하게 데이터를 조작할 수 있다. 단점 ORM은 프레임워크가 자동으로 SQL을 작성하기에 의도적으로 SQL이 작성되었는지 확인할 필요가 있다. 객체지..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cJV5QM/btq4YtcZsLT/UDzM56AEPuZN850WMeub30/img.jpg)
SQL DB SQL은 Structured Query Language의 약자이며 그 자체로 DB는 아니지만, SQL을 통해서만 특정한 종류의 DB와 상호작용 할 수 있다. SQL은 RDBMS (관계형 데이터 베이스)로부터 CRUD기능을 가능케 한다. 이러한 DB는 2개의 특징을 가지고 있다. 1. 데이터 베이스에 저장된 데이터들은 엄격한 데이터 스키마를 따른다. 2. 데이터는 여러 개의 테이블들로 나누어지고 관계들을 통해 연결된다. 엄격한 스키마 데이터는 테이블에 레코드로써 저장되고 각 테이블은 명확히 정의된 구조를 가진다 - 속성값의 집합으로 인해 어떤 데이터가 이 테이블에 저장이 될 지 말지가 정해지게 된다. 구조는 필드의 이름과 자료형에 따라 정의된다. 당신은 이 스키마를 따르지 않는 레코드를 추가할..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/OzbNC/btq3Xcbq7N8/H3Ow9poe10OHmmoPMZ15NK/img.png)
정규화 함수적 종속성등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정 정규화의 목적 데이터의 중복성을 최소화하고 일관성등을 보장하여 데이터베이스의 품질을 보장하고 성능 향상을 위해 수행한다. 이상(anomaly)의 개념 및 종류 정규화를 거치지 않으면 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작시 예기치 못한 곤란한 형상들이 발생한다. 이를 이상이라고 하며 삽입이상, 삭제이상, 갱신이상이 있다. 삽입이상 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않는 값들도 함께 삽입되는 현상이다. 삭제이상 릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 연쇄가 일어나는 현상이다. 갱신 이상 릴레이션..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/OulsY/btq3TxVCkTa/3ztOBr5WyGsLsDIHudpLVk/img.png)
개체-관계 데이터 모델 데이터베이스는 개체와 개체들 사이의 관계들의 집합으로 모델링될 수 있다. ER 모델의 구성 개체 관계 개체, 관계 모두 특징으로 속성만을 가진다. 개체 구별이 가능한 객체를 말한다. 개체들은 속성을 가진다. 같은 속성을 가지는 개체들의 집합을 개체 타입이라고 한다. 관계 개체집합 내의 개체들은 다른 개체집합의 개체와 연관성이 있을 수 있다. 관계는 각 개체 집합에서의 객체들 사이의 연관을 말한다. 관계는 속성을 가질 수 있다. 관계 집합은 같은 속성을 가지는 관계들의 집합이다. 관계성 집합 차수 관계성 집합 차수는 어떤 관계에 포함되는 개체의 개수를 의미한다. 이진, 3진, 4진, ... N진 속성 속성은 개체, 또는 관계성이 가지는 특성으로 서술적인 사항이다. 속성 타입의 구분 ..
권한 사용자가 데이터베이스 연산을 하려면 연산에 필요한 권한을 가지고 있어야하며 권한이 없다면 시스템에 의해 수행이 거부된다. 데이터베이스 인스턴스에 대한 권한 create read update delete 데이터베이스 스키마에 대한 권한 index create / delete table create table update table delete SQL 언어 특권 select, insert, update, delete references : 외래키를 선언 usage : 도메인을 사용할 수 있는 특권 all privileges : 모든 특권을 사용 Grant 문장 grant 문장은 권한을 부여 grant ong to [ with grant option] 권한을 부여하는 자는 그들에 대한 권한을 이미 가지고..
무결성 무결성이란 데이터베이스에 저장된 데이터 값과 그 것이 표현하는 현실세계의 시제 값이 일치하는 정확성을 의미한다. 무결성 제약조건은 데이터베이스에 들어있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건을 말한다. 무결성 제약 조건은 데이터 베이스의 정확성과 일치성을 보장하기 위해 사용된다. 무결성의 종류에는 개체 무결성, 도메인 무결성, 참조 무결성, 사용자 정의 무결성 등이 있다. 개체 무결성 개체 무결성은 기본 테이블을 기본키를 구성하는 어떤 속성도 null 값을 가져서는 안된다. 기본키는 중복되어선 안된다. not null, primary, unique 도메인 무결성 도메인 무결성은 주어진 속성의 값이 정의된 도메인에 속한 값이어야 한..
view 관계형 데이터 베이스에서 뷰는 특정 사용자로부터 특정 데이터를 숨기는 것 실제 스키마가 아니지만 '가상의 관계'로써 사용자에게 보여지는 것을 뷰라고 한다. view definition create view v as 예시 create view my Professor as select pID, name, deptName from professor; 뷰는 항상 최신 데이터를 보유한다 뷰는 한 개 이상의 테이블로 붜 정의할 수 있다. 뷰는 테이블은 튜플을 실제로 가지지 않기에 가상 관계, 또는 가상 테이블로 불린다. 뷰는 테이블의 정보를 가져올 뿐이므로 테이블을 최신 데이터를 항상 보여주게 된다. 다른 뷰를 사용하는 뷰 뷰를 정의할 때 베이스 테이블, 혹은 다른 뷰를 사용할 수 있다. 순환 뷰 새로운 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b4zd4V/btq3Thyg5ff/KTkfLDPqbhTfW1DFKixQ2k/img.png)
인덱스 인덱스는 데이터 레코드를 빠르게 접근하기위해 쌍으로 구성되는 데이터 구조이다. 인덱스는 데이터가 저장된 물리적 구조와 밀접한 관련이 있다. 인덱스는 레코드가 저장된 물리적 구조에 접근하는 방법을 제공 레코드의 삽입과 삭제가 수시로 일어나는 경우, 인덱스의 갯수를 최소로 하는 것이 효율적이다. 인덱스가 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 확인하는 TABLE SCAN이 발생한다. Table Scan 테이블에 있는 모든 레코드를 순차적으로 읽는 것 기본키를 위한 기본 인덱스, 기본 인덱스가 아닌 인덱스를 보조 인덱스라고 한다. 대부분의 상용 DBMS에선 기본 키에 대해 자동적으로 기본 인덱스를 생성 클러스터드 인덱스 / 넌클러스터드 인덱스 클러스터드 인덱스 인덱스 키의 순서에 따라 데이..