2017-02-13 12 views
0

Я перезапустил работу и старый проект. Это база данных доступа с 6 таблицами. Один из них - главная таблица, TableA. Вот как это работает.Oledb и доступ. Должен использовать Inner Join или C# loop?

Таблица A имеет один-много с TableB, TableC и TableD.

У TableD есть один для многих с TableE.

Таблица имеет один-много с TableF.

В любой момент я нужен только 1 запись из TABLEA, но всегда будут нужны соответствующие записи в таблицах B, C, D, E и F.

Я в порядке с созданием отдельных Выберите вызовов для таблиц B и C, однако взаимосвязь для таблицы D интересна. Для каждой записи в таблице А таблица D будет содержать от 4 до 5 записей. Для каждой записи в таблице D таблица E будет содержать от 4 до 5 записей. Для каждой записи в таблице E таблица F может иметь более 100 записей.

В конечном итоге мне необходимо показать конечного пользователя: Информация из таблиц A, B, C и D. Информация в таблице E должна быть сгруппирована по таблице D (я использую поле со списком), а информация в таблице F должна быть сгруппированы в таблицу E (также выпадающее поле), затем разделены на 1 из 4 групп.

В настоящее время у меня есть класс интерфейса базы данных, который делает все мои вызовы БД и возвращает список привязок. Недавно я разработал SQL-запрос, который выполняет внутреннее соединение в TableD, TableE и TableF и думал, что я прокручу возвращаемые записи, тщательно создав свой 6 отдельных BindingList.

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

+1

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

+0

Спасибо Тим! Я как можно скорее создаю визуализацию макета для БД. –

ответ

0

Это не количество ударов БД, о которых вам следует беспокоиться. Сначала волнуйтесь о том, как использовать подходящий инструмент для работы. Реляционные базы данных невероятно сложны, когда речь идет о присоединении. Используйте это для макс. Crazy - единственное слово для создания соединений за пределами базы данных.

Написание SQL, чтобы присоединиться 5 таблиц будут гораздо больше удовольствия, если вы используете QueryFirst (отказ от ответственности: который я написал)