2011-09-24 3 views

답변

5

프로젝트를 구성하는 방법은 지속성에 사용되는 기술에 대한 독립적 인 개념입니다. 특히; UML 또는 ERD 또는 그러한 도구는 데이터베이스를 문서화하는 것 이상으로 관계형 데이터베이스에 특별히 적용되지 않습니다.

NoSQL에 "조인 없음"이 있다는 생각은 어리 석고 도움이되지 않습니다. (대부분의) 문서 데이터베이스가 조인 연산자를 제공하지 않는다는 것이 완전히 맞습니다. 그러나 이것은 조인이 필요할 때 쿼리 언어 대신 응용 프로그램 코드에서 수행한다는 것을 의미합니다. 프로젝트 구성의 기본 사실은 동일하게 유지됩니다.

또 다른 차이점은 문서 데이터베이스는 몇 가지 사항을 더 쉽게 표현하고 다른 것은 어렵게 만듭니다. 예를 들어, 관계형 데이터베이스의 엔티티 관계 제약 조건은 더 쉽지만, 문서 데이터베이스에서 상속 계층 구조를 표현하는 것이 더 쉽습니다. 두 개념 모두 을 지원할 수 있으며 응용 프로그램에서 필요로 할 때 확실히 사용할 수 있습니다. 기술에 관계없이 결국 사용하게됩니다.

간단히 말하면 지속 기술을 선택하지 않고 애플리케이션을 설계해야합니다. 일단 당신이 원하는 것을 유지하고 싶다면, 어떤 기술이 더 잘 맞는지 더 잘 이해할 수 있습니다. 당신이 정말로 필요로하는 것이 둘 모두이거나 당신이 완전히 다른 것을 필요로 할 수도 있습니다.

EDIT : 외래 키에 대한 개념은 단순히 "이것은 그런 종류의 이름입니다"라고 말하는 것 이상으로 이상하지 않습니다. 많은 SQL 데이터베이스가 이런 종류의 일을 처리 할 때 매우 간결하고 유용한 기능을 제공합니다. 특히 제약 조건 (이 열은이 다른 관계를 참조하므로 참조에 해당 행이 없으면 값을 취할 수 없습니다.) 및 계단식 (참조 대상의 상태가 변경되면 참조에 해당하는 변경) 이렇게하면 데이터베이스에 지시 대상이없는 상태로 들어가도록 지시 할 방법이 없으므로 가장 낮은 레벨에서도 데이터 일관성을 유지하는 것이 쉽습니다.

그러나 중요한 점은 데이터베이스 엔터티 (관계형 데이터베이스의 A 행, 문서 데이터베이스의 문서)를 스키마 아이디어의 개념과 구분한다는 아이디어입니다. 문서 데이터베이스에 대한 좋은 점 중 하나는 데이터가있는 곳을 쉽게 결합하거나 방향을 재조정 할 수 있으므로 실제로 존재하는 참조가 항상 필요하지는 않습니다. 대부분의 문서 데이터베이스는 문서 클래스를 키의 일부로 사용하므로 지시 대상이 실제로 존재하지 않는 경우에도 키가 의미 있는지 확인할 수 있습니다.

그러나 대부분의 경우 실제로는 을 수행합니다.은 존재하는 것을 원합니다. 저자가 시스템에 실제로 존재하지 않는 한 블로그 게시물에 작성자가있는 것을 원하지 않습니다. 이것이 얼마나 잘 지원되는지는 특정 문서 데이터베이스에 달려 있습니다. 일부 데이터베이스 do은 트리거 또는 다른 도구를 제공하여 참조의 무결성을 강화하지만 일부는 트랜잭션 기능을 제공하기 때문에 무결성을 응용 프로그램에 적용해야합니다.

요점은 다음과 같습니다. 대부분의 종류의 데이터베이스에서 데이터베이스의 모든 값은 일부 종류의 식별자를가집니다. 관계형 데이터베이스에서는 세 가지 관계가 있습니다. column : key; 문서 데이터베이스에서는 대개 document_class : path 쌍과 같습니다. 하나의 엔티티가 다른 엔티티를 참조해야하는 경우, 그런 종류의 데이터베이스에 대해 해당 데이 M를 식별하는 데 필요한 키를 사용하십시오. RDBMses에서 발견되는 외래 키 제약 조건은 특정 용도에 도움이된다면 다른 방식으로 동등한 힘으로 구현 될 수있는 "추천이 존재하지 않으면 제기 ForeignKeyError"에 대한 (실제로 유용한) 구문 설탕입니다.

+0

감사합니다, 문제는 제가 논문에 뭔가 쓸 필요가있는 프로젝트에 관한 논문을 만들고 싶습니다. 그리고 그들이 다이어그램을 수정할 것이라고 확신합니다. 60 % (또는 그 이상) 여기 엔지니어의 최종 프로젝트 중 하나는 논문을 기반으로하므로 무언가를 찾을 수 있어야하고 "기존의"기술을 만들려고 할 때 " 클래스 다이어그램, 나는 열쇠를 어떻게 연결 하는가에 대한 문제가 있다는 것을 발견했다. 그래서 나는 바퀴를 다시 발명 하는가? – Abdelouahab

+0

다른 문서 데이터베이스는 여러 가지 방법으로 키를 표현합니다. 일부는 실제로 다른 문서를 참조하는 데 사용할 수있는 직렬화 가능 키를 제공하고 다른 일부는 단순히 색인을 생성하고 "키"가 무엇인지 정의해야합니다. 이것은 RDBMses에도 똑같이 적용됩니다. Sqlite3는'rowid'를 가지고 있는데, 이것은 테이블의 모든 행에 대한 고유 한 ID입니다. 많은 다른 것들은 선택적인 autoincrement 기능을 가지고 있으며, 어떤 것들은 GUID가 꼭 맞는 솔루션 인 키 구조를 발명 할 것을 요구합니다. – SingleNegationElimination

+0

하지만 Sqlite에서는 RDBMS이므로 외래 키가 있으므로 MySql으로 시스템을 나타낼 수는 있지만 MongoDB를 사용할 때 어떻게 처리할까요? 그것에 새로운, 그리고 그것은 포인터를 사용하는 것 같습니다? – Abdelouahab

관련 문제