Как смоделировать отношения «многие ко многим» в коде? - PullRequest
26 голосов
/ 09 июля 2009

Предположим, у меня есть 2 таблицы в базе данных. Например: собака и босс Это отношение многие ко многим, потому что у босса может быть более 1 собаки, а у собаки может быть более 1 владельца. Я владелец Бобби, но моя жена тоже.

Но многим многим это не разрешается, поэтому есть вспомогательная таблица: DogsPerBoss

Как смоделировать это в коде?

Класс Босс может иметь коллекцию собак. Класс Dog может иметь коллекцию Боссов. -> По крайней мере, я так думаю. Возможно, есть лучшие решения?

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

Надеюсь, мой вопрос вроде ясен? Существуют ли передовые практики, как лучше всего этого достичь? Можете ли вы дать мне несколько ссылок?

ORM (как NHibernate) не вариант.

Ответы [ 12 ]

0 голосов
/ 09 июля 2009

Я думаю, что-то упустил. Почему многим многим запрещено?

public class Boss
{
    Dog[] dogs;
}

public class Dog
{
    Boss[] bosses;
}
0 голосов
/ 09 июля 2009

Не уверен, о чем ты просишь. Но это структура таблицы, которую вы хотите:

Стол для собак

DOG_ID int PK DOG_Name varchar (50)

DogsPerBoss

ID int DOG_ID int BOSS_ID int DogNickName varchar (15)

Boss

BOSS_ID int PK BOSS_Name varchar (50)

...