2015-04-12 3 views
0

Я создал базу данных для категоризации людей, подающих заявки на государственное жилье, одна из этих категорий имеет инвалидность или родственник заявителя, но у меня есть боролся с нормализацией таблицы: я изучил разные ответы на сайте, и это лучший вариант я пришел с:две таблицы, ссылающиеся на одну таблицу через справочную таблицу

    family 
        M|1 
     applicant-1--|--1-family member 
      1 |   1 | 
      1 |   1 | 
       disabled 
        1 | 
        M | 
     disabled by disability 
        1 | 
        M | 
       disability 
        1 | 
        1 | 
      type of disability 

заявителя

  • идентификатором заявителя (PK)
  • идентификатор отключены (fk)

член семьи

  • ID семьи (ПК)
  • идентификатор отключен (FK)

dissabled

  • ID dissabled (ПК)

отключены инвалидности

  • ID отключена по инвалидности (PK)
  • идентификатор отключен (FK)
  • Идентификатор инвалидности (FK)

инвалидности

  • Идентификатор инвалидности (PK)
  • id инвалидность (fk)
  • Идентификатор типа dissability (FK)

тип инвалидности

  • Идентификатор типа инвалидности (ПК)
  • имя типа инвалидности

предполагаемое использование этого является то, что заявитель или член семьи могут перечислять столько людей, сколько у него есть. это лучший способ упростить запросы и правильно ли он нормализован?

+0

не знают другие, но если вы можете объяснить таблицы и rel среди них устно, это помогло бы мне больше понять. – renakre

+0

ok 'DISABLED' дает 'APLICANT' и 'FAMILY MEMBER' '' 'disabled id' ', который хранится как внешний ключ в «APLICANT» и «FAMILY MEMBER», тот же «отключенный идентификатор» хранится в «DISABLED» ПО ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ ", поэтому его можно повторить в количестве строк, которые у него есть. «ИНВАЛИДНОСТЬ» имеет список «« имя инвалидности »и« тип инвалидности »и« ТИП ИНВАЛИДНОСТИ »хранит имена типов инвалидности. Самой важной частью является отношение «APLICANT» и «FAMILY MEMBER» к «DISABLED by DISABILITY» через «DISABLED», гарантируя, что я не ставил aplicant или члена семьи в одну строку –

+0

каждый «ЗАЯВИТЕЛЬ» также является ' СЕМЕЙНЫЙ ЧЛЕН ', так ли? Какова связь между ними? – renakre

ответ

0

Как насчет: Каждый APPLICANT может иметь много FAMILYMEMBER, а также сам по себе FAMILYMEMBER. Один член семьи, может подать заявку на HOUSEAPPLICATION, поэтому MemberId является ПК в HOUSEAPPLICATION.

Вам нужны отношения ТОЛЬКО между DISABLEDPEOPLE и FAMILYMEMBERS. В таблице DISABLEDPEOPLE у вас будет составной ключ (DisabilityId, MemberId).

FAMILYMEMBERS

MemberId, ConnectedApplicantId, Отношения, Имя, Фамилия

HOUSEAPPLICATION

MemberId [PK & FK], ApplicantName Дата

DISABLEDPEOPLE

DisabilityId, MemberId, DateApproved

ИНВАЛИДНОСТЬ

DisabilityId, DisabilityName, DisabilityTypeId

DISABLITYTYPES

DisabilityTypeId, DisabilityTypeName

+0

, который вы пропустили, как назначить диссидентство члену семьи, члены семьи также могут иметь несогласие. Раньше я был готов, может быть, это была бы идея бога создать единую таблицу под названием «ЧЕЛОВЕК» вместо «APLICANT» и «FAMILY MEMBER», но я никогда раньше не работал с рекурсивными таблицами, и это давало бы мне проблемы с другими частями базы данных –

+0

, так что вы имеете в виду, члены семьи применительно к отключенному статусу? Я не понял логики. Итак, почему бы не просто иметь таблицу APPLICANT? Вы хотите знать семейные отношения соискателей? – renakre

+0

Да, я хочу знать, отключен ли заявитель сам и/или если его члены семьи имеют инвалидность. –

Смежные вопросы