2015-03-24 4 views
1

У меня есть база данных с отношениями , PoliceOfficer, Suspect и многие другие человекоподобные отношения. Часто один и тот же человек может фигурировать в нескольких отношениях, поскольку в некоторых случаях полицейский может быть подозреваемым. Имело бы смысл сделать другое отношение Person, чтобы сохранить все данные, относящиеся к человеку, и просто указать на объекты человека во всех моих личных отношениях?Дизайн базы данных с несколькими личностными отношениями

+0

Это, безусловно, поможет 'normalize' вы данные. Вы можете поместить общие атрибуты всех лиц, похожих на сущности, в отношение «Личность» и получить к ним доступ, используя '' '' '' '' '' '' '' 'человеку'' во всех других соответствующих отношениях. –

ответ

0

Я полностью согласен с комментарием @ Guranjan.

Также рассмотрите вопрос о том, может ли человек иметь кратность одной и той же роли и при каких обстоятельствах. У вас может быть person, который является Suspect более чем одним case. Таким образом, у каждого case может быть много подозреваемых, свидетелей и офицеров, и каждый из них указывает на уникального человека.

Таким образом, таблицы будут:

case 
    case-id 
    crime-description 
    date 
    time 
    etc 

case-person 
    case-id 
    person-id 
    type (witness, suspect, officer) 

person 
    person-id 
    name 
    dob 
    address 
    etc 
0

Не уверены в вашем случае использования, но это имело бы смысл, чтобы смоделировать его с помощью нескольких таблиц: Person, Role была бы таблицы измерений - Person содержащих их детали, которые необходимо сохранить для физических лиц (имя, адрес, доб и т. д.) Role, содержащий информацию, относящуюся ко всем возможным ролям (Свидетель, Полицейский, Подозреваемый и т. д.).

Вам понадобится таблица фактов, а, вступив эти два аа частности Scenario так, например:

Person 1 - в сценарии 1 - это сотрудник полиции

Человек 2 - в сценарии 1 - свидетель

Person 3 - в сценарии 2 - это подозреваемый

Person 1 - в сценарии 2 - это свидетель

Люди 2 - в сценарии 2 - свидетель

В таблице Scenario будет содержать Человек и ключи ролей

+0

Мне нравится идея иметь отношение для всех ролей. Но как насчет атрибутов, характерных для некоторых ролей? Где я могу хранить звание полицейских и т. Д.? – Jamgreen

+0

Вы должны иметь разную роль для каждого ранга офицера полицейского. Таким образом, человек 1 может быть сержантом (роль 1) в Сценарии 1 и инспектором (роль 2) в Сценарии 2 после продвижения по службе – econnormist

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