[프로그래밍] DataBase

[DataBase] DataBase Table

JHVan 2024. 5. 10. 12:25

데이터베이스 테이블

데이터를 구조화하여 저장하는 기본 단위로, 열(column)과 행(row)으로 구성된다.

각 열은 특정 유형의 데이터를 나타내며, 각 행은 데이터 레코드를 나타낸다.

데이터베이스 내에서 데이터를 조직화하고 관리하는 데 사용된다.

SQL을 사용하여 데이터를 검색, 삽입, 수정, 삭제할 수 있다.

 

테이블 용어

 

튜플 Tuple   (= 행 row , 레코드 record)
데이터베이스에서 하나의 레코드를 나타내는 용어

튜플은 릴레이션에서 같은 값을 가질 수 없다

튜플의 수는 카디날리티(Cardinality)라고 함

 

애트리뷰트 Attribute (= 컬럼 column , 열,  필드 field)

각 attribute는 테이블 내에서 특정 종류의 데이터를 나타내며, 테이블의 각 행(row) 또는 튜플(tuple)에서 해당 데이터의 값을 가진다.

'지원자' 테이블이 있다면 이 테이블의 attribute는 지원자 이름, 학과, 학년 등이 될 수 있다.

어트리뷰트의 수는 디그리(Degree)라고 함

 

릴레이션 Relation ( = 테이블 table )

릴레이션 데이터베이스 모델에서 데이터 객체 간의 관계 ( 관련된 투플 Tuple 의 집합 )

컬럼 (애트리뷰트)들의 간의 순서는 고려되지 않음 (그림의 학년,학번,이름,학과의 순서는 고려되지 않음)

키(key) 가 존재하여 같은 키를 가지는 튜플(데이터 중복)을 방지함한 릴레이션 내에 같은 이름의 컬럼이 중복되면 안됨. 서로 다른 릴레이션에는 같은 이름의 컬럼이 존재 가능

 

릴레이션 키 Relation Key

데이터베이스 내에서 테이블 사이의 관계를 정의하는 역할을 하는 키

테이블 간 데이터의 일관성과 무결성을 유지하기 위해 사용

기본 키(Primary Key)  와 외래 키(Foreign Key)로 이루어짐

기본 키(Primary Key)

  • 테이블 내의 각 투플(행)을 고유하게 식별하기 위해 사용되는 속성
  • 기본 키로 지정된 속성은 해당 테이블 내에서 유일한 값을 가져야 하며, NULL 값을 가질 수 없음

외래 키(Foreign Key)

  • 다른 테이블의 기본 키를 참조하여 두 테이블 사이의 관계를 생성하는 속성
  • 외래 키를 통해 참조 무결성을 유지하며, 관련 데이터 사이의 연결을 정의함

릴레이션 스키마 (Relation schema)

데이터베이스의 릴레이션(테이블)의 구조를 정의하는 것

릴레이션의 이름과 그 릴레이션에 포함된 속성(열)들의 명세를 포함한다.

각 속성은 그 데이터 타입과 함께 정의되어 데이터의 형식과 제약 조건을 명확하게 한다.

예를 들어 '지원자' 릴레이션 스키마는

지원자(학번, 학년, 학과, 이름) 처럼 표기

 

릴레이션 인스턴스 (Relation instance)

데이터베이스의 특정 시점에 릴레이션(테이블)에 저장된 데이터의 집합

릴레이션 스키마가 릴레이션의 구조를 정의한다면,

릴레이션 인스턴스는 그 구조에 따라 실제로 저장된 데이터의 상태를 나타낸다.

예를 들어 '지원자' 릴레이션 스키마가 지원자(학번, 학년, 학과, 이름) 로 정의 되어 있다면

릴레이션 인스턴스는 특점 시점의 모든 지원자의 (학번, 학년, 학과, 이름) 데이터를 포함함,

 

도메인 (Domain)

하나의 애트리뷰트가 취할 수 있는 같은 타입의 모든 원자 값 들의 집합 

데이터 타입과 제약 조건을 정의하여 데이터의 무결성과 일관성을 보장하는 역할

설정 예시

 

ENUM을 사용한 성별 도메인 설정

CREATE TABLE Users (
    ID INT PRIMARY KEY,
    Name VARCHAR(100),
    Gender ENUM('Male', 'Female', 'Other') NOT NULL
);

 

CHECK 제약 조건을 사용한 나이 도메인 설정

CREATE TABLE Users (
    ID INT PRIMARY KEY,
    Name VARCHAR(100),
    Age INT CHECK (Age >= 0 AND Age <= 120)
);

 

정규 표현식을 사용한 이메일 주소 도메인 설정

CREATE TABLE Users (
    ID INT PRIMARY KEY,
    Name VARCHAR(100),
    Email VARCHAR(255) CHECK (Email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')
);

 

CHECK 제약 조건을 사용한 전화번호 도메인 설정

CREATE TABLE Users (
    ID INT PRIMARY KEY,
    Name VARCHAR(100),
    PhoneNumber VARCHAR(20) CHECK (PhoneNumber ~* '^\+?[0-9. ()-]{10,20}$')
);

 

VARCHAR 길이 제한을 사용한 주소 도메인 설정

CREATE TABLE Users (
    ID INT PRIMARY KEY,
    Name VARCHAR(100),
    Address VARCHAR(100)
);

 

'[프로그래밍] DataBase' 카테고리의 다른 글

[DataBase] 무결성  (0) 2024.05.12
[DataBase] Key  (0) 2024.05.11
[DataBase] Schema  (0) 2024.05.09
[DataBase] DBMS  (0) 2024.05.09
[DataBase] DataBase?  (0) 2024.05.08