“어떤 관계”를 어떻게 모델링해야합니까?


12

Software라는 엔터티와 FreeSoftware 및 NonFreeSoftware라는 두 가지 하위 유형이 있다고 가정합니다. NonFreeSoftware 엔티티에는 구매 날짜, 공급 업체 등과 같은 속성이 있습니다. FreeSoftware 엔티티에는 라이센스, 소스 코드 URL 등과 같은 속성이 있습니다.

다른 운영 체제 인 OperatingSystem을 모델링하려면 어떻게해야합니까? 소프트웨어와 "존재"관계는 있지만 FreeSoftware 및 NonFreeSoftware와는 "관계"입니다.

이 계층 구조를 분석하는 방식에 뭔가 빠진 것 같습니다.


이 답변을 검토 하십시오 . 이러한 종류의 관계를 모델링하는 구현 세부 사항을 다룹니다.
Nick Chammas 2016 년

답변:


8

이를 관리하는 방법은 하위 유형을 수퍼 유형으로 결정해야한다는 것입니다 (즉, 하위 유형의 PK도 하위 유형에서 수퍼 유형으로의 FK입니다).

문제는 무언가가 상호 배타적인지 아닌지를 이해하는 것입니다. 하위 유형의 속성은 해당 하위 유형에만 적용되어야하지만 일부 하위 유형은 상호 배타적이며 일부는 그렇지 않을 수도 있습니다.

상호 배타적 인 하위 유형이있는 경우 수퍼 유형에 파티셔닝 속성을 사용하여 상호 배타적 인 하위 유형 중 둘 이상을 적용 할 수 있습니다. 이 파티셔닝 속성은 제약 조건이나 트리거와 함께 사용하여 상호 독점 성을 강화할 수 있습니다.

상호 배타적이지 않은 하위 유형이 있으면 분할 속성을 사용하지 않고 존재할 수 있습니다.

이 데이터 모델을 고려하십시오.

ERD

세 가지 수퍼 유형이 있지만 플래그 분할 속성 에 따라 FREE_SOFTWARENON-FREE_SOFTWARE유형은 상호 배타적 SOFTWARE.free_not_free입니다. 주어진 소프트웨어 OPERATING_SYSTEM는 자유 여부에 관계없이 잠재적으로 소프트웨어 일 수 있습니다.


1
약간 OT :이 ER 다이어그램을 만들기 위해 무엇을 사용 했습니까?
Daniel Serodio

@DanielSerodio-James Martin ERD 표기법을 기반으로 직접 만든 스마트 한 모양의 Visio를 사용했습니다. 셰이프는 사용자 정의 선 텍스처를 사용하여 비공식적 인 모양을 제공합니다. 다이어그램이 "스케치"또는 초안 디자인 일 때 사람들에게 상기시키는 데 도움이됩니다.
Joel Brown

@JoelBrown 스텐실을 기꺼이 공유 하시겠습니까? 이들은 정말 좋은 모양입니다
imoatama

2
@imoatama-오랜 시간이 지났지 만 마침내 스텐실을 게시했습니다. moosewarevisioerd.codeplex.com 스텐실의 스마트 모양은 이전 버전의 Visio 및 일부 동작에 대해 작성되었다는 설명에서 관계 커넥터 모양은 약간 틀릴 수 있습니다. 언젠가 나는 이것을 고치기 위해 갈 것이다.
Joel Brown

1

운영 체제가 완전히 새로운 엔터티 인 이유는 무엇입니까? 그것은 소프트웨어에 해당해야합니다. 그리고 OS (폐쇄 소스 인 경우)에는 구매 날짜, 공급 업체 등이 있고 오픈 소스 OS에는 라이센스, 소스 코드 URL 등이 있습니다.

나는 SoftwareType그 라인을 따라 또는 다른 것에 관계를 추천합니다 . 그때는 소프트웨어가 OS인지 응용 프로그램인지 또는 지원하는 다른 유형의 소프트웨어인지 지정할 수 있습니다.


소프트웨어 전문화되어 있으므로 운영 체제를 별도의 엔터티로 만들고 싶습니다. 다른 소프트웨어가 갖지 않는 속성 (커널 유형, RTOS-or-not 플래그, 다중 사용자 플래그 등)을 가질 수 있습니다.
jl6

1
@ jl6 나는 여전히 여기서달라고 간청합니다. 모든 소프트웨어 (OS인지 아닌지)는 특정 속성을 갖습니다. 그것들은 다른 곳에 저장 될 수 있습니다. OS를 별도로 유지하여 확장 성을 최소화하고 있습니다.
Thomas Stringer 2016 년

올바르게 이해하면 소프트웨어 엔터티 및 SoftwareType 엔터티를 권장합니다. Free, NonFree 및 OperatingSystem은 모두 SoftwareType의 다른 인스턴스라고 말하고 있습니까? 나는 당신이 정확하다고 확신하지만 다른 유형의 다양한 속성을 어디에 저장합니까?
jl6
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.