코드스테이츠 - 3회차 백엔드 부트캠프/Section 2

2022.10.06 목 - 데이터베이스 & SQL (2)

곰돌이볼 2022. 10. 6. 16:25

📄 학습내용

스키마(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`);

 

 

주제

  •  

 

 

🧶 발생한 문제 및 해결방법

 

 

 공부 난이도

과제 ☆★★★★