전체 글
[DB] 데이터베이스 관계(Relationship)
데이터베이스 관계(Relationship) 관계형 데이터베이스(Oracle, MySQL, MS-SQL, SQLite 등등)는 엔티티(Entity)끼리 관계를 맺을 수 있어서 관계형 DB라는 이름이 붙었다. 이때 관계는 두 엔티티가 서로 관련이 있을 때를 말하는데, 1:1, 1:N, N:M 관계를 맺을 수 있다. 엔티티간의 관계를 알기 전에 알아야할 지식에 대해 먼저 살펴보자. 스키마(Schema) & 쿼리 디자인(Query Design) 스키마(Schema)란? 스키마란 데이터베이스를 구성하는 레코드의 크기, 키(key)의 정의, 레코드와 레코드의 관계, 검색 방법 등을 정의한 것을 말한다. 즉, 데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명을 말한다. 데이터베이스의 ..
[DB] 테이블 제약 조건
테이블 제약 조건 - 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 여러가지 규칙을 적용해 놓는 것 - 간단하게 말하면 테이블 안에서 데이터의 성격을 정의하는 것. 1. NOT NULL 조건 컬럼을 필수 필드화 시킬 때 사용. NOT NULL 제약조건 설정 시 해당 컬럼에는 꼭 데이터를 입력해야 함. -- emp3라는 테이블을 만들고, ename 컬럼의 제약조건명을 emp_nm_ename 으로 하여 NOT NULL 제약조건을 설정하자. SQL> CREATE TABLE emp3( ename VARCHAR2(30) CONSTRAINT emp_nm_enmae NOT NULL ); -- 제약조건을 확인할 때는 USER_CONSTRAINTS 뷰를 통해서 확인할 수 있다. SQL> SELECT CONSTR..
[DB] 무결성 제약 조건
데이터 무결성이란? 무결성이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미한다 즉, 데이터 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 의미한다. 정확성 : 중복이나 누락이 없는 상태 일관성 : 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태 만약 데이터베이스에서 데이터 무결성 설계를 하지 않는다면 테이블에 중복된 데이터 존재, 부모와 자식 데이터 간의 논리적 관계 깨짐, 잦은 에러와 재개발 비용 발생 등과 같은 문제가 발생할 것이다. 그렇기 때문에 DBMS에서 데이터의 무결성이 유지되는 것은 중요한 사항이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지한다. 무결성 제약조건 무결성 제약조건이란 데이터베이스의..
[DB] 데이터베이스 키(KEY) 종류
Relation 주로 테이블(Table)과 같은 의미로 사용되며, 데이터의 집합을 의미한다. 튜플(Tuple)과 어트리뷰트(Attribute)로 구성되어있다. Table 중 데이터베이스에서 사용되기 위한 조건을 갖춘 것이 relation이다. Relation의 제약 조건 중 가장 자주 등장하는 조건은 다음과 같다. table의 cell은 단일 값을 갖는다. 어떤 두 개의 row도 동일하지 않다. 키가 존재하는 이유 튜플을 구별하기 위해 튜플을 유일하게 구별하기 위해 모든 속성을 이용하는 것보다 일부 속성만 이용하는 것이 효율성을 높일 수 있다. 릴레이션에 포함된 튜플들을 유일하게 구별해주는 역할은 속성 또는 속성들의 집합인 키가 담당한다. ※ 튜플 (Tuple) : 릴레이션 (테이블) 을 구성하는 각각의..
[DB] 테이블 용어 정리
테이블(Table) 관련 용어 릴레이션 - 투플(행)들의 집합 각 릴레이션은 오직 하나의 레코드 타입만 포함 (행 이니까) 한 애트리뷰트 내의 값들은 모두 같은 유형 각 애트리뷰트(열)들의 순서는 중요하지 않음 : 집합은 순서는 의미가 없음. 동일한 투플이 두 개 이상 존재하지 않음 -> 키가 존재함 한 투플의 각 애트리뷰트는 원자값(리스트)을 가짐. 투플들의 순서는 중요하지 않음. 각 애트리뷰트의 이름은 한 릴레이션 내에서만 고유하면 됨. - 릴레이션 키 각 투플을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트들의 모임 두 릴레이션을 서로 연관시킬 때 사용 인덱스를 만들 때 사용 릴레이션 스키마(relation schema) - 내포 릴레이션의 이름과 릴레이션의 애트리뷰트들의 집합 표기법 : 릴레이..
[DB] 스키마(Schema) 개념
스키마 (뜻 : 계획, 도식) 데이터베이스의 구조(개체, 속성, 관계)와 제약 조건에 대한 정의이다. 메타 데이터라고도 한다. 데이터베이스 관리 시스템(DBMS)이 주어진 설정에 따라 데이터베이스 스키마를 생성하고, 데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경 할 때 DBMS는 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행한다. 한마디로 DBMS는 스키마를 참조하여 사용자의 명령을 수행하는 것이다. 즉, 데이터베이스 어떻게 설계할지에 대한 계획 즉, 구조와 제약 조건을 정하는 것이다. 구체적으로 데이터는 어떤 것들로 구성하며, 데이터들은 어떤 테이블에 저장되며, 여러 테이블들을 어떤 관계를 가지고 있는지를 계획한다. ※ 참고 scheme과 schema는 거의 같은 의미지만 schem..
[DB] 데이터 모델
데이터 모델이란? 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화 하여 체계적으로 표현한 개념적 모형이다. 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약조건 등을 기술하기 위한 개념적 도구들의 모임이다. 데이터모델의 종류 개념적 데이터 모델 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정이다. 현실 세계에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 한다. 대표적인 개념적 데이터 모델로는 E-R모델이 있다. 논리적 데이터 모델 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는 컴퓨터 세계의 환경에 맞도록 변환하는 과정이다. 단순히 데이터 모델이라고 하면 논리적 데..
[DB] SQL(구조화 쿼리 언어) vs NoSQL(비구조화 쿼리 언어)
데이터베이스란? 우선 데이터베이스란 무엇일까? 데이터베이스란 데이터의 모음을 말한다. 또는 일반적으로 컴퓨터 시스템에 전자적으로 저장되는 조직화된 데이터 모음을 말한다. 이렇게 데이터를 조직화하면 데이터에 의미가 생긴다. 또한 대량의 데이터를 효율적으로 관리할 수 있다. 이러한 데이터를 조직화하는 방식(데이터베이스를 만드는 방식)에는 여러가지가 있다. 즉, 데이터베이스를 만들고 관리하는 방식에 따라 데이터베이스 유형을 구분할 수 있는 것이다. 데이터베이스의 유형의 구분 오늘날 데이터베이스는 주로 아래와 같이 구분되어 설명된다. 관계형 데이터베이스 vs 비관계형 데이터베이스 SQL 기반 데이터베이스 vs. NoSQL 기반 데이터베이스 관계형 데이터베이스 vs. NoSQL SQL vs. NoSQL 다소 혼란..
[DB] 데이터베이스(DB) 기초 개념
데이터베이스(Database) 란? 데이터베이스는 우리의 일상생활에서 자주 접하는 용어 중 하나 일 것이다. 예를 들어, 인터넷 쇼핑몰에서 상품을 주문하거나, 학교에서 성적을 조회하거나, 은행에서 계좌를 관리할 때 등 다양한 상황에서 데이터베이스가 쓰인다. 데이터베이스는 어렵게 생각할 필요없이 데이터들을 저장하고 조회하는 프로그램이다. 쇼핑몰의 경우 상품 정보, 고객 정보, 주문 정보 데이터를 데이터베이스에서 가져와 조회하거나 정보를 저장하는 것이다. 데이터베이스의 필요성 데이터를 저장하고 조회한다는 관점에서 보면 파일들을 폴더에 저장하여 정리하고 파일을 검색해서 조회하는 윈도우 파일 탐색기와 비슷해 보일수 있다. 하지만 데이터베이스는 이러한 단순한 데이터 저장소 개념을 넘어선 상위 호환 격이다. 데이터..
3. 엔티티 매핑
객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 주의사항 기본 생성자 필수(파라미터가 없는 public or protected) 내부적으로 동적으로 객체를 관리할 일이 많기 때문에 이때 기본 생성자가 사용된다.(ex. 리플렉션) final 클래스, enum, interface, inner 클래스 사용 x 저장할 필드에 final 사용 X 속성 name JPA에서 사용할 엔티티 이름 지정. 기본값 클래스 이름을 그대로 사용(예: Member) 같은 클래스 이름이 없으면 가급적 기본값을 사용한다. final class는 JPA Entity Class가 될 수 없다. 왜 그럴까? JPA는 DB에서 데..