본문 바로가기

데이터베이스

데이터베이스 오브젝트(Database Object) 관계형 데이터베이스(RDBMS)의 데이터베이스 오브젝트(Object)는 무엇일까? 데이터를 저장하거나 참조(Reference하는 데 사용되는 데이터 구조를 말한다. 우리가 자주 다루는 테이블도 이 오브젝트에 해당하고 그 외에도 인덱스(index), 저장 프로 시저(Stored Procedure), 시퀀스(Sequence), 뷰(View) 등이 있다. 사용자가 임의로 새로운 Object type을 창조할 수 없다. 각자가 사용하는 RDBMS(Oracle, Sql Server, Maria)에서 제공하는 Object를 만들어 사용해야한다. 그럼 Object type과 Object instance를 구분해보자. Object type은 "테이블이나 인덱스는 무엇이다". "어떤 것이다." 같은 개념이다. 흔히 객체.. 더보기
IS-A Relationship 개체 간에 계층관계를 가지는 경우가 있다. 상위 계층과 하위 계층으로 나누어 지는데 상위 계층은 하위 계층보다 일반화된 개체이다. 하위 계층에 속한 개체는 보다 정교한 혹은 상세하게 표현된 개체이다. 이때 상위 개체를 Super class라고 하고 하위 개체를 Sub class라고 한다. 이 때 일반화(Generalization)란 bottom-up방식의 접근을 말한다. 이 말은 달리 말해 하위 계층에 있는 개체들을 조합하여 상위계층의 개체를 도출해 낸다.고 하면 될지.... 예를 들어 VIP고객 일반고객을 조합하고 고객이라는 추상화된 개체가 도출된다.... 또 정교하고 혹은 상세(Specialization하게 라는 표현을 썼었다. 이 상세화는 일반화의 반대 의미이다. top-down방식의 접근을 말하는.. 더보기
Minimum Cardinality와 Maximum Cardinality 차이 Minimum Cardinality는 관계에 참여하는 최소한의 개체 수이다. Maximum Cardinality는 괸계에 참여하는 최대한의 개체 수이다. 흔히 1:1, 1:N, M:N 관계에서 1, N, M은 관계에 참여하는 Maximum값을 의미한다. ER Diagram은 여기에 Minmum추가하여 관계 표현을 보완하였다. 표기 방법은 관계실선 위에 Mimum과 Maximum 값을 적어 준다. mimum값이 0이면 관계에 참여하는 개체가 없을 수 있다. maximum값이 *이면 임의의 수만큼 관계에 참여할 수 있음을 의미한다. Relationship (min1, max1) (min2, max2) 1:1 (0,1) (0,1) 1:N (0,*) (0,1) M:N (0,*) (0,*) 다시 말하지만 Mini.. 더보기
관계 타입의 유형 관계 타입(Relationship type)은 개체 타입들 간에 어떠한 형태의 관계를 맺고 있는지에 대한 것이다. 혹은 2개 이상의 개체들 간에 관계에 어떤 유형으로 참여하는지를 말한다. 여기서는 개체와 개체 타입을 구분해서 이해하면 좋겠다. Entity Type은 Entity의 속성을 모아놓은 것이고 Entity 실제 현실에 존재하는 Entity이다. 혹시 아래에 Unary Relationship은 1개의 개체 타입만 관계에 참여하는데 2개 이상의 개체들 간에 관계의 참여 유형을 말했다는 표현에 헷갈릴 수 있을 것 같아 미리 언급해 보았다. 관계 타입의 유형은 크게 Degree와 Cardinality에 따라 나눌 수 있다. # Degree로 나눠 본 유형 Degree of Relationship은 관계.. 더보기
제약조건(Constraint) Constraint은 테이블에 저장되는 데이터의 정확성과 신뢰성을 보장하기 위해 사용하는 규칙이다. 예를 들어 이 컬럼에는 음수는 저장되게 하지마! 이 컬럼에 입력되는 값은 NULL을 허용하지 않아! 이 테이블에서 함부로 행을 삭제하지마!와 같이 Constraint를 컬럼이나 테이블에 적용한다. 만약 앞에서 예로 든 Constraint를 만족하지 않는 Value의 저장이 시도되면 바로 Error메시지가 발생하며 실행을 거부할 것이다. Constraint는 테이블을 만들때(Create Table) 함께 지정해준다. Create table table_name ( Col1 datatype constraint, Col2 datatype constraint, Col3 datatype constraint ….. ).. 더보기
트리거(Trigger) 트리거(Trigger)는 사전적의미로 "방아쇠를 당긴다"이다. 방아쇠를 당기면 총알이 발사되듯 SQL에서 트리거는 테이블에 insert, delete, update와 같은 이벤트가 발생할 때, 총알이 발사되듯 바로 실행되는 특수한 저장프로시저이다. Create Trigger문은 이러한 특수한 저장 프로시저를 만드는 명령문의 시작이다. # Syntax Create trigger [schema_name.]trigger_name On table _name Alter {[insert],[update],[delete]} [Not for Replication] As {sql_statments} 1. Schema_name은 트리거가 속할 스키마의 이름을 명시해주면 된다. 2. Trigger_name은 사용자가 생성하.. 더보기
관계(Relationship)와 관계 타입(Relationship Type) ER 모델은 이론적 혹은 개념적 방식으로 개체(데이터) 사이의 관계를 표현하는 방식을 말한다. 관계 데이터베이스 디자인에 있어서 그 안에 데이터들과 그 관계를 쉽게 이해하기 위해 추상적으로 그려본 그림 같은 것으로 보면 좋겠다. 아무튼 여기서 자주 등장하는 관계(Relationship)는 개체 사이의 관련성을 말한다. 예를 들어 학생과 강좌 사이에는 "수강"으로 관련성을 나타낼 수 있다. 관계 타입(Relationship Type)은 개체(개체 타입) 간의 관계를 정의한 것이다. 관계 집합(Relationship Set)은 관계로 연결된 집합을 의미한다. 관계 타입을 ER Diagram에서는 마름모로 표현한다. 이런 관계 타입도 어떤 연관성을 가지는지에 대한 속성(Attribute)를 가진다. 예로 수강.. 더보기
속성 속성(attribute)는 개체가 가진 성질이다. ER다이어그램에서는 타원으로 표현되며 개체사이에 실선으로 연결시켜준다. 속성의 종류는 아래와 같다. 1. 키속성과 일반속성 : 개체를 유일하게 식별할 수 있는 속성을 키속성이고 그렇지 않다면 일반속성이다. 키속성은 밑줄을 그어 다른 속성과 구분하여 표시한다. 약한 개체의 경우는 키속성을 갖지 못하지만 대신 식별자를 가진다. 그 식별자의 아래에 점선을 그어 다른 속성과 구분하여 표시한다. 2. 단순속성과 복합속성 : 단순 속성(simple attribute)은 더 이상 분해할 수 없는 속성이고 복합 속성(composite attribute)는 둘 이상의 속성으로 추가 분해할 수 있다. 3. 단일값 속성 다중값 속성 : 단일값 속성(single-valued .. 더보기