|
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
|
|
БД для клиент-серверного приложения18.03.2013, 22:12. Показов 6311. Ответов 42
Метки нет (Все метки)
В общем в универе задали создать клиент-серверное приложение. Я решил сделать программу онлайн заказа дорожек в боулинг, т.е. клиент выбирает дату, время и отправляет запрос, ему приходит ответ о том сколько дорожек свободно и он может заказать дорожки на выбранное время.
Серверная часть должна работать с БД. Если представить БД как таблицу, то я думаю сделать из 4-х столбцов: в первом - дата, во втором - время, в третьем - сколько дорожек свободно и в четвертом - фамилия. Из этого ясно, что должен осуществляться поиск по дате и времени, и если количество свободных дорожек в заданное время больше 0, то можно заказать дорожку, и в БД добавить новую запись с датой, временем, фамилией и оставшимся количеством свободных дорожек. Но проблема в том, что СУБД мы еще не изучали, а преподаватель требует, поэтому у меня много вопросов: какую БД в этом случае лучше использовать? Как осуществлять поиск по дате и времени? Как изменять в полях оставшиеся количество свободных дорожек в данное время? Я уже много всякого начитался в интернете, но все-равно смутно себе все представляю. И я не прошу все рассказать от "а" до "я", просто помогите советом, примером, литературой, которую нужно прочитать. Может как-то по другому посоветуете базу сделать, в общем буду рад всем советам
0
|
|
| 18.03.2013, 22:12 | |
|
Ответы с готовыми решениями:
42
Создание клиент серверного приложения Создание клиент-серверного приложения Создание клиент-серверного приложения в Delphi 7 |
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|||
| 19.03.2013, 01:19 | |||
|
Fireblade,
Делите котлеты и мухи. Дорожки отдельно. Клиенты отдельно. И у вас не одна таблица должна быть. А еще у дорожек есть номера. Если я не хочу играть на 3 а хочу на 5. Фактически это ни к чему не приведет. Ну разве что за вас кто нибудь это сделает.
0
|
|||
|
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
|
||
| 19.03.2013, 01:49 [ТС] | ||
|
Преподу пофиг, он сам говорит, что типо образовательная программа плохая. Предлагает или самим изучать БД или же использовать типизированый файл.
0
|
||
|
2903 / 1937 / 210
Регистрация: 05.06.2011
Сообщений: 5,701
|
|
| 19.03.2013, 01:58 | |
|
СУБД, СУБД... Помешались все на этих СУБД.
При, скажем, гигабайте оперативки комп вполне будет работать с 2-4 гигами виртуальной памяти. Держи всю базу в оперативке, наладь простейший экспорт/импорт на диск (в начале и в конце работы), простейший лог для восстановления на случай вылета (для учебной задачи, собственно, ни к чему) и будет тебе щастье.
0
|
|
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
||||
| 19.03.2013, 03:28 | ||||
|
В данном случае проблема в том что задача дана неподготовленному лицу, который без необходимого мимнимума эту задачу решить не сможет. Времени на изучение этого минимума как всегда нет. Вот и получается то что получается. А СУБД или файл или таблички в памяти или объекты в памяти это уже не столь важно. Опять же даже при реализации на типизированном файле ты разделишь мух и котлеты по признакам в соответствии с принципами ООП независимо от уровня твоих знаний. А когда ты знаешь о написании программ лишь набор операторов и что делфи запыскается с ярлычка с цифиркой 7. То результат будет плачевным. Для ТС можно рекомендовать прочитать основы реляционных БД и их проектирования. Большое внимание к нормализации отношений. Ну и далее пытаться создать БД и милости просим к нам с вопросами о конкретных трудностях при реализации. Конечно можно вам собрать БД и отдать,но что вы с ней сможете сделать? Если как я понимаю у вас и навыков работы с БД при реализации интерфейса в Delphi тоже нет.
0
|
||||
|
2903 / 1937 / 210
Регистрация: 05.06.2011
Сообщений: 5,701
|
|
| 19.03.2013, 03:52 | |
|
Как я понял ТС, задача -- клиент-сервер. БД там не упоминается. Либо я неверно понял, либо таки двоичный файл для простой базы проще, чем изучать теорию реляционных БД.
0
|
|
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|||
| 19.03.2013, 04:07 | |||
|
В вашем случае при реализации задачи придется идти либо путем многозвенной архитектуры (клиент(интерфейс) - сервер(логика) - файл(хранение)) либо частично писать свою СУБД которая будет работать с вашим типизированным файлом (Клиент(интерфейс, логика) - сервер БД(управление клиентскими сессиями основной функционал записи/чтения/блокировок/очередей доступа и т.п - файл(хранение))). Это при условии что вся логика по управлению блокировками, очередями записи и изменениями будет вынесена в отдельное приложение. Ну и так для разгона Клиент-сервер В вашем случае при работе с файлом и реализации всего мной описанного это будет скорее файл серверная архитектура. В плане что вся логика реализуется на клиенте. Так что как-то так.
0
|
|||
|
2903 / 1937 / 210
Регистрация: 05.06.2011
Сообщений: 5,701
|
|||
| 19.03.2013, 04:58 | |||
|
Один файл. Один сервер. Запустился, прочитал, ждёт клиентов. Дождался, выполнил запрос, ждёт следующего. В конце -- пишем из памяти всё обратно в файл. Задача -- учебная. Да хоть и реальная: объём базы -- какой? Я не знаком с работой боулинга, мож, глупость скажу. К примеру, 20 дорожек. Заказы по времени, кратные, скажем, 15 минутам. К примеру, 1000 клиентов (впрочем, справочник клиентов -- опять же, для учебной задачи -- можно и не делать). К примеру, на пару недель вперёд. Неужто в пару мегабайт не уложится? Вот это:
0
|
|||
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|
| 19.03.2013, 05:20 | |
|
0
|
|
|
2903 / 1937 / 210
Регистрация: 05.06.2011
Сообщений: 5,701
|
||
| 19.03.2013, 05:49 | ||
|
0
|
||
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|
| 19.03.2013, 06:15 | |
|
Да я про СУБД не говорю. С точки зрения архитектуры это получается 3 звенка в виду того что есть как минимум 2 звена отвечающих за соединение (клиент-сервер) и отдельное хранилище (файл/БД/еще кака неведома зверушка).
При отсутсвии 1 из все перестает работать.
0
|
|
|
2903 / 1937 / 210
Регистрация: 05.06.2011
Сообщений: 5,701
|
|
| 19.03.2013, 06:32 | |
|
Вот тут не понял. БД требует СУБД, которая будет третьим звеном; неведомая зверушка потребует неведомо чего; а файл тут при чём? Предлагаешь операционную систему считать третьим звеном?
Звено -- это ж отдельный процесс с отдельной программой, так? В моей схеме их два: клиент и сервер. Не вижу третьего.
0
|
|
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|
| 19.03.2013, 07:12 | |
|
У SQLite и Access тоже нет. И тем не менее.
0
|
|
|
2903 / 1937 / 210
Регистрация: 05.06.2011
Сообщений: 5,701
|
|
| 19.03.2013, 07:38 | |
|
Тем не менее -- что? Если сервер работает с базой на SQLite/Access, то мы имеем трёхзвенку? Мы, похоже, очень по-разному понимаем эту самую трёхзвенку. Лень, честно говоря, искать, кто из нас прав. Хай будет трёхзвенка.
0
|
|
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
||
| 19.03.2013, 08:03 | ||
|
В принципе я чего то тоже запутался. А как рассматривать вариант 1С клиент - платформа - файловая БД?
0
|
||
|
2903 / 1937 / 210
Регистрация: 05.06.2011
Сообщений: 5,701
|
|
| 19.03.2013, 08:25 | |
|
Ну, я как-то считаю звеном отдельный процесс. Файловая БД отдельного процесса не запускает.
Хотя, вполне возможно, стоит считать асинхронные эээ... сущности, что ли. Тогда даже асинхронно читаемый файл -- звено. 1С 7 версии вообще одним процессом, как я понимаю, работает, 8 в руках не держал. Если вернуться к нашим баранам, я предлагал именно синхронное одноразовое чтение файла при запуске. А вот, к примеру, Access, да через асинхронные запросы -- ну, может, и заслуживает называться звеном.
0
|
|
|
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 13
|
||
| 19.03.2013, 08:26 | ||
|
под такую задачу лучше использовать MySQL))) для клиент-серверную не ставят онлайн...слишком уязвимо...да и защита в копеечку влетит)))
0
|
||
|
2903 / 1937 / 210
Регистрация: 05.06.2011
Сообщений: 5,701
|
||
| 19.03.2013, 08:34 | ||
|
0
|
||
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|
| 19.03.2013, 08:46 | |
|
iifat, я про 7 не говорю. Сугубо о восьмерке. У нее есть возможность работы в таком режиме.
Ну т.е мы приходим к синхронному чтению. И по факту получается некое подобие реализации проекта на DataSnap'е. Сервер один раз при запуске открывает наш файл и сидит с ним, пока клиент ему не пришлет запрос для каких нибудь манипуляций с данными. Необходима реализация управления сессиями и очередями записи. Ибо на лицо конфликт "кто последний тот и папа". Хотя зависит от реализации. Кстати технология DataSnap как раз для построение многозвенных архитектур. В случае с Access и SQLite у нас есть такое понятие как ядро СУБД Jet в случае Access и sqlite.dll во втором случае. Т.е. условно можем считать 3 звенкой. Хотя по факту вроде как файл-сервер. В нашем случае если мы реализуем весь функционал по интерпритации запросов клиента в серверном приложении , то вроде как и 2 звенка получается, а если мы вынесем логику в отдельную библиотеку и будем юзать функции из нее то уже вроде как появляется некий драйвер для работы с нашим файлом. В общем офтоп страшный,но с целью разобраиться. Как интерпритировать такой архитектурный прием. gosean, онлайн тут не причем это всего лишь термин указывающий на то, что система должна работать в реальном времени. Т.е. если один клиент занял дорожку, то второй ее занять уже не может. В принципе если мы реализуем функционал по управлению сессиями, то есть возможность от сервера отправлять команду на обновление каждому клиенту. С целью показать, что дорожка уже занята. И кстати в 1С 8 до сих пор существуют проблемы блокировок.
0
|
|
|
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
|
|
| 19.03.2013, 15:42 | |
|
Трехзвенка
БД-Сервер-Клиент
0
|
|
| 19.03.2013, 15:42 | |
|
Помогаю со студенческими работами здесь
20
Cкиньте, пожалуйста, примеры клиент-серверного приложения. Что нужно для создания клиент-серверного приложения. Для чего нужны потоки в работе клиент-серверного приложения? Нестабильная работа клиент-серверного приложения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|