본문 바로가기

Programming/DataBase System

Chapter3 - 데이터 정의

  • 데이터 정의

데이터베이스에서 릴레이션의 집합은 데이터 정의 언어(DDL)-Mega data : data of data를 이용하여 시스템에 명시되어야 한다. SQL DDL은 릴레이션의 집합 뿐만 아니라 다음을 포함하는 각 릴레이션들에 관한 정보를 명시할 수 있게 한다.

  • 각 릴레이션의 스키마
  • 각 속성들과 관련된 들의 타입
  • 무결성 제약조건(integrity constraint)
  • 각 릴레이션에서 유지하여야 할 인데스들의 집합
  • 각 릴레이션의 보안권한정보
  • 각 릴레이션의 디스크에서의 물리적인 저장 구조


DDL
- 보안. 권한
- 무결성 제약 조건
- 값 타입
- 스키마
- 물리적 저장 구조



  • 기본 타입



SQL 표준은 다음을 포함하여 다양한 내장 타입들을 지원한다.


  • char(n) : 사용자가 지정하는 길이 n을 갖는 고정 길이 문자열. character 라는 완전한 형태를 사용할 수도 있음
  • varchar(n) : 사용자가 지정하는 최대 길이 n을 갖는 가변 길이 문자열. character varying 이라는 완전한 형태를 사용할 수도 있음
  • int : 정수(기계 종속적인 정수의 유한 부분 집합). integer 라는 완전한 형태와 동일함
  • smallint : 작은 정수(정수 도메인 타입의 기계 종속적인 부분 집합).
  • numeric(p,d) : 사용자가 지정하는 정확도(precision)를 갖는 고정 소수정 수(fixed-point number). 수는 p개의 숫자(부호도 포함하여)로 구성되어 있고, p개의 숫자에서 d개는 소수점의 오른쪽에 있다. 따라서 numeric(3,1)은 44.5는 정확히 저장하지만, 444.5 혹은 0.32는 이 타입으로는 정확하게 저잘할 수 없다. (10자리 정수 -> (10,0)
  • real, double, precision : 기계종속적인 정확도를 가지는 이동 소수점 수와 기계종속수준 주배의 정확도를 기닌 이동 소수점 수
  • float(n) : 적어도 n개의 숫자의 정확도를 가지는 이동 소수점 수


    각각의 타입은 특별한 값인 null 값도 포함할 수 있다. null값은 값이 존재하지만 알 수 없거나, 값이 전혀 존재하지 않는 경우에 값의 부재를 가리킨다. 우리가 곧 보게 될 몇몇 경우에, null값을 입력하게 되는 것을 금지하길 바랄 수 있다.
    char 데이터 타입은 고정 길이의 문자열을 저장한다. 예를 들어, char(10)타입의 속성 A를 고려해보자. 만약 이 속성에 "Avi"라는 문자열을 저장하면, 10 문자 길이를 맞추기 위해 7개의 공백이 첨부된다. 반대로 varchar(10)타입의 속성 B가 있다고 하고, "Avi"를 속성 B에 저장하면, 공백은 더해지지 않는다. char 타입의 두 값을 비교할 떄 두 값이 길이가 다르면, 비교하기 전에 길이가 짭은 값에 여백을 자동으로 더해서 두 값이 같은 크기가 되도록 만든다.
    char 타입과 varchar타입을 비교할 때, 비교하기 전에 길이를 같게 하기 위해 varchar 타입에 여분의 공백이 더해질 것으로 기대할 것이다. 하지만 이러한 일은 데이터베이스 시스템에 따라 일어날 수 있고 일어나지 않을 수도 있다. 결과적으로 위에서 나온 속성 A, B에 "Avi"라는 같은 값이 저장되었다고 하더라도 A = B 비교가 거짓이라는 결과로 나타날 수도 있다. 이러한 문제를 피하기 위해 항상 char 타입 대신에 varchar 타입을 사용하는 것을 추천한다.
    SQL은 또한 유니코드 표현을 사용하여 여러 언어의 데이터를 저장할 수 있도록 하는 nvarchar 타입을 제공한다. 하지만, 많은 데이터베이스는 유니코드가 (UTF-8 표현에서) varchar 타입에도 저장될 수 있도록 허락한다.






'Programming > DataBase System' 카테고리의 다른 글

jdbc time zone Error 해결방법  (0) 2020.06.09
Chapter4 - 조인식  (0) 2019.04.30
Chapter3 -SQL 질의 언어의 개요  (0) 2019.04.14
Chapter2 - 요약  (0) 2019.04.14
Chapter2 - 관계 연산  (0) 2019.04.14