2009-11-06 2 views
4

나는 관계형 데이터베이스가 한 테이블의 필드가 다른 테이블의 행에 연결되어있는 데이터베이스라는 것을 알고있다.'관계형 데이터베이스'의 '관계형'은 우리에게 어떤 의미입니까?

그러나 나는 웹 개발자로서 나를 위해 그것이 무엇을 의미하는지 이해할 수 없다!

아시다시피 조인과 중첩 된 선택을 사용한 쿼리는 성능 (특히 수십 개의 조인이있는 Drupal 스타일 쿼리)을 줄일 수 있습니다. 더군다나 DB에 대한 쿼리는 병목 현상이므로 모든 선택 요청을 캐시해야하는 사용자가 많습니다.

모든 선택 요청을 캐시하면 복잡하지 않고 간단한 요청을 캐시하는 것이 좋습니다. "select * from tbl1 where id = 123"및 "select * from tbl2 where id = 456"또는 "select * from tbl1, tbl2 where ..."를 캐시 할 수 있지만 두 번째 방법을 선택하면 개체의 모든 조합을 캐시해야합니다.

좋아, 이제 "select id from 123"에서 "select tbl1 from id limit 0, 30"을 선택하고 캐시합니다 (또는 첫 번째 유형 만 캐시 할 수 있습니다 쿼리의, 뭐든간에). 쿼리와 덜 단순한 INSERT, DELETE 및 UPDATE가 모두 우리가 필요로하는 것과 우리가 사용하는 모든 것입니다!

모든 관계형 논리는 SQL이 아닌 응용 프로그램의 기본 언어에 있습니다. 그래서, 왜 우리는이 모든 관계적인 것들을 필요로합니까? 그게 무슨 뜻이야? "관계형"유형은 다른 유형이 갖고 있지 않지만 필요한 것은 무엇입니까? 관계형 기능을 사용하지 않는다면 성능을 중요하게 생각하더라도 모든 사용자가 MySQL 또는 관계형 데이터베이스를 사용하는 이유는 무엇입니까?

이 유형의 데이터베이스가 표준이되었습니다. 왜? 나는 단서가 없다. 필자는 GAE의 기능을 제외한 비 관계형 데이터베이스를 사용하는 사람에 대해 거의 들어 본 적이 없습니다.

내가 누락 된 항목이 있습니까?

+3

데이터베이스에 대한 책을 구입하고 정규화에 대해 읽어보십시오. –

+6

@Ken White, 사이트에서 모든 질문을 열고 "[topic]에 대한 책을 사서 그것에 대해 읽어보십시오"라고 적어보십시오. –

+0

* 정규화 *가 유일하기 때문에 * 정말 * 중요합니까? –

답변

11

관계형에 대해 배우고 싶다면 C. J. Date의 "SQL and Relational Theory"을 추천합니다.

이 컨텍스트에서 관계형 과 관계가 없습니다. 그것은 관계을 말하며 이는 기본적으로 relational model으로 이어진 수학적 이론에서 어떤 테이블이 호출되는지를 나타냅니다.

관계형 데이터베이스가 유비쿼터스 화되는 이유는 최소한의 중복성으로 데이터를 구성하기위한 가장 일반적인 목적의 솔루션이라는 것입니다.

비 관계형 솔루션을 사용해야하는 타당한 이유가 있습니다. 이들은 종종 데이터 관리의 특정 작업을 매우 잘 처리하지만 다른 영역에서는 약합니다. 반면 SQL과 관계형 데이터베이스는 절충안을 타파하면서 취약한 영역을 줄이면서 더 큰 문제를 적절하게 해결합니다.

현재 관계형 모델을 기반으로하지 않는 기타 기술은 "The Next-Gen Databases"에 나와 있습니다.

0

데이터를 정규화하고 적자 원 관리를 제거 할 수 있습니다. 모든 데이터를 플랫 테이블 (예 : Excel 스프레드 시트)에 저장하는 대신 이질적인 데이터를 개별 테이블에 저장 한 다음 서로 관련시킵니다.

예를 들어 사용자를 Users 테이블 및 Products 테이블의 제품에 저장 한 다음 관계 테이블을 사용하여 어떤 사용자가 어떤 제품을 주문했는지를 연관시킬 수 있습니다.

사용자 A -> ProductA

사용자 A -> ProductB

사용자 B -> ProductA

에서 UserC -> ProductB 데이터가 변경 될 경우, 정규화 데이터

, 그것이 의미 한 곳에서 업데이트 만하면됩니다. 사용자가 이름을 변경하면 해당 사용자 레코드 만 변경됩니다. 제품 가격 인상이 필요한 경우 해당 제품 레코드 만 변경됩니다. 교체 할 중복 데이터를 찾는 플랫 테이블을 조사 할 필요가 없습니다.

+0

데이터베이스의 관계형이 다른 테이블을 가질 수있는 유일한 유형이라는 것은 무엇을 의미합니까? –

+0

두 가지 테이블을 어떻게 든 연결해야하는 유일한 유형입니다. 나는 관계가 0 인 데이터베이스가 있다고 확신하지만, 실제적인 예를 생각하기가 힘듭니다. – GSto

+0

BigTable은 비 관계형이지만 GAE에서는 테이블을 사용할 수 있으며 이러한 관계를 사용하는 데 문제가 없습니다. 조인을 제외하고 조인은 .. 멋지지 않습니다 :) –

0

질문에 혼란 스럽습니다. 어떻게 다른 테이블이 서로 관련되어 있는지를 어떻게 추적 할 것을 제안하겠습니까?

예를 들어, 나는 자동차 목록과 사람 목록을 가지고 있으며 어느 사람이 각 자동차를 소유하고 있는지 연결해야하므로 사람 데이터베이스에 car_ID 열이 있습니다.이러한 관계를 추적하는 방법을 제안하는 방법

또한 '모든 쿼리가 병목 현상입니다'라고 캐시하면 '단순한'쿼리 만 캐시합니다. 그러나 나는 여러 개의 작은 쿼리를 만드는 것이 여러 개의 작은 쿼리를 만드는 것보다 리소스 집약적 일 것이라고 90 % 확신합니다. 실제로 모든 조합을 캐시 할 필요는 없습니다. 내 예제에서 이와 같은 쿼리에 무엇이 잘못 되었습니까?

SELECT person.*, car.* from person left join on car where person.car_ID = car.ID 
+0

데이터베이스 요청이 응용 프로그램을 느리게하지 않는 동안 아무 것도 잘못되었습니다. 그러면 캐시 할 수 있고 간단한 요청을 캐시하는 것이 더 간단합니다. –

0

관계형 데이터베이스는 여러 가지 이유로 사실상의 데이터베이스가되었습니다.

  1. 설정 차, 외국 및 고유 제한 조건이 가장 낮은 수준에서 특정 비즈니스 규칙을 적용, 데이터 integrety을 보장하는 데 도움이, 그리고 단지 전문 IT의 모든 수준에 대한 데이터베이스 관계를 쉽게 이해할 수 있습니다.

  2. 적절하게 설계된 관계형 데이터베이스는 실제로 모든 프로세스가 아니라 많은 프로세스에서 배경보다 빠릅니다.

  3. 관계형 데이터베이스에 대한 쿼리는 배우기가 매우 쉽고 쉽습니다.

  4. 관계형 데이터베이스는 데이터 중복을 제한하고 데이터 엔지니어링 관점에서 볼 때 훌륭한 요소입니다.

등이 있지만 이것들은 적지 만,

0

관계를 사용하지 않으면 많은 수의 열이있는 거대한 테이블에 모든 것을 저장해야합니다. 또는 데이터 큐브를 사용할 수 있습니까? (제 생각에는?)

+0

아니요, 아니요. 나는 테이블이나 신분증을 잊어 버릴 것을 권한다. 나는 왜 모든 웹 어플리케이션이 단순하거나 거대한지, 쿼리에서 일곱 개의 조인과 같은 불필요한 느린 기능이 많은 DB를 사용하고 데이터베이스 속도에 대해 불평하는지 묻는 중입니다. –

+0

데이터베이스에 여러 테이블이있는 경우 다른 테이블의 레코드를 연결하려면 JOIN이 필요합니다. 우리는 테이블, 컬럼을 RDBMS로 추가, 수정, 제거하는 것은 설계, 유지 보수, 추가, 변경하기 쉽지 않은 비 RDBMS를 파악할 수 없었을 것입니다. – David

0

Valya, 응용 프로그램의 데이터가 추가, 업데이트 또는 삭제되지 않으면 캐시가 검색 및 표시하는 가장 빠른 방법입니다. 나는이 데이터가 모든 사람들이 서둘러보고 싶어하지만 업데이 트되지 않을 것이라는 것을 알고 궁금하다. 일부 세부 사항이 도움이 될 수 있습니다. 필자는 전체 데이터베이스를 연속 기입 캐시로 메모리에 저장 한 사람을 알고 있습니다. 그렇습니다. 그는 누가이 문제를 해결할 수 있는지 알고있는 유일한 개발자입니다. 어쩌면 당신은 로켓 엔진을 재발 명할 필요가있을 것입니다.

0

관계는 테이블에 대한 수학적 단어입니다.열은 서로 관련되어 있습니다. 그렇지 않으면 같은 테이블에 없습니다.

예를 들어, 두 숫자가 3의 배수가 서로 다른 경우 두 숫자는 서로 관련이 있습니다. 몇 가지를 작성해 보겠습니다. (0,0), (1,4), (2, -1) 등등 테이블의 행 컬렉션이 나타납니다.

관련 문제