Разница между DataSource и DataSet

В настоящее время я работаю над проектом, основной задачей которого является чтение данных, хранящихся в базе данных SQL, и их отображение в удобной для пользователя форме. Используемый язык программирования – C ++. Я работаю в среде Borland C ++ Builder 6. Но я думаю, что вопрос, заданный в названии, не зависит от языка программирования или библиотек. При чтении данных из db я довольно часто встречаюсь с этими терминами в именах классов, не зная точно, что они представляют. Я понимаю, что они ведут себя как интерфейс к данным, хранящимся в db. Но почему нужно использовать два класса интерфейса вместо одного?

    DataSource = Как вы подключаетесь к своей базе данных DataSet = Структура вашей базы данных в памяти

    Подробнее (из экзамена 70-516: TS: доступ к данным с помощью Microsoft .NET Framework 4):

    DataSource Это основное свойство, которому вы назначаете свои данные. Вы можете назначить все, что реализует интерфейс IList, IListSource, IBindingList или IBindingListView. Некоторыми примерами элементов, которые могут быть присвоены свойству DataSource, являются массивы (IList), списки (IList), таблицы данных (IListSource) и наборы данных (IListSource).

    DataSet представляет собой основанное на памяти, табличное реляционное представление данных и является основным отключенным объектом данных. Понятно, что DataSet является реляционной базой данных в памяти, но он просто кэширует данные и не предоставляет никаких транзакционных свойств (атомарность, согласованность, изоляцию, долговечность), которые необходимы для современных реляционных баз данных. DataSet содержит набор объектов DataTable и DataRelation

    Предполагая, что вы говорите об экосистеме .NET, эти два термина означают совсем другие вещи.

    DataSet – это класс, представляющий реляционные данные в памяти процесса (то есть вне базы данных) – обычно заполняется из базы данных. Он представляет таблицы и отношения между ними (например, ограничения внешнего ключа).

    DataSource является атрибутом в привязке данных – назначение объекта DataSource управления в свойстве DataSource связывает источник данных (например, DataSet ) с элементом управления.