숫자가 인 데이터베이스가 여러 개 있다고 가정 해 보겠습니다. 필드 USER_TYPE, user_status, user_currency 등드롭 다운 목록 항목의 설명 저장 방법을 구성하는 방법
지금내가, 내 웹 사이트 내 페이지에 다른 정보를 함께이 정보를 표시해야 내가 위의 정보 중 일부는
를 인쇄 할 10 페이지가 있다고 가정 할방법 1 다음 내가 임시로
SELECT ...
user_status
...
FROM users
WHERE user_id = 5
같은 것을 통과 내가 쿼리를 쓸 때 내가 할 후반 언어, 난 멋지 V3
를 사용하여 다음 페이지 템플릿 안에 내가
{section ...}
...
{if $users[0].user_status == 1}
New User
{elseif $users[0].user_status == 2}
Application Accepted
{elseif $users[0].user_status == 3}
Payment received
{/if}
...
{/section}
때문에 동일한 코드 같은 것을 기본적으로 10 개의 서로 다른 페이지로 이동하고 내가 뭔가를 변경하거나, 통화 등 새로운 상태를 추가 할 때 내가 가지고 각 페이지로 이동 방법 2
그래서 난에 시작이 걸리는 경우
나는이 방법은 매우 신뢰할 수없는 생각 문 시간에 추가하기 이렇게하면 사용자 상태가있는 다른 테이블을 만들 수 있습니다. tbl_user_statuseds
user_status_id status_name
1 New User
2 Application Accepted
3 Payment received
...
다음 각 페이지에 대한 주요 질의에 나는이
SELECT ...
tbl_user_statuseds.status_name
...
FROM users
LEFT JOIN tbl_user_statuseds ON tbl_user_statuseds.user_status_id = users.user_status
WHERE user_id = 5
같이 할 페이지에 난 그냥 {$users[0].status_name}
사용 전 새 상태를 추가 할 경우이 각 페이지에 편집을합니다. 모든 그러나 두 번째 방법
일단 데이터베이스 테이블 상태에서 새로운 라인을 추가한다 수행해야합니다 난 그냥 숫자 ID 설명을 tbl_user_statuseds를 포함하는 데이터베이스에 현재 약 10 테이블, tbl_currency_names 등 tbl_user_sex
이 METHOD 3 이 ID를 저장하기 위해 테이블을 한 번 사용하는 것이 좋은 방법일까요? 예.
tbl_id_labels
id id_type id_number id_label
421 2 1 New User
422 2 2 Application Accepted
423 2 3 Payment received
424 8 1 USD
425 8 2 EURO
426 5 1 Male
427 5 2 Female
...
그때 단지 할 내가 ID_NUMBER 예에 기초하여 표를 제외한 남아 가입 방법 2와 동일
SELECT ...
tbl_id_labels.status_name
...
FROM users
LEFT JOIN tbl_id_labels ON tbl_id_labels.id_number = users.user_status AND tbl_id_labels.id_type = 2
WHERE user_id = 5
이 방식으로 나는 내 시스템에있는 숫자 ID에 대한 모든 레이블이있는 하나의 테이블 만 가질 수 있습니다. 미래에 추가해야 할 일이 너무 많지 않다면, 모든 문제는 id_type 및 id_number, id은 호환성을위한 것입니다.
세 번째 방법으로 문제가 발생 했습니까? 아니면 더 나은 방법을 조언 할 수 있습니까?
나는 id_type과 id_number 열에 대한 색인을 만들면 세 번째 방법이 지연 될 것이라고 생각하지 않는다. 나는 테이블의 총 크기가 언제나 몇 백 개가 넘는 것을 볼 수 없다. 저는 PHP 접근법에서 필드 이름을 저장하는 것을 좋아합니다. 예를 들어 줄 수 있습니까? –
두 번째 옵션은 세 번째보다 빠르게 작동합니다.이 점에 대해 성능에 대해 썼습니다. 예를 들어 다음과 같습니다 :'function getStatusForId ($ id) {switch ...}'와'echo getStatusForId ($ users [0] .user_status)' –
실제로는 조금 느린 경우에도 방법 3을 선호합니다.이 방법을 사용하면 최종 사용자 (클라이언트)가 상태 이름을 바꾸거나 새로운 상태를 추가 할 수있는 관리 인터페이스에서 페이지를 만들 수 있습니다. 나는 그가 물론 새로운 상태를 삭제 편집하면 프로그램을 중단하지만, 그 프로그램이 모든 물류 (사용자 또는 시스템 프로세스)가 PHP 테이블이 아닌 데이터베이스 테이블에 정의 될 수있는 방법으로 생성 될 수 있다고 믿는다. –