Я задал этот вопрос здесь , но я не думаю, что понял свою точку зрения.
Допустим, у меня есть следующие таблицы (все PK являются полями IDENTITY):
- Люди (PersonId (PK), Имя, SSN и т. Д.)
- Кредиты (LoanId (PK), Сумма и т. Д.)
- Заемщики (BorrowerId (PK), PersonId, LoanId)
Допустим, мистер Смит получил 2 займа на свое имя, 3 совместных займа с женой и 1 совместный займ с любовницей. Для целей применения я хочу, чтобы ГРУППЫ людей, чтобы я мог легко выделить кредиты, которые г-н Смит взял вместе со своей женой.
Для этого я добавил таблицу BorrowerGroup, теперь у меня есть следующее (все PK являются полями IDENTITY):
- Люди (PersonId (PK), Имя, SSN и т. Д.)
- Ссуды (LoanId (PK), Amount, BorrowerGroupId и т. Д.)
- BorrowerGroup (GroupId (PK))
- Заемщики (BorrowerId (PK), GroupId, PersonId)
Теперь мистер Смит состоит из 3 групп (он сам, он и его жена, он и его любовница), и я легко могу посмотреть его деятельность в любой из этих групп.
Проблемы с новым дизайном:
Единственный способ создать новую группу Borrower - это вставить MAX (GourpId) +1 с IDENTITY_INSERT ON, это просто не правильно. Кроме того, понятие таблицы с 1 столбцом является довольно странным.
Я твердо верю в суррогатные ключи и хотел бы придерживаться этого дизайна, если это возможно.
Это приложение не заботится о физических лицах, ГРУППА рассматривается как физическое лицо
Есть ли лучший способ группировать людей для целей этого приложения?