SQL Server를 사용하여 M : 1 관계를 만들어야하지만 "많은"쪽을 나타내는 열이 외래 키 여야하고 "한 쪽"을 나타내는 열이 기본이어야하는지 궁금해했습니다. 키. 목적은 "many"면을 나타내는 열이있는 테이블을 사용하여 "one"면을 나타내는 열이있는 테이블에서 정보를 검색하는 것입니다. 이 아이디어가 합리적이며 성공적으로 작동 할 수 있습니까? "다"쪽을 나타내는 열이 외래 키와 기본 키해야한다 "일"쪽을 나타내는 열을해야하는 경우SQL M : 1 관계
1
A
답변
1
것이 궁금했습니다.
많은면을 나타내는 열은 실제로 테이블의 기본 키이며 한면을 나타내는 열도 다른 테이블의 기본 키입니다. 그러나 그들 중 하나에 새로운 열이 있습니다. 서로를 연결하는 외래 키입니다 (이 열은 관계가 하나가되는 열이며, 이는 사용자가 신경 써야하는 열입니다).
그래서 두 테이블로 만들어야합니다. 다음을 예로 들어 보겠습니다.
국가 및 도시 관계 : 한 국가에 많은 도시가 있습니다.
이
은 두 개의 테이블로 표현 될 것이다 :Countries
:
CountryID
기본 키,Name
합니다.
Cities
:
CityID
기본 키 1,CountryId
외래 키 참조Countries(ID)
,Name
.
그리고 그 다음과 같이 하나 개의 관계에 많은 만드는 방법입니다 :
- 열
CountryID
및CityID
은 두 테이블의 기본 키입니다. - 한면을 나타내는 열
CountryID
은 많은면에서 외래 키 (cities
표)입니다.당신이 도시에 둘 이상의 나라에있을하려는 경우가 아니면당신은Cities
에 기본 테이블 대신 복합 키을 가져야한다 : 즉,
일해야하는 열입니다 동시에.
관련 문제
- 1. 코어 데이터 1 : M 관계 디스플레이 레코드
- 2. LINQ to SQL - 조건에 따른 관계 제한 (1 - M)
- 3. 웜을 사용하여 1-m 관계 구현
- 4. m/m/1 대기열 예
- 5. 1 : m 및 m : m 관계 : 백엔드 목록의 관련 요소에 대한 정보 제공
- 6. 집행의 일관성 : m 관계
- 7. 절전 1 : M 관계 행 순서 상수 값 테이블과 병행
- 8. SQL 성능 n/m 관계 모델링의 장점/단점
- 9. 1 : N의 관계 및 SQL 쿼리
- 10. SQL : 관계 수 == 1 인 사용자를 선택하십시오.
- 11. 1 : M 관계에 대한 데이터 기반 1 : 1 제약 적용
- 12. Django 1-1 관계 방법
- 13. 데이터베이스 디자인 1 : 1 관계
- 14. EF4, Npgsql, M : M 관계, "메서드 또는 연산이 구현되지 않았습니다." :/
- 15. 1 x m 매트릭스의 크기?
- 16. grails. 도메인 클래스. 1 : m
- 17. 1 대 다수 관계
- 18. 1-n 관계
- 19. MySQL의 - 1 : N 관계
- 20. 종류 : 1 개 관계
- 21. 1 대 다수 관계
- 22. N : M 관계 및 레코드 삭제
- 23. 목표 c : 메서드 관계 .h 및 .m
- 24. 1 : m 관계의 테이블 부분에 데이터를 삽입하는 것에 관한 질문
- 25. 여러 "1 - 0..1"관계 모델
- 26. 1 대 1 관계 코어 데이터 iOS
- 27. Hibernate JPA 주석 1 - 0..1 관계
- 28. C# EntityFramework saving 1-1 관계
- 29. 1 : 1..0 교리가있는 임베디드 형식의 관계
- 30. 데이터베이스에서 1 : 1..n 관계 모델링
당신 정말이 경우에 동일한 기본 키의 이름,'ID'와 테이블을 생성 촉진해서는 안된다 그것은 질의의 혼란을 만든다. 'countries'와'city_id' 키를 호출하는 것으로서'국가'와'도시'를 예제로 제시했기 때문에 무엇이 잘못 되었습니까? 또한 도시가 하나 이상의 '국가'에 동시에 있기를 원하지 않는 한, '도시'에 합성 키가 있어야합니다. – Tony
@ 토니 - 나는 기존 데이터베이스에서 내 대답에있는 다이어그램을 사용했습니다. 그러나 나는 최근에 LINQ to SQL과 Hibernate를 ORM으로 사용했기 때문에이 방법을 사용했습니다. 그래서'ID'는 프라이 머리 키로 사용되었습니다. 왜냐하면 응용 프로그램에서'City.ID'와'country.Id'가 될 것이기 때문입니다. 하지만 데이터베이스 쿼리에 해당하는 경우에 동의합니다. 그래서 칼럼리스트에서'CountryID'와'Cityid'를 사용했습니다. 이제 해결되었습니다. 감사합니다. –
@ 토니 - 두 번째 요점은 예제 였고 디자인을 단순화하려고했습니다. –