데이터베이스의 조인은 두 개 이상의 테이블에서 데이터를 결합하여 새로운 결과를 생성
SELECT 조회할 필드 FROM 테이블명 INNER JOIN 조인할 테이블명 ON 일치해야할 필드
// 예시
SELECT orders.order_id, customers.customer_name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;
하나의 레코드(행)가 다른 하나의 레코드(행)와 관련되어 있는 관계
// 테이블 정의
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
password VARCHAR(100) NOT NULL
);
CREATE TABLE profile (
id INT PRIMARY KEY,
user_id INT,
introduce VARCHAR(100),
FOREIGN KEY (user_id) REFERENCES user(id)
);
// 관계 정의
User.hasOne(Profile, { foreignKey: 'user_id', onDelete: 'CASCADE' });
Profile.hasOne(User, { foreignKey: 'user_id', onDelete: 'CASCADE' });
한 쪽 레코드가 다른 쪽 레코드 여러 개와 관련되어 있는 관계
// 테이블 정의
CREATE TABLE customers (
customer_id INT PRIMARY KEY AUTO_INCREMENT,
customer_name VARCHAR(255),
customer_email VARCHAR(255)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
order_date DATE,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
// 관계 정의
Customer.hasMany(Order, { foreignKey: 'customer_id' });
Order.belongsTo(Customer, { foreignKey: 'customer_id' });
한 쪽 레코드가 다른 쪽 레코드 여러 개와 관련되고, 그 반대 쪽 레코드도 다른 쪽 레코드 여러 개와 관련되어 있는 관계를 의미
// 테이블 정의
CREATE TABLE Students (
StudentId INT PRIMARY KEY,
StudentName VARCHAR(50)
);
CREATE TABLE Teachers (
TeacherID INT PRIMARY KEY,
TecaherName VARCHAR(50)
);
CREATE TABLE StudentTeacherRelation (
RelationID INT PRIMARY KEY,
StudentID INT,
TeacherID INT,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (TeacherID) REFERENCES Students(TeacherID)
);
// 관계 정의
Student.belongsToMany(Teacher, { through: StudentTeacherRelation });
Teacher.belongsToMany(Student, { through: StudentTeacherRelation });
웹 브라우저(클라이언트)에 저장되는 키와 값이 들어있는 작은 데이터 파일
npm install cookie-parser
const cookieParser = require("cookie-parser");
app.use(cookieParser());
...
res.cookie('쿠키 이름', '쿠키 값', '옵션 객체');
// 확인
console.log(req.session);
웹 서버에 저장되는 쿠키
Cookie VS. Session
- 전체적인 역할과 동작 원리는 비슷 (세션 = 서버 쿠키)
- 쿠키 - 로컬 & 세션 - 서버
- 보안 : 쿠키 < 세션
- 속도 : 쿠키 > 세션
npm install express-session
const session = require('express-session');
app.use(session('옵션 객체'));
...
// req.session.key = value
req.session.id = req.body.id;
// 확인
console.log(req.session);