2013-02-25 4 views
1

지금까지 몇 가지 프로젝트를 보았습니다. 외래 키를 사용하지 않는 프로젝트 (테이블은 링크되어 있지 않음)가 있다는 사실을 알았지 만 실제로 테이블이 연결된 프로젝트가 있습니다. 응용 프로그램을 개발에 관해서응용 프로그램 데이터베이스 모델

내가 SQLITE3를 사용 iOS에 대한 응용 프로그램을 개발하고 있어요

어느 하나가 가장 좋은 방법은?

답변

0

FKS을 갖는 것은 조금 관리되는 메모리를하는 것과 같다 - 시스템 자체는 상관없이 애플리케이션의 구현에 잘못 방법을 심각하게, 당신은 "매달려 포인터"를 만들어 보자하지 않습니다 .

외래 키는 데이터 무결성을 유지 관리하는 데 필수적입니다. 그들은 :

  • 선언 :이 응용 프로그램의 구현의 깊이에 묻혀 명령형 코드보다 그들 "명백한"더 자기 문서화한다.
  • 강력한 : 단순히 하나 버그 응용 프로그램 수 데이터, 그것은 는 응용 프로그램에서 회피 할 수없는 데이터 무결성을 시행하는 중앙기구를 가지고하는 것이 중요입니다 그래서 손상된. 확장
  • : 동시 환경에서 FKS 구현은 정확하게는 애플리케이션 레벨에서 가능한 것보다 일반적 DBMS에 훨씬 더 효율적으로 수행 할 수있는 적절한 동시성 제어 (예 잠금)을 필요로한다.

정직하게 말하자면, SQLite와 같은 임베디드 데이터베이스에서는 여러 클라이언트 응용 프로그램이 동일한 데이터베이스에 정기적으로 액세스하는 "큰"클라이언트 - 서버 데이터베이스만큼 중요하지 않습니다. 그러나 임베디드 환경에서 FK를 사용하는 것은 단점이 없으므로 역사적인 이유로 너무 제한되지 않을 때마다해야합니다.

1

모범 사례는 외래 키를 갖는 것입니다. 개인적으로 관계형 데이터베이스에 외래 키가 없다는 생각은 내게 외국적입니다. (말장난을 용서하십시오) 외래 키는 참조 무결성을 강화하는 데 도움이됩니다.

+0

나는 항상 대학에서 이런 식으로 배웠지 만, 이것은 내가 기업에서 본 것이 아니다 ... – periback2

+1

예, 알아요. 길버트 르 블랑 (Gilbert Le Blanc)이 말한 것처럼이 중 일부는 레거시 시스템에서 나온 것이라고 말하면서 일부는 게으르거나 너무 개발이 어려웠 기 때문에 개발자를 떠나는 개발자로부터 온다. – jfin3204

0

과거에는 응용 프로그램이 데이터베이스의 일부로 외래 키가없는 계층 적 또는 네트워크 데이터베이스를 기반으로 구축되었습니다. 외래 키는 응용 프로그램에서 코딩해야했습니다.

이러한 응용 프로그램은 많은 발로 차고 소리를 지른 후에 결국 관계형 데이터베이스로 마이그레이션되었습니다.

코드는 변경되지 않았으며 개발자는 응용 프로그램의 일부로 외래 키를 계속 유지 관리했습니다. 2011 년 IDMS에서 DB2로 마이그레이션 된 응용 프로그램을 유지 관리하는 데 도움이됩니다.

0

iOS 용 앱을 개발하고 있으므로 개체 모델 디자인과 데이터베이스 (테이블) 디자인이 손에 들어갑니다. (데이터 배관 코드가 훨씬 쉬워집니다. 그렇지 않으면 데이터 배관 코드를 조정해야합니다. 언제든지 응용 프로그램을 변경할 수 있습니다. 그것이 말하게되면, 당신이 당신의 객체에 부모 - 자식 관계를 가진 선박 (one-one 또는 one-many 매핑)이 있다면 그것은 foreign key 테이블에 저장되어야합니다. '부모'개체가 기본 테이블로 이동합니다. '자식'개체는 외래 키 테이블로 이동합니다.

요구 사항이 매우 간단하면 XML로 정보를 저장하는 것도 고려해 볼 수 있습니다. 그렇다면 DB 스키마 디자인에 대해 걱정할 필요가 없습니다. 당신의 고려 사항에 대한 하나 개의 유용한 링크

http://www.informit.com/articles/article.aspx?p=1019623

0

왜 레일 프레임 워크가 데이터베이스에서도 이러한 관계를 만드는 것처럼 보이지 않는지 궁금합니다. 그는 Active Record를 사용하여 이러한 관계를 수행합니다.

관련 문제