반응형

드디어 리액트 프로젝트가 모두 끝나고 새로운 수업이 시작됐다 !!!
SQL 은 이해만 하고 있으면 잘 풀 수 있지 않을까 하고 쉽게 생각했었는데, 나중에 조인과 서브 쿼리한테 두들겨 맞았다^-^
오늘은 첫 날이라 간단한 ERD를 구성하는 수업으로 진행되었다.
1. 관계형 데이터 베이스와 모델링
2. 모델링
2) 모델링 주요 개념
- 개체(엔터티, Entity): 데이터베이스에서 관리하려는 대상 → 테이블로 구현됨
- 예: 고객(Customer), 제품(Product), 주문(Order)
- 속성(Attribute): 엔터티의 세부정보 → 컬럼에 해당
- 예: 고객 엔터티의 이름, 이메일, 연락처
- 관계(Relationship): 엔터티 간의 연결 → 외래 키로 구현
- 예: 고객이 주문을 한다(Customer - Order)
- 키(Key): 데이터를 식별하거나 연결하기 위한 고유한 값
- Primary Key: 테이블의 각 행을 고유하게 식별
- Foreign Key: 다른 테이블과의 관계를 정의
- 제약조건(Constraint): 데이터 무결성을 유지하기 위한 규칙
- 예: UNIQUE, NOT NULL, CHECK
7) ERD 표기법

8) ERD 예시

Q. 어디를 개선하면 좋을까?
→ Client 가 Account 를 여러 개 가질 수 있는데 현재는 일대일 관계이므로 이 부분을 수정
ERD 를 쉽게 구현할 수 있도록 도와주는 다양한 툴이 있는데 나는 그 중에서 dbdiagram 을 사용했다.
dbdiagram.io - Database Relationship Diagrams Design Tool
dbdiagram.io
// 고객
Table Customer {
cus_id integer [primary key]
username varchar
tel varchar
email varchar
cus_regist_date timestamp
cus_registrant varchar
cus_change_date timestamp
cus_changer varchar
}
// 계좌
Table Account {
acc_num integer [primary key]
balance integer
created_at timestamp
acc_regist_date timestamp
acc_registrant varchar
acc_change_date timestamp
acc_changer varchar
}
// 거래
Table Transaction {
tr_id integer [primary key]
tr_date varchar
tr_amount integer
tr_type varchar
tr_regist_date timestamp
tr_registrant varchar
tr_change_date timestamp
tr_changer varchar
}
// 상품
Table Product {
pr_id integer [primary key]
pr_name varchar
pr_type varchar
pr_rate integer
min_subscription_amount integer
pr_regist_date timestamp
pr_registrant varchar
pr_change_date timestamp
pr_changer varchar
}
// 상담
Table Consulting {
con_id integer [primary key]
cus_id integer
employee_number integer
con_type varchar
con_date timestamp
con_context text
con_regist_date timestamp
con_registrant varchar
con_change_date timestamp
con_changer varchar
}
// Customer 1 : N Account
// Account 1 : N Transaction
// Customer 1 : N Consulting
// Product 1 : N Account
Ref: Account.acc_num > Customer.cus_id
Ref: Account.acc_num > Product.pr_id
Ref: Transaction.tr_id > Account.acc_num
Ref: Consulting.cus_id > Customer.cus_id

Table Student {
student_id varchar [primary key]
name varchar
}
Table Professor {
professor_id varchar [primary key]
professor_name varchar
}
Table Department {
dept_id varchar
dept_name varchar
}
Table LabUsage {
usage_id integer [primary key]
student_id varchar
application_date date
start_date date
end_date date
professor_id varchar
}
Table Borrower {
borrower_id varchar [primary key]
borrower_name varchar
borrower_type varchar
}
Table Book {
book_id varchar [primary key]
book_name varchar
publisher_name varchar
published_date timestamp
author_name varchar
isbn varchar
}
Table Loan {
loan_id integer [primary key]
borrower_id varchar
book_id varchar
loan_date date
return_date date
}
Ref: LabUsage.student_id > Student.student_id
Ref: LabUsage.professor_id > Professor.professor_id
Ref: Student.student_id < Department.dept_id
Ref: Loan.borrower_id > Borrower.borrower_id
Ref: Loan.book_id > Book.book_id
Ref: Student.student_id - Borrower.borrower_id
Ref: Professor.professor_id - Borrower.borrower_id

Table Student {
student_id varchar [primary key]
name varchar
}
Table Professor {
professor_id varchar [primary key]
professor_name varchar
}
Table Department {
dept_id varchar
dept_name varchar
}
Table LabUsage {
usage_id integer [primary key]
student_id varchar
application_date date
start_date date
end_date date
professor_id varchar
}
Table Borrower {
borrower_id varchar [primary key]
borrower_name varchar
borrower_type varchar
}
Table Book {
book_id varchar [primary key]
book_name varchar
publisher_name varchar
published_date timestamp
author_name varchar
isbn varchar
}
Table Loan {
loan_id integer [primary key]
borrower_id varchar
book_id varchar
loan_date date
return_date date
}
Ref: LabUsage.student_id > Student.student_id
Ref: LabUsage.professor_id > Professor.professor_id
Ref: Student.student_id < Department.dept_id
Ref: Loan.borrower_id > Borrower.borrower_id
Ref: Loan.book_id > Book.book_id
Ref: Student.student_id - Borrower.borrower_id
Ref: Professor.professor_id - Borrower.borrower_id

반응형
'Education > 신한투자증권 프로 디지털 아카데미' 카테고리의 다른 글
| SQL 고급자 되어보기 ⁉️ (1) | 2025.08.10 |
|---|---|
| SQL 기초부터 시작하기 (3) | 2025.08.10 |
| React 프론트 프로젝트 완. 료. (11) | 2025.08.03 |
| React 미니 프로젝트 완. 료. (9) | 2025.07.13 |
| React 서버 컴포넌트, 클라이언트 컴포넌트 뿌시기💣 (0) | 2025.06.22 |