본문 바로가기

Sparta/TIL

24.01.30 TIL - tables

1.스키마(schema)와 엔티티(entity)

1) 스키마는 데이터베이스를 구성하는 레코드의 크기, 키의 정의, 레코드와 레코드의 관게, 검색방법 등을 정의한 것을 말한다. 스키마는 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계를 설명하는데, 이는 데이터베이스의 청사진으로 볼 수 있다.

 

2) 엔티티는 실체, 객체라는 의미로 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것이다. 예를 들어 학생이라는 엔티티는 학번, 이름, 학점, 등록일자 등의 속성으로 특징지을 수 있다.

 

2. 관계(relation)

1) 1:1 관계 : 하나의 레코드(record=행)가 다른 테이블의 레코드 한 개와 연결된 경우이다. 잘 사용하지 않음

ex) 사용자(Users) 모델은 사용자정보(UserInfos) 모델과 1:1관계인데 한 사용자가 하나의 사용자 정보를 가질 수 있고, 한 사용자정보는 한 사용자에게만 속할 수 있다.

 

// Users
userInfos UserInfos?


// UserInfos
user Users @relation(fields: [userId], references: [userId], onDelete: Cascade

Users 모델에서 타입을 지정할 때, Optional Parameter(?)를 지정해줬다. 사용자는 사용자정보가 존재하지 않을 수 있기에.

 

prisma에서 외래키(foreign)를 설정하는 방식이다. 맨앞의 user는 이 연관관계를 지칭하는 키워드이고, Users는 이 테이블이 관계를 맺을 테이블을 지정한 것이다.

feild는 이 테이블에서 외래키를 설정하기 위한 컬럼을 설정하고, references는 참조할 테이블인 Users의 컬럼을 지정한 것이다. 마지막으로 ondelete는 참조 무결성 제약조건. Users테이블의 내용이 삭제되면 이 테이블에서도 삭제.(cascade= 종속)

 

 

2) 1:N 관계: 하나의 레코드가 서로 다른 여러개의 레코드와 연결된 경우. 가장 많이 사용됨

ex) 사용자(Users) 모델은 여러개의 게시글(Posts)을 등록할 수 있다.

 

// Users
posts Posts[]

// Posts
user     Users     @relation(fields: [userId], references: [userId], onDelete: Cascade)

Users 모델에서 타입을 지정할 때, 배열 연산자( [] )를 지정해줬다. 사용자는 사용자정보가 존재하지 않을 수 있기에.

 

Posts테이블의 내용은 위와 같다.

 

 

3) N : M 관계: 여러개의 레코드가 다른 여러 개의 레코드와 관계가 있는 경우. 다대다 관계라고도 하며 Join 테이블을 만들어 관리한다. 일대다와 비슷하지만 양방향에서 다수의 레코드를 가질 수 있다.

 

4) 자기참조 관계 : 테이블 내에서 관계가 필요할 때 사용. 일대다 관계와 유사하다고 생각할 수도 있지만 일대다는 서로 다른 테이블의 관계를 나타낼 때 사용

ex) 추천인이 누구인지 파악하기 위해 사용. 한명의 유저는 한명의 추천인을 가질 수 있지만, 여러명이 한 명의 유저를 추천인으로 등록할 수 있다.

 

 

3. 관계형 데이터베이스의 중요 키워드

데이터(data): 각 항목에 저장되는 값이다.
테이블(table: 또는 relation):사전에 정의된 열의 데이터 타입대로 작성된 데이터가 행으로 축적된다.
칼럼(column; 또는 field): 테이블의 한 열을 가리킨다.
레코드(record; 또는 tuple): 테이블의 한 행에 저장된 데이터이다.
키(key): 테이블의 각 레코드를 구분할 수 있는 값이다. 각 레코드마다 고유한 값을 가진다.기본키(primary key)와 외래키(foreign key) 등이 있다.

 

 

출처: https://hanamon.kr/%EA%B4%80%EA%B3%84%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%84%A4%EA%B3%84-%EA%B4%80%EA%B3%84-%EC%A2%85%EB%A5%98/

 

'Sparta > TIL' 카테고리의 다른 글

24.02.01 TIL - JWT 사용해보기  (0) 2024.02.02
24.01.31 TIL - log, transaction  (0) 2024.02.01
24.01.29 TIL - 세션, JWT  (0) 2024.01.30
23.01.26 TIL - Prisma(1)  (0) 2024.01.29
24.01.25 TIL - SQL(2)  (0) 2024.01.25