데이터 주입
댕댕감자

<aside>
👤 Member
- member_id
- email
- nickname
- login_type (GOOGLE, KAKAO 중 하나)
</aside>
| 순서 |
컬럼명 |
데이터타입 |
설정 |
이유 |
| 1 |
member_id |
INT |
PRIMARY KEY AUTO_INCREMENT |
|
| 2 |
email |
VARCHAR(320) |
UNIQUE |
|
| NOT NULL |
|
|
|
|
CHECK (email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$') | - 이메일 주소의 길이는 보통 254자 미만입니다. 실제 문자열의 길이에 따라 저장 공간을 효율적으로 사용할 수 있음
- 이메일 주소는 일반적인 문자열 데이터로 간주.
-VARCHAR 타입은 인덱싱이 가능하능
- CHAR는 고정 길이 문자열을 저장하므로 데이터 공간을 더 낭비할 수 있음
- TEXT는 긴 문자열을 저장하는 데 사용되어 VARCHAR보다는 더 큰 저장 공간을 사용.
-일반적으로 RFC 5321 및 RFC 5322에 정의된 최대 이메일 주소 길이인 320자를 기준으로 정의하는 것이 좋음
- 이유
- 이메일은 @을 기준으로 로컬파트와 도메인파트로 나뉨
- 로컬파트는 64자리, 도메인 파트는 255자리
- 총 길이는 @포함 320자리 |
| 3 | nickname | VARCHAR(20) | UNIQUE
NOT NULL | - 닉네임은 일반적으로 문자열로 표현되며, 문자열의 길이는 다양할 수 있습니다.
- VARCHAR 데이터 타입을 선택하여 가변 길이 문자열을 저장하는 것이 효과적입니다.
-가장 흔한 길이 제한은 20자에서 50자 사이입니다.
-일반적으로 닉네임의 길이는 20자 정도로 제한하는 것이 일반적입니다. 이는 대부분의 웹 사이트 및 애플리케이션에서 사용되는 일반적인 제한 길이입니다.
가독성: 너무 긴 닉네임은 사용자들에게 가독성 문제를 일으킬 수 있습니다. 너무 길게 입력된 닉네임은 화면에 표시되는 공간을 넘어갈 수 있으며, 사용자들이 이를 인식하기 어렵게 만들 수 있습니다.
데이터베이스 공간: 닉네임은 사용자들이 자주 사용하는 정보 중 하나이므로, 저장 공간의 효율성도 중요합니다. 너무 긴 닉네임은 데이터베이스의 저장 공간을 낭비할 수 있습니다. 20자로 제한하면서도 일반적인 사용자의 닉네임을 수용할 수 있는 범위로 설정할 수 있습니다.
UX(사용자 경험): 닉네임은 사용자 간에 식별을 위한 목적으로 사용되는 경우가 많습니다. 닉네임이 너무 길면 사용자들이 기억하기 어려울 수 있으며, 편리한 사용자 경험을 저해할 수 있습니다. 20자로 제한하면 사용자가 쉽게 닉네임을 입력하고 기억할 |
| 4 | login_type | VARCHAR(10) | NOT NULL | |
<aside>
💡 Inquiry
- inquiry_id
- member_id
- content
- is_checked
- is_registed
</aside>
| 순서 |
컬럼명 |
데이터타입 |
설정 |
이유 |
| 1 |
inquiry_id |
INT |
PRIMARY KEY AUTO_INCREMENT |
|
| 2 |
member_id |
INT |
FOREIGN KEY |
|
| 3 |
content |
TEXT |
NOT NULL |
- TEXT 데이터 타입은 매우 긴 문자열을 저장하는 데 사용 |
- 이메일 내용, 긴 설명, 블로그 글 등을 저장할 때 유용
- 문자열 길이에 대한 제한이 없어 매우 큰 텍스트를 저장할 수 있음
- 주의할 점: 인덱싱이 제한될 수 있음. |
| 4 | is_checked | TINYINT(1) | | - SQL 표준에 따르면 BOOLEAN은 공식적으로는 존재하지 않는 데이터 타입 이지만 TINYINT는 정수형 데이터 타입으로 표준 SQL에서 지원.
- 따라서 TINYINT를 사용하면 데이터베이스 간의 이식성이 높아질 수 있음. |
| 5 | is_registed | TINYINT(1) | | - SQL 표준에 따르면 BOOLEAN은 공식적으로는 존재하지 않는 데이터 타입 이지만 TINYINT는 정수형 데이터 타입으로 표준 SQL에서 지원.
- 따라서 TINYINT를 사용하면 데이터베이스 간의 이식성이 높아질 수 있음. |
<aside>
#️⃣ Hashtag
- hashtag_id
- hashtag
</aside>
| 순서 |
컬럼명 |
데이터타입 |
설정 |
이유 |
| 1 |
hashtag_id |
INT |
PRIMARY KEY AUTO_INCREMENT |
|
| 2 |
hashtag |
VARCHAR(255) |
|
|
- 데이터 전처리 후 확정 | UNIQUE
NOT NULL | - 일반적으로 해시태그와 키워드를 저장하는 경우, VARCHAR 데이터 타입을 사용하는 것이 많은 경우에 적합
- 해시태그나 키워드의 예상 최대 길이에 따라 결정합니다. 일반적으로 몇십 자에서 수백 자로 제한
- 보통 해시태그가 단어 하나로 제한되는 경우에는 CHAR나 VARCHAR를 선택하는 것이 합리적일 수 있음 |
<aside>
➰ Category
- category_id
- category
</aside>
| 순서 |
컬럼명 |
데이터타입 |
설정 |
이유 |
| 1 |
category_id |
TINYINT(3) |
PRIMARY KEY AUTO_INCREMENT |
- 카테고리 수 5개이므로 크기는 3으로 |
- 0-255 범위 내의 정수값을 저장하는 TINYINT 데이터타입으로 처리할 수 있다. TINYINT를 사용하면 데이터의 저장공간을 절약할 수 있고, 숫자형 데이터 타입의 연산이 빠르게 처리된다. |
| 2 | category | VARCHAR(20) | UNIQUE
NOT NULL | 우리 데이터 카테고리 제일 긴게 4글자
참고)
- 일반적으로 대부분의 카테고리명은 짧고, 255자 이하로 충분히 표현할 수 있다.
- 한글의 경우 3개씩 사용하므로 85글자를 표시할 수 있는데, 이 정도면 충분. 오히려 너무 긴 카테고리를 제한하는게 좋을 수도 있다. |
<aside>
📷 Photo
- photo_id
- image
- member_id
</aside>
| 순서 |
컬럼명 |
데이터타입 |
설정 |
이유 |
| 1 |
photo_id |
INT |
PRIMARY KEY AUTO_INCREMENT |
|
| 2 |
image |
VARCHAR(2048) |
NOT NULL |
- RFC 3986에서 명시된 규격에 따르면 URL의 최대 길이는 2,048자로 정의. 이는 URL 스킴, 호스트, 경로, 쿼리 문자열 및 프래그먼트 등을 모두 포함한 전체 URL의 길이를 의미함. |
- GET방식에서 최대 URL 길이 제한은 2048자라고 한다. |
| 3 | member_id | INT | FOREIGN KEY | |
<aside>
💬 Review
- review_id
- score
- member_id
- place_id
</aside>