Coding 공부/DBMS

[DBMS] ER 다이어그램, 데이터 모델링

CBJH 2024. 4. 8. 09:13
728x90
반응형

1. ER다이어그램

 

ER다이어그램(ER Diagram, Entity-Relationship Diagram)은 데이터베이스 설계에서 사용되는 개념적 모델링 도구입니다. '엔티티-관계 다이어그램'이라고도 하며, 데이터베이스에 저장될 데이터의 구조를 시각적으로 표현하는 데 사용됩니다. ER 다이어그램은 데이터베이스를 구성하는 엔티티(객체), 그 사이의 관계, 그리고 엔티티의 속성을 도식화하여 보여줍니다.

 

  1.1 주요 구성 요소

  • 엔티티(Entity): 데이터베이스에 저장되는 주요 정보의 단위로, 사람, 장소, 물건, 사건 또는 개념 등이 될 수 있습니다. ER 다이어그램에서는 보통 사각형으로 표현됩니다. 클래스로 표현됨.
  • 속성(Attribute): 엔티티를 구성하는 세부 정보로, 엔티티의 특성을 나타냅니다. 예를 들어, '학생' 엔티티에는 '이름', '학번', '전공' 등의 속성이 있을 수 있습니다. 속성은 보통 엔티티 사각형에 연결된 타원으로 표현됩니다.
  • 관계(Relationship): 엔티티 사이의 연관성을 나타냅니다. 예를 들어, '학생'과 '수업' 사이에는 '수강한다'라는 관계가 있을 수 있습니다. 관계는 보통 엔티티들을 연결하는 선으로 표현되며, 관계의 성격을 나타내는 이름이 붙습니다. 메소드로 표현됨.

  1.2 사용 목적

ER 다이어그램은 데이터베이스 설계 초기 단계에서 데이터의 구조를 명확하게 이해하고, 설계자와 사용자 간의 커뮤니케이션 도구로 활용됩니다. 복잡한 데이터 구조를 시각적으로 표현함으로써, 데이터베이스 설계의 오류를 미리 발견하고 수정할 수 있게 해 줍니다.

실무에서 사용하는 ER 다이어그램

 

 

2. 데이터 모델링

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 사용자로부터 요구 받은 데이터를 어떤 구조로 데이터베이스에 저장할 것인지 설계하고 구현하는 것을 데이터 모델링이라고 한다. 
  • ERD(ER Diagram)과 IE표기법을 사용해 표현하고 가독성을 확보한다.

 

 

3. IE 표기법 (Information Engineering Notation)

 

IE 표기법은 데이터 모델링을 위해 사용되는 시각적 표현 방식 중 하나입니다. 데이터베이스 설계 과정에서 엔티티(Entity), 관계(Relationship), 그리고 속성(Attribute)을 도식화하여 표현하는 데 사용됩니다. 이 표기법은 정보 공학에서 널리 사용되며, 특히 Peter Chen의 ER(Entity-Relationship) 모델을 기반으로 하는 여러 다이어그램 중 하나입니다.

 

4. 디그리 (Degree)

디그리는 관계형 데이터베이스에서 테이블의 컬럼(속성)의 수를 나타냅니다. 다른 말로는, 한 테이블이 가지고 있는 속성의 개수를 의미합니다.

 

 

5. 도메인과 테이블의 차이점

  • 도메인: 속성이나 컬럼에 할당될 수 있는 값의 유형, 범위, 조건을 정의합니다. 이는 데이터의 유효성 검사와 무결성 유지에 기여합니다.
  • 테이블: 데이터가 실제로 저장되는 구조입니다. 여러 컬럼들로 구성되며, 각 컬럼은 특정 도메인을 가집니다. 테이블은 데이터베이스 내에서 정보를 조직화하고 관리하는 데 사용됩니다.

결론적으로, 도메인은 데이터의 유효한 값의 집합이나 범위를 정의하는 반면, 테이블은 그러한 데이터가 실제로 저장되는 구조를 말합니다. 따라서 도메인과 테이블은 비슷해 보일 수 있지만, 역할과 목적이 다릅니다.

 

 

 

 

6. 이미지를 데이터 베이스에 저장하는 방법

 

  6. 1 바이너리 데이터로 변환하여 저장

이미지를 바이트 배열로 변환한 후, BLOB (Binary Large OBject) 타입의 필드에 저장하는 방식입니다. BLOB 타입은 바이너리 데이터를 저장하기 위한 데이터 타입으로, 큰 사이즈의 바이너리 데이터(예: 이미지, 비디오 파일 등)를 저장할 수 있습니다. MySQL에서는 TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB 등의 BLOB 타입을 제공하여 다양한 크기의 데이터를 지원합니다.

  • 장점
    • 데이터베이스에서 직접 이미지를 관리할 수 있어, 데이터의 무결성을 보장합니다.
  • 단점
    • 데이터베이스의 크기가 커질 수 있어, 백업 및 복구 시간이 증가할 수 있습니다.
    • 서버에 부담이 증가할 수 있습니다.

  6.2 이미지 파일의 경로를 저장

이미지 파일을 서버의 특정 디렉토리에 저장하고, 해당 이미지 파일의 경로나 파일명을 데이터베이스에 저장하는 방식입니다. 예를 들어, VARCHAR 타입의 필드에 이미지 파일의 경로를 저장합니다.

  • 장점
    • 데이터베이스의 크기가 비교적 작아져 백업 및 복구가 용이합니다.
    • 서버의 부담이 더 적습니다.
  • 단점
    • 파일 시스템과 데이터베이스 간의 동기화를 유지해야 하는 부담이 있습니다.
    • 데이터의 무결성 관리가 더 복잡해질 수 있습니다.
  • 결론
    • 이미지 파일을 직접 데이터베이스에 저장할지, 아니면 파일 시스템에 저장하고 경로만 데이터베이스에 저장할지는 애플리케이션의 요구 사항, 데이터베이스 및 서버의 성능, 데이터 관리 정책 등을 고려하여 결정해야 합니다. 대규모 시스템에서는 일반적으로 파일 시스템에 이미지를 저장하고, 데이터베이스에는 그 경로를 저장하는 방식을 선호합니다.

  6.3 예제 링크

 >> '5. BinaryCopy 예제 - 이미지 확장자 파일 FileStream 으로 복사하기' 확인하기

https://cbjh-4.tistory.com/58

 

 

 

 

 

7. PK와 FK로 연결된 데이터를 삭제 할 때 설정

 

관계형 데이터베이스에서 Primary Key(PK)와 Foreign Key(FK)로 연결된 데이터를 한 테이블에서 삭제할 때 발생하는 상황은 Foreign Key의 설정에 따라 달라집니다. FK는 한 테이블의 필드가 다른 테이블의 PK나 유니크 키에 대응되도록 설정되며, 데이터의 무결성을 유지하는 데 중요한 역할을 합니다. FK 설정에는 NO ACTION, CASCADE, SET NULL, SET DEFAULT, RESTRICT 등의 옵션이 있습니다. 이 중 CASCADE, SET NULL, SET DEFAULT 설정에 따라 삭제 작업이 어떻게 처리되는지 살펴보겠습니다.

  7.1 CASCADE

  • 설명: 부모 테이블에서 데이터를 삭제하면, 해당 FK를 참조하는 자식 테이블의 해당 데이터도 함께 삭제됩니다.
  • 적용 상황 예시: CASCADE 설정이 적용된 경우, 주문 테이블에서 특정 고객의 데이터를 삭제하면, 해당 고객의 주문 기록이 있는 주문 상세 테이블의 데이터도 함께 삭제됩니다.

  7.2 SET NULL

  • 설명: 부모 테이블에서 데이터를 삭제하면, 해당 FK를 참조하는 자식 테이블의 해당 필드 값이 NULL로 설정됩니다. 이 옵션을 사용하려면 FK 필드가 NULL을 허용해야 합니다.
  • 적용 상황 예시: 고객 테이블에서 특정 고객을 삭제하고, SET NULL 옵션이 적용된 경우, 해당 고객의 주문 테이블에서 고객 ID 필드가 NULL로 설정됩니다.

  7.3 SET DEFAULT

  • 설명: 부모 테이블에서 데이터를 삭제하면, 해당 FK를 참조하는 자식 테이블의 해당 필드 값이 기본값으로 설정됩니다. 이 옵션을 사용하려면 해당 필드에 기본값이 설정되어 있어야 합니다.
  • 적용 상황 예시: 만약 고객 테이블에서 고객을 삭제하고, 고객 ID 필드에 SET DEFAULT 설정이 적용된 경우, 고객 ID 필드가 사전에 정의된 기본값으로 변경됩니다.

  7.4 NO ACTION 및 RESTRICT

  • NO ACTION: 실제로는 RESTRICT과 동일하게 작동하는데, 부모 테이블에서 참조되는 데이터를 삭제하려고 시도하면, 참조 무결성 제약 조건 위반으로 인해 오류가 발생하고 삭제가 차단됩니다.
  • RESTRICT: 해당 FK를 참조하는 자식 테이블에 데이터가 존재하는 경우, 부모 테이블의 해당 데이터를 삭제할 수 없습니다.

  7.5 결론

따라서, 한 테이블에서 PK와 FK로 연결된 데이터를 삭제하려 할 때의 정확한 동작은 FK 제약 조건의 설정에 따라 달라집니다. 데이터의 무결성을 유지하기 위해, 이러한 제약 조건과 데이터베이스의 관계를 잘 이해하고 올바르게 관리하는 것이 중요합니다.