Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Valbort
33 / 21 / 5
Регистрация: 09.11.2015
Сообщений: 146

Не понимаю, как объеденить таблицы

28.04.2020, 13:51. Показов 728. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!
Сейчас в рамках изучения python занят написанием программы - сервиса для хранения ссылок на аудиокниги.
И все было хорошо до тех пор, пока я не решил для каждого пользователя хранить список прочитанных книг.
Просто не могу сообразить, как это реализовать. Сейчас есть одна таблица с книгами. Есть идея завести еще одну таблицу и в первом столбце хранить идентификатор пользователя, а во втором список прочитанных книг (если списки вообще можно хранить целиком в одной ячейке) но этот вариант мне не кажется правильным, а скорей каким - то костыльным.
Как вы могли понять я не силен в бд, я еще учусь и буду очень благодарен всем, кто сможет направить меня на путь истинный.
Благодарю за внимание.
P.S.
Если нужно, могу выложить код, не выложил, так как не вижу необходимости.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.04.2020, 13:51
Ответы с готовыми решениями:

Заполнить / объеденить таблицы
Есть запрос, из него заполняются 3 таблицы: Пока Выборка.Следующий() Цикл Если...

объеденить две таблицы
Здравствуйте! Имеем две таблицы. нужно из них сделать третью.(во вложении пример таблицы) на третьем листе, что нужно получить в итоге,...

Объеденить таблицы без дубликатов
Есть две таблицы, пользователь вводит Item_id и я должен вывести выборку уникальных брендов из обеих таблиц, где Item_id равны в обеих...

10
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
28.04.2020, 19:45
лучше 1 столбец - id пользователя, второй - id книги. для реляционной БД это проще ,чем списки делать -
добавление/удаление записи менее трудоемко чем изменение записи
1
 Аватар для Valbort
33 / 21 / 5
Регистрация: 09.11.2015
Сообщений: 146
28.04.2020, 21:34  [ТС]
Ок. Если не сложно, уточните, пожалуйста, лучше сделать одну таблицу в которой будет в первом столбце много id пользователей(и по ним можно будет сортировать), а во второй названия книг, так?
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
28.04.2020, 21:45
примерно так
1 Книги(id,автор и тд)
2 читатели(id,ФИО и тд)
3 чтение (id книги, id читателя, взял/сдал и тд)
итого 3 таблицы
1
 Аватар для Valbort
33 / 21 / 5
Регистрация: 09.11.2015
Сообщений: 146
29.04.2020, 10:52  [ТС]
А вот, еще вопрос, раз уже начали. Так как это программа бот для телеграма, то нужно как- то хранить положение в меню для каждого пользователя. Целесообразно это делать в еще одной таблице? И вообще использовать базу данных для такого? Вроде как много операций перезаписи будет и т.п.
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
29.04.2020, 11:10
Цитата Сообщение от Valbort Посмотреть сообщение
то нужно как- то хранить положение в меню для каждого пользователя
не понял. есть условно статические данные - книги и читатели, условно динамические - кто что читает, сюда можно добавить текущую позицию.
0
 Аватар для Valbort
33 / 21 / 5
Регистрация: 09.11.2015
Сообщений: 146
29.04.2020, 15:26  [ТС]
Нет, во второй таблице нужно хранить список прочитанных книг, а не книгу, которую читает пользователь в данный момент. В этом вопрос и заключался. Как я понял, вы советовали в первой колонке указывать id пользователя, во второй id книги.
Будет примерно так:
Пользователь | книга
1 | 1
1 | 2
1 | 3
2 | 1
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
29.04.2020, 18:46
можете NOSQL применить типа Redis
https://python-scripts.com/redis
0
 Аватар для Valbort
33 / 21 / 5
Регистрация: 09.11.2015
Сообщений: 146
29.04.2020, 19:26  [ТС]
Судя по описанию лучше. Но вопрос все-же у меня по структуре базы. Напомню все это у меня в рамках изучения sql и python.
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
29.04.2020, 19:54
Цитата Сообщение от Valbort Посмотреть сообщение
Но вопрос все-же у меня по структуре базы
если sql - пробуйте sqlite3 для начала
Цитата Сообщение от Valbort Посмотреть сообщение
Будет примерно так:
Пользователь | книга
1 | 1
1 | 2
1 | 3
2 | 1
ну так и будет в основе.

Добавлено через 43 секунды
только у вас может получится что 2 читателя одновременно читают одну книгу
1
 Аватар для Valbort
33 / 21 / 5
Регистрация: 09.11.2015
Сообщений: 146
29.04.2020, 20:35  [ТС]
Благодарю. Так и все и сделал. Работает, как часики)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.04.2020, 20:35
Помогаю со студенческими работами здесь

Объеденить две таблицы по двум ячейкам
Здравствуйте! Подскажите пожалуйста, как из двух таблиц (лист1 и лист2),сравнивая по двум столбцам(фио и дата рождения), получить третью...

Объеденить таблицы по левой при этом обнулив записи правого по заданному поля
Есть 2 таблицы: При LEFT JOIN поулчается это: Мне нужно сохранить все строки первой таблицы, но при этом чтобы...

НЕ понимаю как нужно вычитать из таблицы
Проблема такая: у меня есть две таблицы, одна таблица главная - это склад с наименованием моделей компьютеров и их количеством на складе....

Не понимаю как нормально вывести в виде таблицы
О каждом студенте известна следующая информация: фамилия, инициалы; год рождения; группа; отметка по математике;

Как объеденить два полигона?
Нужно объединить два полигона в один. Тоесть есть масив точек одного полигона и масив точек другого. public List<Vector2>...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru