단일 테이블을 사용하지 마십시오. 관계형으로 이동하십시오.
설정을 권장하는 것은 "기본"테이블 (공통 특성이있는 테이블)과 특정 정보가 포함 된 세 테이블 사이의 소위 다형성 관계입니다.
기본 테이블
- ID
- 제목
- ...
- 범주 이름 (VARCHAR 또는 CHAR)
- CATEGORY_ID (정수)
: 구조는 다음과 같을 것
카테고리 테이블
CATEGORY_NAME 필드는 예를 들면 특정 범주 테이블의 테이블 명을 포함한다.'job_category'이고 category_id는 카테고리 테이블의 ID를 가리켜 야합니다. 예는 다음과 같을 것이다 :
# MAIN TABLE
id | title | ... | category_name | category_id
-------------------------------------------------------
123 | Some title | ... | job_category | 345
321 | Another title | ... | sale_category | 543
# SPECIFIC TABLE (job_category)
id | ...
---------
345 | ...
# SPECIFIC TABLE (sale_category)
id | ...
---------
543 | ...
을 이제 메인 테이블을 쿼리 할 때마다, 당신은 즉시에서 추가 데이터를 가져 오기 위해 어떤 테이블 알 것이다, 당신은 그 테이블의 ID를 알 수 있습니다. 이 방법의 유일한 단점은 하나의 단일 항목에 대한 정보를 가져 오기 위해 두 가지 별도의 쿼리를 수행해야한다는 것입니다. 그러나 트랜잭션에서이 작업을 수행 할 수도 있습니다.
다른 방법으로 데이터를 가져 오는 경우 (예 : jobs_category에서 항목을 검색하는 경우), JOIN을 사용하여 주 테이블에서 관련 데이터를 가져올 수 있습니다. main.category_id = jobs_category.id뿐만 아니라 category_name 열을 조인 조건으로 사용하는 것을 잊지 마십시오. 그렇지 않으면 다른 범주 중 하나에 속한 데이터를 가져올 수 있습니다.
최적의 성능을 얻으려면 category_name 및 category_id 열의 색인을 할 수 있습니다. 이는 이전 단락에서 설명한 것처럼 두 테이블을 조인하는 모든 쿼리의 속도를 향상시킵니다.
희망이 도움이됩니다.