📄 학습내용
스키마(schema)
- 스키마(schema) : 데이터베이스에서 데이터 구성방식과 다른 엔티티 간의 관계에 대한 설명
- 관련 용어
- 엔티티(Entity) : 고유한 정보의 단위(보통 테이블 자체를 의미)
- 필드(field) : 엔티티의 속성, 특징(관계형 데이터베이스의 테이블에서 열에 해당)
- 레코드(record) : 테이블에 저장된 항목(관계형 데이터베이스의 테이블에서 행에 해당, 데이터 자체)
- 1:N(one-to-many, 일대다) : 하나의 엔티티가 다른 엔티티를 하나 이상의 관계를 가지는 형태
- N:N(many-to-many, 다대다) : 두 엔티티가 서로 하나 이상의 관계를 가지는 형태
- 기본키(primary key) : 고유값으로 자동으로 증가, 각 테이블의 레코드들을 구분하기 위해서 사용
- 테이블 당 하나의 기본키를 가지지만, 기본키로 여러 개의 컬럼을 가질 수 있음
- 외래키(foreign key) : 다른 테이블의 기본키를 참조할 때 사용하는 값
- 1:N일 때 적절한 테이블 생성하기
- N에 해당하는 테이블에 외래키를 이용해서 테이블 생성
- N:N일 때 적절한 테이블 생성하기
- join 테이블 생성 → 1:N 방식(1은 join 테이블, N은 원래 테이블)을 변형해서 N:N 형식의 관계 표현
멘토님 과제
CREATE TABLE `users` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`username` varchar(50),
`password` varchar(50)
);
CREATE TABLE `posts` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`image` blob,
`message` text,
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`total_likes` INT DEFAULT 0,
`total_comments` INT DEFAULT 0,
`user_id` INT
);
CREATE TABLE `post_comments` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`comment` varchar(255),
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`user_id` INT,
`post_id` INT
);
CREATE TABLE `post_likes` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`user_id` INT,
`post_id` INT
);
CREATE TABLE `follow_follower` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`follower_id` INT,
`user_id` INT
);
CREATE TABLE `posts_hashtags` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`hashtag_id` INT,
`post_id` INT
);
CREATE TABLE `hashtags` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` char(50)
);
ALTER TABLE `posts` ADD FOREIGN KEY (`user_id`) REFERENCES `users`(`id`);
ALTER TABLE `follow_follower` ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);
ALTER TABLE `post_comments` ADD FOREIGN KEY (`post_id`) REFERENCES `posts`(`id`);
ALTER TABLE `post_comments` ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);
ALTER TABLE `post_likes` ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);
ALTER TABLE `post_likes` ADD FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`);
ALTER TABLE `posts_hashtags` ADD FOREIGN KEY (`hashtag_id`) REFERENCES `hashtags`(`id`);
ALTER TABLE `posts_hashtags` ADD FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`);
ALTER TABLE `follow_follower` ADD FOREIGN KEY (`follower_id`) REFERENCES `users`(`id`);
주제
🧶 발생한 문제 및 해결방법
- 문제점) 문자열 정렬
- 해결방법) https://www.techiedelight.com/ko/sort-string-java/
⭐ 공부 난이도
과제 ☆★★★★
'코드스테이츠 - 3회차 백엔드 부트캠프 > Section 2' 카테고리의 다른 글
2022.10.11 화 - Spring 기초 (0) | 2022.10.11 |
---|---|
2022.10.17 금 - 데이터베이스 & SQL (3) (0) | 2022.10.07 |
2022.10.05 수 - 데이터베이스 & SQL (1) (0) | 2022.10.05 |
2022.10.14 화 - Rest API, Postman (0) | 2022.10.04 |
2022.09.30 금 - (0) | 2022.09.30 |