2012-07-20 3 views
-6

자연스럽게 프론트 엔드 녀석이지만 데이터베이스 디자인과 백엔드 개발자가 지난 며칠간 내 관심을 자극했으며 매우 혼란 스럽다. 나는이 개념을 완전히 이해하여 머리가 더 이상 상처를 입지 않도록하고 싶습니다.데이터베이스 디자인을 나에게 설명하고 관계형 디자인과 비 관계형 디자인

나는 활성 레코드와 유사한 ORM을 처리하는 데 익숙합니다. 레일을 통해 내 사용자 객체를 상상할 때 나는 사람 테이블의 행과 관련이있는 객체를 묘사합니다. 좋아, 기본.

그래서 mongodb와 같은 비 관계형 데이터베이스는 "빠른 속도로 큰 데이터"이기 때문에 멋지다고 생각하지 않지만 oop 언어로 더 자연스럽게 개발하기 때문에 멋지다 (이유는 무엇입니까?). 그렇다면 대부분의 디자인 패턴이 진정으로 관계형이 아닐 수도 있습니다. 좋아, 내가 잃어버린 곳이야.

1) 관계형 디자인과 비 관계형 디자인의 몇 가지 기본적인 예는 무엇입니까? 2) 구조화 된 데이터와 구조화되지 않은 데이터의 예는 무엇입니까? (위에서 언급 한 것입니까?)

그래서 제가 시도한 거의 모든 유형의 프로젝트 에 대비하여 모델링하는 것은 관계형입니다. 하지만 어쩌면 나는 전문성에 대한 의미론을 사용하고있을뿐입니다. 예 : 게시물 및 댓글. 서로 관계가있다. 거기에 사용자를 추가하십시오. 요즘 대부분의 앱에는 다른 데이터/개체를 통해 도달하는 데 항상 유용한 데이터가있는 것 같습니다. 관계가 맞지 않아?

좀 덜 일반적인 것을 설명하는 방법은 어떻습니까?

운동 추적 프로그램을 제작한다고 가정 해 보겠습니다. 나는 사용자, 운동, 운동, 일상 및 log_entries 있습니다.

운동을 그룹화하는 루틴을 만듭니다. 운동은 운동의 그룹입니다. 내 연습 문제의 로그 항목을 통해 내 담당자와 체중을 기록합니다. 이 관계형 데이터 또는 비 관계형 데이터입니까? 몽고는 이것을 모델링하는데 좋을까요?

나는 통계가 나오는 것을 듣는다. 위의 예는 어떻게 영향을 줍니까? 사람들이 일반적으로 말하는 통계는 무엇입니까?

사용자의 체중, 신장, 체지방 등 다른 것들을 추적하는 것을 추가했다고 가정 해 보겠습니다. 그게 어떻게 영향을 미칩니 까?

시간을내어 이해해 주셔서 감사합니다.

편집 : 왜 다른 사람보다 쉽게 ​​개발할 수 있는지 설명 할 수 있습니다. mongo와 같은 것을 좀 더 민첩하게 사용하는 이유는 일단 "ge"하면 "클릭"하고 마이그레이션을 실행할 필요가 없기 때문입니다.

ORM과 같은 추상화를 사용할 때 또 다른 문제는 정말로 중요한가요? 그렇다면 언제? 나에게 초기 값은 데이터를 쿼리하고 객체를 모델링하는 것이 쉽다. 내가 그렇게 쉽게 할 수있게 해주는 것은 내가 행복하게 할 수있는 것입니다. 나는 데이터를 모델링하려고 할 때 내 머리를 긁는다고 진실하게 알 수있다.

+1

[유사한 질문] (http://stackoverflow.com/questions/1145726/what-is-http : 어떻게해야합니까?) 그리고 여러 번 (일반적으로 따로 따로) 묻습니다. 포함 된 질문은 한 가지 대답보다 훨씬 광범위합니다. 가장 좋은 방법은 MongoDB에 대한 책이나 튜토리얼 중 하나를 시작하여 이전의 관계형 데이터베이스 경험과 비교하는 방법을 살펴 보는 것입니다. 예를 들어, [Little MongoDB Book] (http://openmymind.net/2011/3/28/The-Little-MongoDB-Book/)은 유용한 무료 책입니다. – Stennie

+0

Stennie 고맙습니다. 나는 그 링크들을 조사 할 것이다. 감사합니다. :) –

답변

0

OK,

... 내가 그것을 찔러 주자 (면책 조항 :. 나는 비 관계형 데이터베이스와 약간의 실무 경험을 가지고, 그래서 이것은 약간의 "관계 중심"입니다)

관계형 데이터베이스는 "쿠키 커터"(테이블)를 사용하여 많은 수의 균일 한 "쿠키"(이 테이블의 행)를 생성합니다.비 관계형 데이터베이스는 "쿠키"를 형성하는 방법에 대한 더 넓은 범위를 제공하지만 세트 기반 SQL의 성능은 느슨합니다. 정적 대 동적 타이핑과 조금 비슷합니다.

1) 관계형 디자인과 비 관계형 디자인의 몇 가지 기본적인 예는 무엇입니까?

tuple은 정렬 된 속성 목록이고, 관계는 동일한 "모양"의 튜플 세트이며, 테이블은 관계의 실제 표현입니다. 무언가가이 패러다임에 맞으면, 그것은 "관계형"입니다.

금융 거래는 관계형 인 경향이 있지만 (텍스트 문서는 그렇지 않습니다). 사이에 많은 회색 영역이 있습니다. 구조화 대 구조화 된 데이터 (예 무엇 위의 유사

2)이 바로 위의 문구를 수정?)

나도 몰라입니다. 어떻게 "구조화 된"것을 정의합니까?

요즘 대부분의 앱에는 다른 데이터/개체를 통해 도달하는 데 유용한 데이터가있는 것처럼 보입니다. 관계가 맞지 않아?

확실히. 관계형 데이터베이스에는 "포인터"가 없지만 외래 키는 본질적으로 동일한 역할을 수행합니다. JOINS는 일반적으로 FK를 통해 수행되지만 사용자가 적합하다고 생각하는 방식으로 언제든지 데이터에 조인 할 수 있습니다.

운동 추적 프로그램을 만들고 있다고 가정 해 보겠습니다. 나는 사용자, 운동, 운동, 일상 및 log_entries 있습니다.

이것은 관계형 모델에 적합 할 것으로 보입니다.

사용자의 체중, 신장, 체지방 등 다른 것들을 추적하는 것을 추가했다고 가정 해 보겠습니다. 그게 어떻게 영향을 미칩니 까?

아마도 추가 열 및/또는 표가 필요할 것입니다. 이것은 여전히 ​​내게 관계가있다.

사람들은 일반적으로 어떤 통계를 말하는가?

아마 index statistics에 대한 이야기로 비용 기반 쿼리 최적화 프로그램이 더 나은 실행 계획을 선택하는 데 도움이 될까요?

가 왜이 일을 위해 다른

오른쪽 도구를 통해 하나 개발을 쉽게 할 수있다, 기억 나? 데이터 구조를 미리 알고 관계형 모델에 적합한 경우 관계형 데이터베이스를 사용하십시오.

또한 관계형 데이터베이스는 많은 사용자가 과 동시에 액세스하는 방대한 양의 데이터를 관리하는 데 탁월한 경향이 있습니다 (일부 비 관계형 데이터베이스의 경우에도 마찬가지 일 수 있음).

ORM과 같은 추상화를 사용할 때 또 다른 문제는 무엇입니까?

ORM은 쉬운 일을 쉽고 어렵게 만듭니다. 다시 말하지만, 그것은 균형의 문제입니다. 필자가 필요로하는 분야를 정확하게 추출 할 수 있도록 미세 조정 된 SQL을 작성하는 것은 보일러 판 CRUD 작성의 지루함을 극복하기 때문에 ORM에 대한 열렬한 팬이 아닙니다. 다른 사람들은 동의하지 않을 수 있습니다.

나는 모델 데이터를 만들 때 내 머리를 많이 긁어 본다.

음, 큰 주제입니다. 시간과 노력을 들여 넣으려면 ERwin Methods Guide으로 시작하고 다음을 살펴보십시오. Use The Index, Luke!

+1

관련 경험이 없다면 질문에 대답하기가 어렵습니다. 나는 이것이 도움이되는 대답이라고 생각하지 않습니다. 예를 들어, 관계형 데이터베이스를 사용하는 것과 관계없이 데이터 모델에는 * 관련 데이터 *가 포함될 수 있습니다. 관계형 데이터베이스는 일반적으로 참조 무결성을 유지하고 엄격한 스키마를 적용하며 여러 테이블에서 데이터를 쿼리하는 강력한 지원을 포함합니다. 동일한 엄격한 스키마 규칙과 일반적인 정규화로 인해 더 복잡한 쿼리가 생성됩니다. 흥미로운 NoSQL 예제는 [MongoDB and E-Commerce] (http://kylebanker.com/blog/2010/04/30/mongodb-and-ecommerce/)를 참조하십시오. – Stennie

관련 문제