Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для imcavs™
-2 / 24 / 8
Регистрация: 19.02.2012
Сообщений: 446

Правила вывода связанных данных из базы

17.11.2019, 16:55. Показов 1563. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос немного теоретического характера.

Пример. Имеем, две таблицы.

Users и Purchases (Пользователи и покупки).

Два класса для двух объектов(сущностей - поправьте, если ошибаюсь)

C#
1
2
3
4
5
6
7
8
9
10
11
12
public User {
     public int id {get;set;}
     public string name {get;set;}
     public string surname {get;set;}
 
}
 
public Purchase {
     public int id {get;set;}
     public string  header {get;set;}
     public int user_id {get;set;}
}

Вот тут у меня возникает спорный момент. С классом User всё корректно, мне нравится.
Но в классе Purchase меня смущает свойство public int user_id, которое, как мне кажется синтаксически не к месту.

Теперь, вопрос. Как грамотно расписать классы связанных данных?
Как использовать навигационное свойство? Видел, что можно вместо public int user_id вписывать public User User.
Но к месту ли это будет?

Добавлено через 1 час 7 минут
Добавлю.
Из этих двух классов, логично формируется список покупок PurchaseList следующего вида:
id, header, user.id, user.name, user.surname.

То есть уже пять свойств появляется. Я их буду выводить в список на форму, используя какой класс? У меня нет класса с пятью свойствами. Как в этом случае быть? Создавать новый класс для вывода, что считаю не правильным. Добавлять к какому-то классу ещё свойства? То же считаю не корректным.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.11.2019, 16:55
Ответы с готовыми решениями:

WPF+ADO.NET+EF 6.0 Нужен пример вывода связанных данных из БД
В общем суть такая. Пользуюсь инструкцией для создания вывода данных из БД: microsoft-овская инструкция В ней на форму через источники...

Правила заполненя связанных таблиц
Добрый день! Задался вопрос как же заполняются связанные таблицы в базах данных. Поисках в гугле, видимо плохо, нашел только то, что...

Сортировка данных вывода из базы данных
Доброго времени суток друзья! У меня вот такой вопрос, помогите найти решение. Есть сайт, там есть почта , как сделать чтобы на первом...

4
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,073
Записей в блоге: 2
17.11.2019, 19:08
imcavs™, на мой взгляд двух таблиц мало.
Должены быть таблицы: покупатели (пользователи) , товары и таблица покупок, связывающая пользователей и товары.
В элементе последней таблицы нужны свойства: ид записи, дата, ид покупателя, ид товара, цена товара, количество товара. Также возможны ещё дополнительные свойства определяемые ТЗ: скидка, номер чека, примечание, отметка оплаты и т.п.
0
 Аватар для imcavs™
-2 / 24 / 8
Регистрация: 19.02.2012
Сообщений: 446
17.11.2019, 21:09  [ТС]
Элд Хасп, да, согласен. Тогда для этой третьей таблицы, нужно ли создавать класс?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,073
Записей в блоге: 2
18.11.2019, 00:06
Лучший ответ Сообщение было отмечено imcavs™ как решение

Решение

imcavs™, в приложении бывает несколько уровней.

На уровне работы с БД можно не создавать отдельные классы.
Можно использовать SQL Reader или DataTable.

А вот в на уровне обмена данными между Model и ViewModel желательно создать какие-то типы. Например, по шаблону DTO.
Это поможет абстрагироваться от способа хранения данных.
Также на этом уровне желательно работать с Моделью через интерфейс.
Это позволит в случае необходимости очень легко заменить Модель.

Уровень View потребует уже других типов (тут уже необходим INPC) и другой структуры данных (допустим, для списков ObservableCollection). Они должны быть удобны для создания предоставления данных.

То есть у вас в приложении будет четыре уровня. И на каждом из них возможно удобен будет разный подход к хранению, представлению данных.
0
Эксперт .NET
 Аватар для Usaga
14130 / 9350 / 1350
Регистрация: 21.01.2016
Сообщений: 35,148
18.11.2019, 04:26
Цитата Сообщение от imcavs™ Посмотреть сообщение
Но в классе Purchase меня смущает свойство public int user_id, которое, как мне кажется синтаксически не к месту.
Почему? Что с ним не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2019, 04:26
Помогаю со студенческими работами здесь

Базы Данных. Кодировка ввода/вывода.
Здравствуйте! Последнее время на форуме часто проскакивает вопрос на тему "Кодировка в MySQL" или нечто подобное. Создано множество...

Нет вывода из базы данных PHP из MYSQL
Добрый день не могу получить данные из таблицы код $query2 = sprintf('SELECT value FROM '.DB_PREFIX.'setting WHERE \'key\' =...

Скрипт вывода пунктов из базы данных на pdo
Здравствуйте, начала мучить pdo и возник такой вопрос: как проверить прошел ли запрос или нет $result_podcat =...

Ошибка при попытке вывода данных из базы
Configuration File (php.ini) Path (C:\Windows) Версия PHP Version 5.6.15, когда загружаю скрипт, который выгружает данные из mysql,...

while и циклы для вывода из базы данных зачем нужны?
Всегда делал вывод из базы в циклах while Пример while ($row=mysql_fetch_array($sql)) { вывод данных } но обнаружил, что можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru