본문 바로가기
데이터베이스

가장 쉬운 데이터베이스 설계 - 1부

by ahoy~ 2020. 5. 23.

널(Null)은 없거나 알려지지 않은 값을 나타낸다.

널은 0이나 하나 이상의 공백 문자열을 가리키는 것이 아니다.

널값으로는 누락값이나 알려지지 않은 값이 주로 들어간다.

누락값은 사람의 입력이 아직 안들어온 케이스, 알려지지 않은 값은 사정상 아직 넣지 못한 값이다.

"적용안함" 과 "적용할 수 없음"은 미묘하면서 중요한 차이이다.

환자 테이블을 업데이트 시, 머리가 없는 환자의 머리카락 색은 "적용안함"이라기보다 "적용할 수 없는" 케이스이다. "적용할 수 없는" 경우에는 널값보다는 N/A(Not Applicable)을 넣는 것이 좋다.

널로 인한 문제는 주로 연산할 때 나타난다.

(Null*3)+4)=Null이다. 널의 연산의 결과는 모두 널이다.

특히 sql문의 count시 null은 세지 않게 되는 등, 쿼리를 짤 때, null을 항상 유의해서 짜야한다.


데이터베이스의 하나 이상의 테이블에서 여러 필드들을 혼합하여 만든 "가상" 테이블이다.

뷰는 데이터 작업을 탄력적으로 수행할 수 있게 해줌으로써 다양한 측면에서 데이터베이스에 있는 정보를 살펴볼 수 있게한다.


관계

관계는 불필요한 데이터를 줄이고, 중복 데이터를 제거함으로써 데이터 무결성을 보장한다.

1:1, 1:다, 다:다 관계들이 존재한다.

다:대 관계의 경우에는 연결 테이블을 만들어 사용하는 것이 일반적으로 좋다.


데이터 무결성

  1. 테이블 수준 무결성(엔티티 무결성)
    테이블 내에 중복된 레코드가 없으며 테이블 내의 각 레코드를 식별하는 필드가 유일한 값을 갖고, 널이 아니라는 것을 보장한다.
  2. 필드 수준 무결성(도메인 무결성)
    모든 필드의 구조가 잘 되었음을 보장, 각 필드의 값이 유효성, 일관성, 정확성이 확보되었는지
  3. 관계 수준 무결성(참조 무결성)
    테이블 사이의 관계의 적절성과 테이블에 있는 레코드들이 데이터가 다른 테이블에서 입력되거나 수정되거나 삭제될 때마다 동기화 여부를 보장하는가?
  4. 업무 규칙
    조직이 데이터를 인지하고 사용하는 방법에 따라 데이터베이스의 특정 측면에 제약을 준다.
1~3까지는 지키기 쉬우나 4. 업무규칙이 사실 앞의 3가지 종류에 많은 영향을 준다. 이 규칙을 준수하며 앞의 무결성들을 지키는 것이 설계 프로세스의 핵심이다.

댓글