Я разрабатываю приложение, которое работает с двумя наборами данных - пользователями и областями. Данные читаются из файлов, созданных третьей стороной. У меня есть класс User и класс Area, и данные считываются в массив Users и массив Areas (или другую подходящую структуру памяти, в зависимости от технологии, с которой мы работаем).
Оба класса имеют уникальный член ID, который читается из файла, а класс User содержит массив идентификаторов областей, дающих связь, в которой один пользователь связан со многими областями.
Требования довольно просты:
- Список пользователей
- Список областей
- Список пользователей для указанной области
- Список областей для указанных пользователей
Моей первой мыслью было оставить данные в двух массивах, а затем для каждого из требований иметь отдельный метод, который будет опрашивать один или оба массива по мере необходимости. Это было бы легко реализовать, но я не уверен, что это лучший способ.
Затем я подумал о наличии метода «Get Areas» в классе User и члена «Get Users» в классе Area, который был бы более полезен, если, например, я нахожусь на этапе, когда у меня есть объект Area, Я мог бы найти его пользователей по свойству, но тогда как бы метод «Get Users» в классе Area узнал о / имел доступ к массиву Users.
Я сталкивался с этой проблемой несколько раз, но так и не нашел окончательного решения. Может быть, я просто усложняю, чем на самом деле. Кто-нибудь может дать какие-нибудь советы, URL-адреса или книги, которые помогли бы мне с таким дизайном?
UPDATE:
Спасибо всем, что нашли время, чтобы оставить несколько советов. Ваши комментарии очень ценятся.
Я согласен с тем, что корнем этой проблемы являются отношения «многие ко многим». Я понимаю, как это будет моделироваться в реляционной базе данных, это довольно просто.
Данные, которые я получаю, представлены в виде двоичных файлов от сторонних производителей, поэтому я не могу контролировать их структуру, но могу хранить их в любом удобном для меня виде, когда я их читаю. Они немного квадратные колышки в круглых отверстиях, но я подумал, что, прочитав и сохранив их в базе данных, программе потребуется запросить базу данных, чтобы получить результаты. Это не большой объем данных, поэтому я подумал, что можно было бы получить то, что мне нужно, сохранив его в структурах памяти.