2021-01-20 커뮤니티팀 회의가 진행되었다.
먼저 회의 결과는 이러하다.
1. 뉴스 피드팀과 게시판 팀을 나누어서 초안을 짠 후 코딩하기.
2. 진우 오빠랑 내가 attribute를 MySQL에 넣을 영어이름으로 만들고 CREATE문을 만들기.
3. 게시판 종류 관련 아이디어 issue에 등록하기
--> 이 과정에서 발생한 issue는 모두 업데이트 할 것.
+ 채팅 서비스와 관리자 페이지 생성은 추후에 다시 회의
+ 커뮤니티 팀 정기 회의 : 수요일 아침 10시 (망했다.)
아무튼 저번에 재완오빠가 만든 DB설계도를 바탕으로 영어로 이름을 변환시키고 테이블을 만들었다.
이전에 웹 페이지를 만들 때 SELECT문을 써서 하나하나 B 테이블에서 정보를 불러와 A 테이블의 컬럼에 데이터를 저장시켰었는데, Foreign Key라는 것이 있어 CREATE할 때 바로 테이블 간의 상호작용이 가능한 것을 알았다.
*Foreign key란?
외래키, 두 테이블을 연결하는데 사용된다.
B 테이블의 b라는 컬럼의 데이터를 A테이블의 a 컬럼에 적용시키고 싶은 상황에서,
CREATE TABLE A(
a INT,
FOREIGN KEY (a) REFERENCES B(b)
)
다음과 같이 코딩해주면 된다.
최종 생성된 MySQL 이다.
CREATE TABLE User(
user_ID VARCHAR(2000) PRIMARY KEY,
age INT,
sex INT,
name VARCHAR(2000),
nickname VARCHAR(2000),
email VARCHAR(2000),
phonenumber VARCHAR(2000),
tokenone VARCHAR(2000),
tokentwo VARCHAR(2000),
profile_url LONGTEXT,
main_server VARCHAR(2000),
admin_type INT,
stop_date DATE,
temperature FLOAT
)
CREATE TABLE Board(
board_ID INT PRIMARY KEY,
user_ID VARCHAR(2000),
heart_num INT,
content LONGTEXT,
reply_num INT,
upload_time DATETIME,
complain_num INT,
board_name VARCHAR(2000),
FOREIGN KEY(user_ID) REFERENCES User(user_ID)
)
CREATE TABLE Post(
post_ID INT PRIMARY KEY,
post_content VARCHAR(2000),
post_hit INT,
FOREIGN KEY(post_ID) REFERENCES Board(board_ID)
)
CREATE TABLE Heart(
board_ID INT,
user_ID INT,
heart_ID INT PRIMARY KEY,
FOREIGN KEY (board_ID) REFERENCES Board(board_ID),
FOREIGN KEY (user_ID) REFERENCES User(user_ID)
)
CREATE TABLE Reply(
reply_ID INT PRIMARY KEY,
board_ID INT,
user_ID INT,
reply_content LONGTEXT,
FOREIGN KEY(board_ID) REFERENCES Board(board_ID),
FOREIGN KEY(user_ID) REFERENCES Board(user_ID)
)
CREATE TABLE Re_reply(
re_reply_ID INT PRIMARY KEY,
reply_ID INT,
user_ID VARCHAR(2000),
re_reply_content LONGTEXT,
FOREIGN KEY(reply_ID) REFERENCES Reply (reply_ID),
FOREIGN KEY(user_ID) REFERENCES User (user_ID)
)
+ 추가
게시글 테이블에서 upload_time을 TIMESTAMP 자료형으로 바꿀 수 있다.
TIMESTAMP는 타임존에 영향을 받기 때문에 time_zone 시스템 변수에 입력된 시간대 정보를 기반으로 데이터를 입력받아 그 정보를 UTC로 변환하여 저장한다.
- time_zone 시스템 변수 : 서버가 현재 동작하면서 사용하고 있는 시간을 나타낸다.
- UTC : Universal Time Coordinated, 협정 세계시
CREATE TABLE Board(
upload_time TIMESTAMP default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
)
+ FOREING KEY에 모두 ON DELETE CASCADE ON UPDATE CASCADE를 추가하자는 의견이 나왔다.
CASCADE란 ?
cascade에 대해 알아보기 전에 CONSTRAINT에 대해 알아보겠다.
CONSTRAINT는 제약조건, 즉 사용자가 원하는 데이터만 걸러내도록 하는 것이다.
CONSTRAINT [제약 ID] [제약내용](칼럼명)
'Server > DB' 카테고리의 다른 글
MariaDB 외부 SQL 파일 실행 및 한글 깨짐 오류 해결 (0) | 2021.10.14 |
---|---|
DB 설계 및 네이버 클라우드 서버 구축/Putty 연결/Workbench 연결 및 쿼리 전송 (2) | 2021.08.01 |
[mushmarket] 프로젝트 진행 방향 및 요구사항 설정 (0) | 2021.01.28 |