Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
RAD 2009-XE2

БД "Склад"

20.07.2019, 12:10. Показов 2793. Ответов 33

Студворк — интернет-сервис помощи студентам
Здравствуйте. Прошу помочь материалами и советом по следующему вопросу.
Поставили задачу написать простую БД "СКЛАД" (не более 7 таблиц). С возможностью работы в ней по сети и разграничением прав пользователей.
Писать буду на delphi 10 + postgreSQL. Опыта практически нет, отсюда следующий вопрос:
для связи делфи с субд использовать firedac, zeoslib, ado?
Как грамотно сделать авторизацию и идентификацию пользователя и обрезать права обычному оператору?
Заранее благодарю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2019, 12:10
Ответы с готовыми решениями:

БД склад
четыре таблицы. "Роль" "справочник фирм" "приход" и "расход" роль имеет связь с табл "спр фирм" необходимо установить связь...

бд склад
Имеется бд(access) с таблицами , всё это помещаю на форму (с помощью AdoQuery). Имеются таблица "Приход" ,"Расход",...

компьютерный склад
Делаю программу компьютерный склад. Бд ADO c ADOConnection Возникла следующая проблема, в таблице товар поделен на разделы (процессор,...

33
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
20.07.2019, 12:56
Если с ТЗ у вас все понятно, то первое, что надо сделать, это сделать структуру БД на сервере, и тщательно протестировать ее на заполнение, выборку.
0
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
20.07.2019, 13:27  [ТС]
уже приступил. Но мои вопросы менее актуальны не стали
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
20.07.2019, 14:19
Как грамотно сделать авторизацию и идентификацию пользователя и обрезать права обычному оператору
SQL-сервер обычно уже имеет этот механизм, postgre не исключение. Если же вы хотите что-то иное, то пишите подробнее.
0
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
20.07.2019, 14:46  [ТС]
ну при входе в программу подключился к БД указав логин и пароль:
1) Как пароль должен храниться в postgesql пароль пользователей? хэшем?
Далее заходим и например запрещаем пользователю удалять запись, или открывать справочники - это решается на уровне СУБД или путем закрытия данной функции в интерфейсе программы?
И как сделать ведение журнала пользователя, что открыл, что добавил, что удалил?
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
20.07.2019, 16:14
А вы как создавали базу на postgesql ? Там же настройка подключения предполагает пользователя и пароль с определенными правами.
0
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
20.07.2019, 16:41  [ТС]
Я только приступил, по этому пока один пользователь - стандартный

Добавлено через 2 минуты
Если можно, то хотелось бы пример кода подключения к бд из делфи
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
20.07.2019, 17:07
Раз у вас XE, то вам лучше FireDac использовать. Пример к сожалению не покажу, нет у меня XE сейчас, но вы можете найти их море и на форуме и в гугле. Настройку пользователей и их прав тоже в гугле можно легко найти.
А вот аудит можно реализовать по разному. Из моего опыта следует что детальный аудит не нужен вообще, а вот знание, кто создал и изменил запись - очень пригодится. В Postgree, где есть наследование, это реализуется вообще элементарно. Создаете таблицу-родитель, от которой затем наследуете все остальные таблицы. В ней заводите поля Создал,Изменил,ДатаСоздания,ДатаИзменени я. Делаете тригер на добавление, изменение записи, где заполняете эти четыре поля и все.
0
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
20.07.2019, 17:38  [ТС]
Благодарю! И последний пока вопрос, вообще есть разница на Delphi 7 или 10.3 писать?! Просто мои последние навыки на 7 были.
0
20.07.2019, 17:54

Не по теме:

Цитата Сообщение от fya Посмотреть сообщение
есть разница на Delphi 7 или 10.3 писать?!
Есть, конечно... Один юникод чего стоит... Попробуйте данные, записанные в UTF-8 воспроизвести в CP1251...

0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
20.07.2019, 18:36
Delphi
1
есть разница на Delphi 7 или 10.3 писать?
И да и нет. Основные правила написания кода без изменений, много упрощающего разработку, новые классы и встроенные дополнения в IDE, но есть конечно и свои минусы. На мой взгляд основным минусом является отвратная реализация справки.
0
5975 / 4550 / 1095
Регистрация: 29.08.2013
Сообщений: 28,170
Записей в блоге: 3
21.07.2019, 11:38
fya, фиг с ней с авторизацией, показывай таблицы
0
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
21.07.2019, 19:37  [ТС]
Сейчас доделаю и скину

Добавлено через 2 часа 10 минут
Подскажите в каком направлении думать?! Вообщем есть таблица товаров, крышки, бутылки. Которые поступают на склад. Например крышек 10, и бутылок 10. И есть готовая продукция, которая состоит из определённых крышек и бутылок, готовая продукция - уникальное название, к которой идёт своя крышка и своя этикетка. И надо чтобы при создании готовой продукции вычиталась одна этикетка и одна крышка из их количества. Как это связать и отобразить ?! Что то не соображу
0
5975 / 4550 / 1095
Регистрация: 29.08.2013
Сообщений: 28,170
Записей в блоге: 3
21.07.2019, 21:47
Цитата Сообщение от fya Посмотреть сообщение
Подскажите в каком направлении думать?
склад это склад, при чем тут производство?

на складе мы только храним. приход и расход.
производство это совсем другая тема.

пусть у тебя есть таблицы
Номенклатура (ID, Наименование)
1 Крышка1
2 Бутылка2

Движение
Пришло код1 - 20 штук
Пришло код2 - 30 штук

Товары
Товар1 Код1 1шт
Товар1 Код2 1шт

Производство - при добавлении в эту таблицу надо по товару посчитать сколько и чего у нас есть и если всего хватает, сразу добавляем в таблицу движение нужное количество с минусом (минус - это значит расход)
Товар1 20 штук
0
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
22.07.2019, 05:05  [ТС]
Оказалось не так просто как думалось, прошу помощи!
https://drive.google.com/open?... BLTUjKI5bF

пока нарисовал такую структуру.
Смысл должен быть такой. Есть комплектующие товаров, по моей логике они поступают на склад, соединены с таблицами единицы измерения и группы комплектующих. И есть готовый товар, который состоит из комплектующих свойственных ему, при добавлении он должен проверять количество нужных ему комплектующих и если всего хватает - добавлять на склад готовый товар за минусом нужных ему комплектующих.
0
5975 / 4550 / 1095
Регистрация: 29.08.2013
Сообщений: 28,170
Записей в блоге: 3
22.07.2019, 08:18
Цитата Сообщение от fya Посмотреть сообщение
И есть готовый товар, который состоит из комплектующих свойственных ему, при добавлении он должен проверять количество нужных ему комплектующих и если всего хватает - добавлять на склад готовый товар за минусом нужных ему комплектующих.
я ж тебе тоже самое написал

Цитата Сообщение от fya Посмотреть сообщение
прошу помощи!
какой именно помощи ты просишь, если сам ничего еще не сделал?

PS картинки заливают на форум
0
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
22.07.2019, 08:55  [ТС]
Помощь в проверке связей. Сейчас скину картинку
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
23.07.2019, 15:42
не нужно использовать пользователей от БД
стоит наоборот сделать таблицу пользователей вашей программы с каким-то списком их ролей (прав)
тогда программа будет подключаться к базе всегда под одним логином, а права будут реализовываться уже в программе
0
0 / 0 / 0
Регистрация: 26.05.2015
Сообщений: 68
23.07.2019, 18:50  [ТС]
Благодарю за мнение! А есть примеры реализации этого??? Чтобы понять смысл
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
23.07.2019, 22:09
смысл в том, что для доступа в БД требуется администрирование пользователей с помощью сисадмина
и права на объекты БД довольно трудно конвертировать в право "Открыть форму №13"
и администрировать их тоже довольно сложно
если же у вас собственная таблица например пусть как у всех users, вы можете хранить там все что вам захочется
а еще можно создать таблицу ROLES - справочник ролей (наборов прав)
и таблицу USER_ROLES, которая хранит какие юзеры какие роли имеют
вот такого типа запрос сразу и покажет есть/нет юзер с таким логином/паролем, и выдаст список его ролей
SQL
1
2
3
4
5
6
7
8
9
10
SELECT 
  u.id,
  u.Last_name,
  u.first_name,
  r.id AS role_id,
  r.name AS role_name
FROM users u 
  LEFT JOIN USER_ROLES ur ON ur.USER_ID=u.ID
  LEFT JOIN ROLES r ON r.id=ur.role_id
WHERE u.login=:LOGIN AND u.pass_hash=:PASS_HASH
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.07.2019, 22:09
Помогаю со студенческими работами здесь

программа склад
Здраствуйте всем у меня такой вопрос: Подключил бд(Access), она читается в dbgrid, в dbedit считывается нужное поле (кол-во), и написал...

Склад в Delphi
Как написать программу учета выданных вещей со склада? На Delphi.

Добавление товара на склад
Есть таблица поступление и склад. При добавлении добавлении записи в таблицу поступление просиходит добавление этого товара(только код...

Имеется три таблицы: приход, расход, и склад. Как написать код в Делфи?
Имеется три таблице приход расход и склад как написать код в делфи, что при приходе это число прибавлялась на склад

Программа склад
Надо создать такую программу чтобы программа принимала товары в склад и отправляла со склада. Если название товара которого мы принимаем...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru