문제

이 질문을 읽었습니다. 식별 및 비 식별 관계의 차이점은 무엇입니까?

그러나 나는 아직도 확실하지 않습니다 ... 내가 가진 것은 세 테이블입니다.

  1. 사용자
  2. 사물
  3. 영화

사용자는 많은 객체를 소유 할 수 있으며 개별 객체 당 많은 사진을 게시 할 수도 있습니다. 내 직감은 이것이 객체 테이블에 userID가 필요하기 때문에 이것이 식별 관계라고 말하고 그림 테이블에 객체가 필요하기 때문입니다 ...

아니면 내가 틀렸어? 다른 주제에 대한 설명은 데이터베이스가 실제로 코딩 된 후에 해석 한 후에 해석하는 방식에 대한 이론적 설명으로 제한됩니다. 데이터베이스를 구축하는 방법에 대해 생각할 때 식별 대 식별을 결정하는 방법에 대해 혼란스러워합니다.

도움이 되었습니까?

해결책

둘 다 나와의 관계를 식별하는 것처럼 들립니다. 일대일 또는 일대일, 그리고 다수의 용어를 들었다면 일대일 관계 ~이다 관계 식별, 그리고 다수의 관계 ~이다 비 식별 관계.

  • 자녀가 부모를 식별하면 식별 관계입니다. 당신이 주신 링크에서, 당신이 전화 번호가있는 경우, 당신은 그것이 속한 사람을 알고 있습니다 (그것은 하나 일뿐입니다).

  • 자녀가 부모를 식별하지 않으면 비 식별 관계입니다. 링크에서는 상태를 언급합니다. 상태를 분위기를 나타내는 테이블의 줄로 생각하십시오. "행복"은 특정 사람을 식별하지 않지만 많은 사람들을 식별합니다.

편집하다: 기타 실생활 예 :

  • 물리적 주소는 많은 사람들이 한 주소에 상주 할 수 있기 때문에 비 식별 관계입니다. 반면에 이메일 주소는 식별 관계입니다.
  • 사회 보장 번호는 한 사람에만 속하기 때문에 식별 관계입니다.
  • YouTube 비디오에 대한 의견은 하나의 비디오에만 속해 있기 때문에 관계를 식별하고 있습니다.
  • 그림의 원본에는 하나의 소유자 (식별) 만있는 반면, 많은 사람들이 그림을 재 인쇄 할 수 있습니다 (비 식별).

다른 팁

시각화하는 더 쉬운 방법은 부모없이 자녀 기록이 존재할 수 있는지 스스로에게 물어 보는 것이라고 생각합니다. 예를 들어, 주문 라인 항목에는 주문 헤더가 존재해야합니다. 따라서 주문 라인 항목에는 키의 일부로 주문 헤더 식별자가 있어야하므로 이는 식별 관계의 예입니다.
반면에, 사람의 소유권 없이는 전화 번호가있을 수 있지만, 사람은 여러 전화 번호가있을 수 있습니다. 이 경우, 전화 번호를 소유 한 사람은 소유자와 상관없이 전화 번호가 존재할 수 있기 때문에 전화 번호 또는 비 식별 관계입니다. , 주문 헤더 식별자는 null이 될 수 없습니다.

Nickc는 다음과 같이 말했습니다 : 일대일 관계는 관계를 식별하고 있으며, 다수의 관계는 비 식별 관계입니다.

설명은 나에게 완전히 잘못된 것 같습니다. 당신은 가질 수 있습니다 :

  • Ono-to-One 비 식별 관계
  • 일대일 비 식별 관계
  • 일대일 식별 관계
  • 일대일 식별 관계
  • 다수의 식별 관계

다음 테이블이 있다고 상상해보십시오. customer, products 그리고 feedback. 그들 모두는 customer_id 이에 존재합니다 cutomer 테이블. 그래서 닉크 정의 관계는 없어야합니다. 어떤 종류의 많은 식별 관계를 식별하는 관계가 있지만, 내 예에서는 다음을 명확하게 볼 수 있습니다. 피드백은 관련 제품이 존재하고 고객이 구매 한 경우에만 존재할 수 있으므로 고객, 제품 및 피드백은 식별해야합니다..

당신은 볼 수 있습니다 MySQL 매뉴얼, MySQL 워크 벤치에도 외래 키를 추가하는 방법을 설명합니다.

마디, 당신의 본능은 정확합니다. 이것은 중복 질문 이며이 상향 투표 답변은 정확하거나 완료되지 않습니다. 여기에서 상단 두 가지 답변을보십시오.비 식별 식별의 차이

비 식별과 비 식별하는 것은 정체성과 관련이 없습니다. 단순히 자녀 기록이 부모없이 존재할 수 있습니까? 대답이 예라면, 그것은 비 식별입니다.

아동의 주요 키에 부모의 외국 키가 포함되어 있는지 여부 핵심 문제. 비 식별 관계에서 아동의 주요 키 (PK)에는 외국 키 (FK)가 포함될 수 없습니다.

이 질문에 스스로에게 물어보십시오

  • 아동 기록이 부모 기록없이 존재할 수 있습니까?

자녀가 부모없이 존재할 수 있다면 관계는 식별되지 않습니다. (고맙습니다 몬트리올 데본 더 명확하게 말하면)

일대일 식별 관계

사회 보장 번호는이 범주에 잘 맞습니다. 예를 들어, 사회 보장 번호는 사람과 함께 존재할 수 없다고 상상해 봅시다 (아마도 우리 데이터베이스에서는 그렇지 않을 수도 있지만) person_id PK가 될 것입니다 사람 A와 같은 열을 포함한 테이블 이름 그리고 주소. (간단하게 유지합시다). 그만큼 Social_Security_Number 테이블에는 다음이 포함됩니다 SSN 칼럼과 person_id 외국 열쇠로 열. 이 FK는 PK로 사용될 수 있으므로 Social_Security_Number 테이블 식별 관계입니다.

일대일 비 식별 관계

큰 사무실 단지에는 당신이 가질 수 있습니다 사무실 바닥별 객실 번호와 PK가있는 건물 번호와 별도의 건물 번호가 포함 된 테이블 직원 테이블. 직원 테이블 (자식)에는 FK가 있습니다. Office_id 열의 열 사무실 표 pk. 각 직원은 하나의 사무실 만 가지고 있지만 (이 예를 위해) 모든 사무실에는 직원이 하나만 있습니다. 직원이 없으면 사무실이 존재할 수 있기 때문에 직원은 사무실을 변경하거나 현장에서 일할 수 있기 때문에 비 식별 관계입니다.

일대일 관계

동일한 질문을함으로써 일대일 관계를 쉽게 분류 할 수 있습니다.

다수의 관계

다수의 관계는 항상 관계를 식별하고 있습니다. 이것은 직관적 인 것처럼 보일지 모르지만 나와 함께 견딜 수 있습니다. 두 테이블을 가져 가십시오 리바리 그리고 서적, 각 도서관에는 많은 책이 있으며 각 책의 사본은 많은 도서관에 존재합니다.

다음은 그것을 만들고 관계를 식별하는 이유는 다음과 같습니다.이를 구현하려면 각 테이블의 기본 키인 두 개의 열이있는 링크 테이블이 필요합니다. 그들을 부르십시오 Library_ID 칼럼과 ISBN 열. 이 새로운 링크 테이블에는 별도의 기본 키가 없지만 기다려주세요! 링크 테이블의 중복 레코드는 의미가 없기 때문에 외래 키는 링크 테이블의 다중 열 기본 키가됩니다. 그만큼 연결 부모님과 함께 존재할 수 없습니다. 따라서 이것은 식별 관계입니다. 알아요, yuck 맞죠?

대부분의 경우 관계 유형은 중요하지 않습니다.

그 말에 따르면, 보통 당신은 당신이 가진 것에 대해 걱정할 필요가 없습니다. 각 테이블에 적절한 기본 및 외국 키를 할당하면 관계가 자체적으로 발견됩니다.

편집하다: 니콜렉, 나는 그것을 읽었다 대답 당신은 연결되어 있고 그것은 나의 것과 동의합니다. 나는 SSN에 대한 그의 요점을 취하고 그것이 나쁜 예라고 동의합니다. 또 다른 명확한 예를 생각하려고 노력할 것입니다. 그러나 데이터베이스 관계를 정의 할 때 실제 유사성을 사용하기 시작하면 비유가 항상 분해됩니다. SSN이 사람을 식별하는지 여부는 중요하지 않습니다.이를 외국 키로 사용했는지 여부는 중요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top