1

좋은 관계형 데이터베이스를 만드는 데 다소 혼란 스럽습니다. phpmyAdmin을 사용하여 데이터베이스를 만듭니다. 나는 다음의 네 가지 표를 가지고있다. 그 사실에 대해 걱정하지 마십시오. 장소와 가격은 선택 사항입니다.phpMyAdmin (합성 키)을 사용한 데이터베이스 관계

  1. 사람 (필수)
  2. 항목 (필수)
  3. 장소 (선택 사항)
  4. 가격 (선택 사항)

항목은 기본 테이블입니다. 그것은 항상 사람을 연결시켜 줄 것입니다. * 테이블에 대한 mysql 조인을 알고 있습니다. 테이블을 함께 연결하려면 각 테이블의 ID를 사용하여 복합 키를 사용할 수 있지만 테이블을 연결하는 가장 올바른 방법입니까? 또한 항목에 자체 항목을 포함한 5 개의 ID가 있음을 의미합니다. 이것은 모두 null 값을 발생시킵니다 (분명히 큰 아니요, 아니요, 이해할 수 있습니다) 왜냐하면 장소와 가격이 선택 사항이고 item 테이블의 한 항목에 사용되지 않기 때문에 null 값을 갖기 때문입니다. 도와주세요!

미리 감사드립니다. 나는 이것이 의미가 있기를 바랍니다.

답변

2

NULL이

값 또한 항목이 자신을 포함, 5 개 개의 ID를 가질 것을 의미합니다. 거기에이 모든 원인 null 값 (분명히 큰 이해 할 수있는, 아니 아니오) 장소와 가격은 선택 사항이며 항목 테이블에 하나 개의 항목을 사용하지 않으면 내가 가지고 있기 때문에 null 값 개인적으로

내가 이것이 NULL 값이 완벽한 한 가지 상황이라고 생각하고, 내 데이터베이스 설계에이 값을 넣는 것에 대해서는 의심의 여지가 없습니다.

다른 사람들이 NULL 값없이 동일한 결과를 얻는 것을 본 한 가지 방법은 관련된 레코드가 없음을 나타내는 0의 ID를 사용하여 옵션 테이블 (예에서 장소와 가격)에 레코드를 만드는 것입니다. 애플리케이션 개발자가 이러한 레코드를 필터링하기 위해 10 배 더 많은 작업을 수행합니다. 조인을 더 쉽게 수행 할 수 있으며 레코드를 다시 가져 오지 않으면 선택적 테이블에 관련 레코드가 없습니다.

그냥 당신이 Item을 반환 할 경우 LEFT 또는 RIGHT OUTER 조인 관계없이 그들이 Place 또는 Price이 있는지의이야 어떻게 기억 관련 (당신이없는 Item의 선택 사양의 테이블 컬럼에 NULL 값을 얻을 것이다 연관된 레코드)와 INNER이있는 경우 에는 관련된 선택적 레코드가 있습니다.

복합 키

복합 키는 하나 이상의 열 이루어진있어 테이블의 핵심이다. Person, Item, PlacePrice에 모두 ID가있는 경우 (자동 증가 숫자 일지라도) 복합 키는 필요하지 않습니다. 각 테이블의 기본 키 열과 각 관련 테이블에 대한 Item 테이블 - 예 item_id, person_id, place_id, price_id.Item에는 자체 ID가 있으므로 복합 키는 필요하지 않으므로 item_id 열에 기본 키만 있으면됩니다.

+0

올바른 ID를 INSERT에 입력하는 방법은 무엇입니까? 예를 들어 내가 삽입 할 때 다른 테이블에 대한 올바른 ID를 얻지 못한다면 mysql 문에서이 작업을 수행해야합니까? –