- 수정 후
MySQL 용
-- 1. area_tb (지역 테이블)
CREATE TABLE area_tb (
code VARCHAR(255) PRIMARY KEY, -- 지역 코드
name VARCHAR(255) NOT NULL -- 지역 이름
);
-- 2. sigungu_tb (시군구 테이블)
CREATE TABLE sigungu_tb (
id INT AUTO_INCREMENT PRIMARY KEY, -- 시군구 ID
code VARCHAR(255), -- 시군구 코드
name VARCHAR(255), -- 시군구 이름
area_code VARCHAR(255), -- 지역 코드 (외래 키)
CONSTRAINT fk_sigungu_area FOREIGN KEY (area_code) REFERENCES area_tb(code)
);
-- 3. content_tb (컨텐츠 테이블)
CREATE TABLE content_tb (
content_id VARCHAR(255) PRIMARY KEY, -- 컨텐츠 ID
addr1 VARCHAR(255), -- 주소 1
addr2 VARCHAR(255), -- 주소 2
area_code VARCHAR(255), -- 지역 코드
booktour VARCHAR(255), -- 북투어
cat1 VARCHAR(255), -- 카테고리 1
cat2 VARCHAR(255), -- 카테고리 2
cat3 VARCHAR(255), -- 카테고리 3
content_type_id VARCHAR(255), -- 컨텐츠 유형 ID
created_time VARCHAR(255), -- 생성 시간
first_image VARCHAR(255), -- 첫번째 이미지 URL
first_image2 VARCHAR(255), -- 두번째 이미지 URL
cpyrht_div_cd VARCHAR(255), -- 저작권 코드
map_x VARCHAR(255), -- 지도 X좌표
map_y VARCHAR(255), -- 지도 Y좌표
mlevel VARCHAR(255), -- 지도 확대 레벨
modified_time VARCHAR(255), -- 수정 시간
sigungu_code VARCHAR(255), -- 시군구 코드
tel VARCHAR(255), -- 전화번호
title VARCHAR(255), -- 제목
zipcode VARCHAR(255), -- 우편번호
view_count VARCHAR(255), -- 조회수
like_count VARCHAR(255) -- 좋아요 수
);
-- 4. count_info_tb (조회수 및 좋아요 수 테이블)
CREATE TABLE count_info_tb (
content_id VARCHAR(255) PRIMARY KEY, -- 컨텐츠 ID (외래 키)
view_count VARCHAR(255), -- 조회수
like_count VARCHAR(255), -- 좋아요 수,
CONSTRAINT fk_count_info_content FOREIGN KEY (content_id) REFERENCES content_tb(content_id)
);
-- 5. festivalinfo_tb (축제 정보 테이블)
CREATE TABLE festivalinfo_tb (
content_id VARCHAR(255) PRIMARY KEY, -- 컨텐츠 ID (외래 키)
content_type_id VARCHAR(255), -- 컨텐츠 유형 ID
sponsor1 VARCHAR(255), -- 후원자 1
sponsor1_tel VARCHAR(255), -- 후원자 1 전화번호
sponsor2 VARCHAR(255), -- 후원자 2
sponsor2_tel VARCHAR(255), -- 후원자 2 전화번호
event_end_date VARCHAR(255), -- 이벤트 종료일
play_time VARCHAR(255), -- 공연 시간
event_place VARCHAR(255), -- 이벤트 장소
event_homepage VARCHAR(255), -- 이벤트 홈페이지
age_limit VARCHAR(255), -- 연령 제한
booking_place VARCHAR(255), -- 예약 장소
place_info VARCHAR(255), -- 장소 정보
sub_event VARCHAR(255), -- 서브 이벤트
program VARCHAR(255), -- 프로그램
event_start_date VARCHAR(255), -- 이벤트 시작일
use_time_festival VARCHAR(255), -- 축제 이용 시간
discount_info_festival VARCHAR(255), -- 축제 할인 정보
spend_time_festival VARCHAR(255), -- 축제 소요 시간
festival_grade VARCHAR(255), -- 축제 등급
serial_num VARCHAR(255), -- 시리얼 넘버
info_name VARCHAR(255), -- 정보 이름
fldgubun VARCHAR(255), -- 구분
origin_img_url VARCHAR(255), -- 원본 이미지 URL
img_name VARCHAR(255), -- 이미지 이름
small_image_url VARCHAR(255), -- 작은 이미지 URL
cpyrht_div_cd VARCHAR(255), -- 저작권 코드
view_count VARCHAR(255), -- 조회수
like_count VARCHAR(255) -- 좋아요 수
);
-- 6. restaurantinfo_tb (레스토랑 정보 테이블)
CREATE TABLE restaurantinfo_tb (
content_id VARCHAR(255) PRIMARY KEY, -- 컨텐츠 ID (외래 키)
content_type_id VARCHAR(255), -- 컨텐츠 유형 ID
title VARCHAR(255), -- 제목
created_time VARCHAR(255), -- 생성 시간
modified_time VARCHAR(255), -- 수정 시간
tel VARCHAR(255), -- 전화번호
tel_name VARCHAR(255), -- 전화번호 이름
home_page VARCHAR(255), -- 홈페이지
book_tour VARCHAR(255), -- 북투어
first_image VARCHAR(255), -- 첫번째 이미지 URL
first_image2 VARCHAR(255), -- 두번째 이미지 URL
cpyrht_div_cd VARCHAR(255), -- 저작권 코드
area_code VARCHAR(255), -- 지역 코드
sigungu_code VARCHAR(255), -- 시군구 코드
cat1 VARCHAR(255), -- 카테고리 1
cat2 VARCHAR(255), -- 카테고리 2
cat3 VARCHAR(255), -- 카테고리 3
addr1 VARCHAR(255), -- 주소 1
addr2 VARCHAR(255), -- 주소 2
zipcode VARCHAR(255), -- 우편번호
map_x VARCHAR(255), -- 지도 X좌표
map_y VARCHAR(255), -- 지도 Y좌표
mlevel VARCHAR(255), -- 지도 확대 레벨
over_view TEXT, -- 개요
seat VARCHAR(255), -- 좌석 정보
kids_facility VARCHAR(255), -- 어린이 시설
first_menu VARCHAR(255), -- 대표 메뉴
treat_menu VARCHAR(255), -- 취급 메뉴
smoking VARCHAR(255), -- 흡연 여부
packing VARCHAR(255), -- 포장 여부
info_center_food VARCHAR(255), -- 음식 정보 센터
scale_food VARCHAR(255), -- 음식 규모
parking_food VARCHAR(255), -- 주차 시설
open_date_food VARCHAR(255), -- 오픈 날짜
open_time_food VARCHAR(255), -- 오픈 시간
rest_date_food VARCHAR(255), -- 휴무일
discount_info_food VARCHAR(255), -- 할인 정보
chk_credit_card_food VARCHAR(255), -- 신용카드 가능 여부
reservation_food VARCHAR(255), -- 예약 가능 여부
lcns_no VARCHAR(255), -- 라이센스 번호
origin_img_url VARCHAR(255), -- 원본 이미지 URL
img_name VARCHAR(255), -- 이미지 이름
small_image_url VARCHAR(255), -- 작은 이미지 URL
serial_num VARCHAR(255), -- 시리얼 넘버
view_count VARCHAR(255), -- 조회수
like_count VARCHAR(255) -- 좋아요 수
);
-- 7. tourism_info_tb (관광 정보 테이블)
CREATE TABLE tourisminfo_tb (
content_id VARCHAR(255) PRIMARY KEY, -- 컨텐츠 ID (외래 키)
serial_num VARCHAR(255), -- 시리얼 넘버
title VARCHAR(255), -- 제목
created_time VARCHAR(255), -- 생성 시간
modified_time VARCHAR(255), -- 수정 시간
home_page VARCHAR(255), -- 홈페이지
first_image VARCHAR(255), -- 첫번째 이미지 URL
first_image2 VARCHAR(255), -- 두번째 이미지 URL
addr1 VARCHAR(255), -- 주소 1
map_x VARCHAR(255), -- 지도 X좌표
map_y VARCHAR(255), -- 지도 Y좌표
overview TEXT, -- 개요
origin_img_url VARCHAR(255), -- 원본 이미지 URL
img_name VARCHAR(255), -- 이미지 이름
small_image_url VARCHAR(255), -- 작은 이미지 URL
cpyrht_div_cd VARCHAR(255), -- 저작권 코드
info_center VARCHAR(255), -- 정보 센터
open_date VARCHAR(255), -- 개장 날짜
rest_date VARCHAR(255), -- 휴무일
exp_guide VARCHAR(255), -- 체험 가이드
exp_age_range VARCHAR(255), -- 체험 연령대
accom_count VARCHAR(255), -- 수용 인원
use_season VARCHAR(255), -- 이용 계절
use_time VARCHAR(255), -- 이용 시간
parking VARCHAR(255), -- 주차 시설
chk_baby_carriage VARCHAR(255), -- 유모차 가능 여부
chk_pet VARCHAR(255), -- 애완동물 가능 여부
chk_credit_card VARCHAR(255), -- 신용카드 가능 여부
info_name VARCHAR(255), -- 정보 이름
info_text TEXT, -- 정보 내용
view_count VARCHAR(255), -- 조회수
like_count VARCHAR(255) -- 좋아요 수
);
-- 8. review_tb (리뷰 테이블)
CREATE TABLE review_tb (
id INT AUTO_INCREMENT PRIMARY KEY, -- 리뷰 ID
context TEXT, -- 리뷰 내용
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 생성 시간
rating DOUBLE, -- 별점
is_deleted BOOLEAN, -- 삭제 여부
content_id VARCHAR(255), -- 컨텐츠 ID (외래 키)
user_id INT, -- 사용자 ID (외래 키)
festival_info_id VARCHAR(255), -- 축제 정보 ID (외래 키)
tourism_info_id VARCHAR(255), -- 관광 정보 ID (외래 키)
restaurant_info_id VARCHAR(255), -- 레스토랑 정보 ID (외래 키)
CONSTRAINT fk_review_content FOREIGN KEY (content_id) REFERENCES content_tb(content_id),
CONSTRAINT fk_review_user FOREIGN KEY (user_id) REFERENCES user_tb(id),
CONSTRAINT fk_review_festival FOREIGN KEY (festival_info_id) REFERENCES festivalinfo_tb(content_id),
CONSTRAINT fk_review_tourism FOREIGN KEY (tourism_info_id) REFERENCES tourisminfo_tb(content_id),
CONSTRAINT fk_review_restaurant FOREIGN KEY (restaurant_info_id) REFERENCES restaurantinfo_tb(content_id)
);
-- 9. scrap_tb (스크랩 테이블)
CREATE TABLE scrap_tb (
id INT AUTO_INCREMENT PRIMARY KEY, -- 스크랩 ID
user_id INT, -- 사용자 ID (외래 키)
content_id VARCHAR(255), -- 컨텐츠 ID (외래 키)
is_scrap BOOLEAN, -- 스크랩 여부
CONSTRAINT fk_scrap_user FOREIGN KEY (user_id) REFERENCES user_tb(id),
CONSTRAINT fk_scrap_content FOREIGN KEY (content_id) REFERENCES content_tb(content_id)
);
-- 10. user_tb (사용자 테이블)
CREATE TABLE user_tb (
id INT AUTO_INCREMENT PRIMARY KEY, -- 사용자 ID
login_id VARCHAR(20) UNIQUE NOT NULL, -- 로그인 ID
password VARCHAR(255) NOT NULL, -- 패스워드
profile VARCHAR(255), -- 프로필 사진 URL
nickname VARCHAR(255) UNIQUE NOT NULL, -- 닉네임
email VARCHAR(255), -- 이메일
phone VARCHAR(13) -- 전화번호
);review_tb 테이블에서 사용된 외래 키(FOREIGN KEY)는 다른 테이블과의 관계를 정의합니다. 각 외래 키가 어떤 테이블을 참조하는지 설명드리겠습니다.- content_id (
CONSTRAINT fk_review_content FOREIGN KEY (content_id) REFERENCES content_tb(content_id)): content_tb테이블의content_id컬럼을 참조합니다.- 리뷰가 특정 컨텐츠와 연관될 때, 그 컨텐츠의 ID를 저장합니다.
- user_id (
CONSTRAINT fk_review_user FOREIGN KEY (user_id) REFERENCES user_tb(id)): user_tb테이블의id컬럼을 참조합니다.- 리뷰를 작성한 사용자의 ID를 저장하며, 사용자의 정보와 연결됩니다.
- festival_info_id (
CONSTRAINT fk_review_festival FOREIGN KEY (festival_info_id) REFERENCES festivalinfo_tb(content_id)): festivalinfo_tb테이블의content_id컬럼을 참조합니다.- 축제 정보에 대한 리뷰일 경우, 해당 축제의 ID를 저장합니다.
- tourism_info_id (
CONSTRAINT fk_review_tourism FOREIGN KEY (tourism_info_id) REFERENCES tourisminfo_tb(content_id)): tourisminfo_tb테이블의content_id컬럼을 참조합니다.- 관광 정보에 대한 리뷰일 경우, 그 관광지의 ID를 저장합니다.
- restaurant_info_id (
CONSTRAINT fk_review_restaurant FOREIGN KEY (restaurant_info_id) REFERENCES restaurantinfo_tb(content_id)): restaurantinfo_tb테이블의content_id컬럼을 참조합니다.- 레스토랑 정보에 대한 리뷰일 경우, 해당 레스토랑의 ID를 저장합니다.
이 외래 키들은
review_tb 테이블이 각각의 관련된 테이블과 연관성을 가지며 데이터 일관성을 유지하도록 돕습니다. 예를 들어, 삭제 또는 업데이트 시 참조된 데이터의 상태도 반영될 수 있습니다.Share article