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) 등이 있다.
'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 |