2010-12-08 6 views
1

내 ASP.NET 응용 프로그램에 대해 매우 간단한 데이터베이스 디자인을 그립니다. 약간의 도움으로 여기저기서 디자인을 구현할 수 있었지만이 테이블에 데이터를 삽입하고 검색하려고합니다. 내 응용 프로그램에서복잡 한 데이터베이스 조작

alt text

매우 중요한 기능은 특정 레코드에 대한 모든 (7 개) 테이블의 모든 정보가 필요합니다, 때때로 나는 내 응용 프로그램 관련 모든 종류의 데이터를 받아 각각 배치 확인해야합니다 오른쪽 테이블의 데이터의 조각

내 질문은 :

  1. 이 같은 큰 디자인을 가지고 정상입니까? 실제 응용 프로그램을 위해 큰 것인가?
  2. 새 꼬마를 추가하고 싶다면 모든 테이블에 필요한 필수 정보를 모두 채워야 할 필요가 있습니다. 데이터를 받아들이 기 위해 일부 입력이있는 큰 양식이 있지만 어떻게 삽입합니까? 내 데이터베이스에 그것들?
  3. 모든 아이들을 선택하려면이 디자인을 기반으로 한 선택 진술은 무엇입니까?

PS : 두 개의 테이블 사이에 (M : M) 관계가있는 경우 세 번째 테이블 (관계에있는 두 개의 테이블 각각에 대해 두 개의 기본 키가 있음)을 고려하십시오.

저는 JOINs와 모든 것에 익숙하지만 큰 디자인에는 적용되지 않습니다 ... HELP! 미리 감사드립니다.

+0

모든 아이들을 선택하려면, 함께 포함 된 모든 정보를 원하십니까? 즉 좋아하는 장난감, 기술, 부모 등을 알고 싶습니까? – guildsbounty

+0

@ guildsbounty - SADLY! 나는 모든 정보를 필요로합니다 (Fav Toy, Skills, Parents, Sponsers, 스폰서 십 유형, 작업 분야) 저는 그것이 특별히 감각이 좋지 않다는 것을 알고 있습니다. – lKashef

+6

겁 먹게해서 미안하지만 아주 작은 데이터베이스 디자인입니다. –

답변

6

매우 놀랍지 만 아주 작은 데이터베이스 디자인입니다.

웹 응용 프로그램 용 데이터베이스 디자인을 처음 시작했을 때, 나는 신조를 발견했습니다. 다행스럽게도 내가 사용했던 버팀목은 무료 도구 인 NORMA에서 사용할 수 있습니다.이 도구는 Visual Studio 2008 또는 2005 (2010 년 지원 예정)에서 작동합니다.

나는 당신의 디자인에 대한 빠른 추측을 만들어 다음과 같은 ORM 모델을 가지고 :

Kids and Sponsors

가 많은 관계로 많은 필요한 접합 테이블을 포함하여 10 개 개의 테이블과 데이터베이스에 LED가.

NORMA 도구는 여러 데이터베이스에 대해 모델에서 DDL을 생성 할 수 있으며 XML 스키마와 LINQ to SQL 개체도 만들 수 있습니다.


BTW, 여기에 생성 된 데이터베이스의 ER 다이어그램 : 당신은 하나의 결과 집합이 모두를 필요로하는 이유

ER


내가 보이지 않는,하지만 여기에있어 내가 생각하기에이 쿼리는 모든 것을 반환 할 수 있습니다. 나는 (왼쪽 가입) 선택되는 경로를 알 수 있도록 ORM 다이어그램을 보면이 쿼리를 생성

SELECT k.KidId, k.Name, k.FavoriteToy, 
    s.SponsorId, s.Name, 
    st.SponsorShipTypeCode, st.Description AS SponsortshipTypeDescription, 
    fw.FieldOfWorkCode, fw.Description AS FieldOfWorkDescription, 
    Skill.SkillCode, Skill.Description AS SkillDescription, 
    Parent.ParentId, Parent.Name AS ParentName 
FROM Kid k 
LEFT OUTER JOIN KidHasParent ON KidHasParent.KidId = k.KidId 
INNER JOIN Parent ON Parent.ParentId = KidHasParent.ParentId 
LEFT OUTER JOIN KidHasSkill ON KidHasSkill.KidId = k.KidId 
INNER JOIN Skill ON Skill.SkillCode = KidHasSkill.SkillCode 
LEFT OUTER JOIN Sponsor s ON s.SponsorId = k.SponsorId 
INNER JOIN SponsorIsOfSponsorShipType Sst ON Sst.SponsorId = s.SponsorId 
INNER JOIN SponsorShipType st ON st.SponsorShipTypeCode = sst.SponsorShipTypeCode 
LEFT OUTER JOIN SponsorParticipatesInFieldOfWork sfw ON sfw.SponsorId = s.SponsorId 
INNER JOIN FieldOfWork fw ON fw.FieldOfWorkCode = sfw.FieldOfWorkCode 

다음 도구 (ApexSQL 편집)을 사용하여 사용 : 나는 데이터를이 테스트하지 않았습니다 조인을 만드는 외래 키. 이것은 10 분이 걸렸다.

+0

John 감사합니다.이 도구에 대해 듣는 것이 처음입니다. 내 정보를 선택하는 데 도움이되지 않습니까? 얼마나 좋은가? 내 말은 실제 응용 프로그램과 제 일자리에 의존 할 수 있습니까? 또는 ADO.NET 및 LinqToSql 작성하는 것이 좋습니다? – lKashef

+0

데이터베이스 모델을 만들고 DDL을 생성한다는 점에서 절대적으로 의존 할 수 있습니다. 이 도구는 얼마전에 나왔지만 2002 년에 사용했던 원래의 "신조"를 만든 사람들이 유지 관리하고 있습니다. Visio for Enterprise Architects의 "개체 역할 모델링"기능 이었지만 이제는 이 무료 도구. "무료"부분은 단순히 향상된 기능이 비용을 지불하는 것처럼 빨리 오지 않는다는 것을 의미합니다. 예를 들어 VS2010 지원은 한 달 이내에 종료되어야합니다. –

+0

미안하지만 존, 난 여전히 한 번에 모든 데이터를 선택하는 내 선택 쿼리를 얻는 방법을 볼 수 없습니다. 나는 이미 디자인 부분을 마쳤습니다. 노력해 주셔서 감사합니다. VS2010이 나옵니다.하지만 많은 도움이 될 예제 SELECT 문을 도울 수 있다면! – lKashef

3
  1. 이것은 큰 디자인이 아니라 작은 것입니다. 귀하의 응용 프로그램을 더욱 발전 시키면 성장할 것입니다.

  2. 사용자 인터페이스에서 다양한 값을 수집하고 데이터베이스 엔진에 보낼 일련의 INSERT 문을 준비하여 테이블에 정보를 저장합니다. 각 INSERT는 테이블에 행을 추가합니다. 데이터베이스 생성 ID를 사용하는 경우 INSERT 사이에서 값을 검색하고 그 값을 후속 INSERT 문의 일부로 사용해야합니다.

  3. 단일 테이블에서 데이터를 가져 오는 하나 이상의 SELECT 문 또는 여러 테이블에서 JOIN 데이터를 가져 와서 데이터를 다시 가져옵니다. 이러한 JOINED SELECT 문이 중요하고 자주 사용되는 개념을 구성한다는 것을 알게되면 일부 VIEW에서 캡슐화하도록 선택할 수 있습니다.

+0

롤 정말 정말 작습니다! 선택에 대한 모든 예제를 제공 할 수 있습니까 .. 또는 내 데이터 검색을 달성하는 데 사용할 수있는 방법 간의 비교? – lKashef

3

귀하의 질문에 대답하려고합니다 :

  1. 이것은 아주 작은 디자인입니다. 직장에서 현재 진행중인 프로젝트에는 150 개의 테이블이 있으며, 가지고있는 테이블과 다릅니다.

  2. 아이를 새로 입력하는 것이 이상적입니다. 키드 테이블에만 데이터를 입력해야합니다. GUI 관점에서이를 시각화하는 가장 쉬운 방법은 데이터베이스 테이블 당 하나의 GUI 테이블을 갖는 것입니다. 그렇게하면 부모님, 스폰서, 기술, 작업 분야 등을 자신의 양식으로 지정할 수 있습니다.

  3. 필요에 따라 각 어린이에게 제공하는 정보의 양은 얼마나되는지 스스로에게 물어야합니다. 부모님, 좋아하는 장난감, 스폰서, 기술 등을 가진 아이들의 목록을 보여주는 인터페이스는 너무 혼잡하게 될 것입니다.응용 프로그램에 따라, 어떤 데이터를 보여줄지 더 자세히 설명하고 싶을 것입니다. 예를 들어, 아이를 이름으로 지정할 때 아이에 대한 모든 정보를 나열 할 수 있습니다. 배관공 (스폰서의 작업 분야)이 후원하는 아이들을 질문 할 필요가 있다면, 좋아하는 장난감이 무엇인지 상관하지 않을 것입니다.

+0

point one (Y) note taken .... point 2와 3은 잘 알려져 있지만 사람들에게 한번에 모든 정보를 선택하는 것이 적절하거나 최적이라고는 보이지 않지만, 그의 응용 프로그램은 자신의 특정 용도로 매우 복잡합니다 ... 결국 결국 정말 특정 또는 세트의 아이들에 대한 모든 정보를 검색해야합니다! ... 조언을 주셔서 감사합니다 :) 그리고 만약 당신이 이미 몇 가지 코드로 나를 도울 이러한 사례와 familliar 있습니다! – lKashef