> 백엔드 개발 > PHP 튜토리얼 > 하나의 기본 테이블과 다양한 유형의 부록을 디자인하는 방법은 무엇입니까?

하나의 기본 테이블과 다양한 유형의 부록을 디자인하는 방법은 무엇입니까?

WBOY
풀어 주다: 2016-08-18 09:15:30
원래의
1838명이 탐색했습니다.

예를 들어 다음 블로그가 있습니다. 이 블로그에 저장된 데이터는 비교적 복잡합니다.

영화 데이터:
음악 데이터:
제품 데이터:
사진 데이터를 저장할 수 있습니다. :
소프트웨어 데이터:
이렇게 많은 데이터를 저장하려면 테이블을 어떻게 디자인해야 할까요?
각 데이터 유형에는 고유한 특성이 있습니다. 예를 들어 음악에는 작사자와 작곡가가 있고, 사진에는 픽셀이 있습니다.
테이블을 갖고 데이터의 각기 다른 특성을 필드에 제공하는 것은 불가능합니다.
그런데 테이블로 나누어 보면 일반 테이블은 종류와 ID 등 기본 정보를 기록하는데, 하나의 테이블은 영화 데이터, 하나의 테이블은 사진 데이터 등... 이 경우 모든 데이터를 여러 테이블을 쿼리하면 비효율성이 발생합니다.
더 나은 디자인 솔루션이 있나요?

답글 내용:

예를 들어 다음 블로그가 있습니다. 이 블로그에 저장된 데이터는 비교적 복잡합니다.

영화 데이터:
음악 데이터:
제품 데이터:
사진 데이터를 저장할 수 있습니다. :
소프트웨어 데이터:
이렇게 많은 데이터를 저장하려면 테이블을 어떻게 디자인해야 할까요?
각 데이터 유형에는 고유한 특성이 있습니다. 예를 들어 음악에는 작사자와 작곡가가 있고, 사진에는 픽셀이 있습니다.
테이블을 갖고 데이터의 각기 다른 특성을 필드에 제공하는 것은 불가능합니다.
그런데 테이블로 나누어 보면 일반 테이블은 종류와 ID 등 기본 정보를 기록하는데, 하나의 테이블은 영화 데이터, 하나의 테이블은 사진 데이터 등... 이 경우 모든 데이터를 여러 테이블을 쿼리하면 비효율성이 발생합니다.
더 나은 디자인 솔루션이 있나요?

mongodb 문서 등 nosql에 저장할 수 있습니다.
밭에 얽매이지 마세요.

주제가 mysql5.7을 사용하는 경우 json와 같이

유형으로 데이터를 저장할 필드를 설정할 수 있습니다.
<code>//其他數據字段...


//电影数据,音乐数据等設計爲json
{
    “move”: {
    
    },
    "music" : {
    
    }
    
    //.......
}

</code>
로그인 후 복사

테이블을 나눈 후 앞면과 뒷면의 논리를 별도로 작성해야 합니다.

프론트에서 열람할 때 메인 테이블 데이터를 직접 읽지 마세요. 특정 유형의 부록 테이블을 사용하여 메인 테이블을 연결하고 쿼리하세요.

백그라운드는 메인 테이블 정보를 직접 읽어오지만, 첨부된 테이블은 읽지 않습니다. 백그라운드 목록에는 메인 테이블의 데이터만 표시됩니다. 꼭 첨부된 테이블의 데이터를 표시해야 하는 경우에는 넣어두시면 됩니다. 세부정보 페이지입니다. 각 부록에 특정 필드를 표시해야 한다면 일부 성능을 희생할 가치가 있습니다. 또한 이 필드가 모든 부록에 공통이라면 기본 테이블에도 언급해야 합니다

2층을 참고하셔도 되지만, 그래도 단일 형태의 데이터베이스를 원하신다면 워드프레스의 라이브러리 디자인을 참고하시면 됩니다... 비메인이나 가변형 속성을 키 형태로 보조 테이블 저장소에 설계합니다. -value... 개념은 nosql과 동일하지만... 관계형 데이터베이스를 사용하여 구현됩니다

또는 EAV 구조 설계를 사용할 수 있습니다. 테이블은 데이터만 저장하고 그 위에 코드 레이어를 추가하여 다양한 유형의 데이터 요구 사항을 충족할 수 있습니다.
구체적인 방법은 EAV로 검색해 보세요. Magento는 이 방법으로 구현된 온라인 상점입니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿