Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/32: Рейтинг темы: голосов - 32, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27

БД для клиент-серверного приложения

18.03.2013, 22:12. Показов 6249. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем в универе задали создать клиент-серверное приложение. Я решил сделать программу онлайн заказа дорожек в боулинг, т.е. клиент выбирает дату, время и отправляет запрос, ему приходит ответ о том сколько дорожек свободно и он может заказать дорожки на выбранное время.

Серверная часть должна работать с БД. Если представить БД как таблицу, то я думаю сделать из 4-х столбцов: в первом - дата, во втором - время, в третьем - сколько дорожек свободно и в четвертом - фамилия. Из этого ясно, что должен осуществляться поиск по дате и времени, и если количество свободных дорожек в заданное время больше 0, то можно заказать дорожку, и в БД добавить новую запись с датой, временем, фамилией и оставшимся количеством свободных дорожек.

Но проблема в том, что СУБД мы еще не изучали, а преподаватель требует, поэтому у меня много вопросов: какую БД в этом случае лучше использовать? Как осуществлять поиск по дате и времени? Как изменять в полях оставшиеся количество свободных дорожек в данное время?
Я уже много всякого начитался в интернете, но все-равно смутно себе все представляю. И я не прошу все рассказать от "а" до "я", просто помогите советом, примером, литературой, которую нужно прочитать. Может как-то по другому посоветуете базу сделать, в общем буду рад всем советам
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2013, 22:12
Ответы с готовыми решениями:

Создание клиент серверного приложения
Доброго времени суток, уважаемые гуру программирования. Надеюсь на Ваш опыт и доброту. Собственно проблема такая: нужно создать СУБД,...

Создание клиент-серверного приложения
Кто-нибудь, отзовитесь... Последняя надежда на вас! Я уже несколько дней пытаюсь сделать лабораторную по базам данных в delphi и все...

Создание клиент-серверного приложения в Delphi 7
Создал БД в MSSQL Server 2008, создал клиент и серверное приложение для БД в Delphi 7, подскажите как сделать так чтобы она работала через...

42
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
19.03.2013, 01:19
Fireblade,
Цитата Сообщение от Fireblade Посмотреть сообщение
в первом - дата, во втором - время, в третьем - сколько дорожек свободно и в четвертом - фамилия
Бред сивой кобылы.
Делите котлеты и мухи. Дорожки отдельно. Клиенты отдельно. И у вас не одна таблица должна быть. А еще у дорожек есть номера. Если я не хочу играть на 3 а хочу на 5.

Цитата Сообщение от Fireblade Посмотреть сообщение
Но проблема в том, что СУБД мы еще не изучали, а преподаватель требует
Интересно, а это как вам надо решить задачу без знания териии БД?
Фактически это ни к чему не приведет. Ну разве что за вас кто нибудь это сделает.
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
19.03.2013, 01:49  [ТС]
Цитата Сообщение от rdama Посмотреть сообщение
Fireblade,

Бред сивой кобылы.
Делите котлеты и мухи. Дорожки отдельно. Клиенты отдельно. И у вас не одна таблица должна быть. А еще у дорожек есть номера. Если я не хочу играть на 3 а хочу на 5.


Интересно, а это как вам надо решить задачу без знания териии БД?
Фактически это ни к чему не приведет. Ну разве что за вас кто нибудь это сделает.
Ну а как тогда лучше сделать базу? Еще добавить номер номер дорожки и поле занята она в это время или нет?
Преподу пофиг, он сам говорит, что типо образовательная программа плохая. Предлагает или самим изучать БД или же использовать типизированый файл.
0
2891 / 1926 / 208
Регистрация: 05.06.2011
Сообщений: 5,627
19.03.2013, 01:58
СУБД, СУБД... Помешались все на этих СУБД.
При, скажем, гигабайте оперативки комп вполне будет работать с 2-4 гигами виртуальной памяти. Держи всю базу в оперативке, наладь простейший экспорт/импорт на диск (в начале и в конце работы), простейший лог для восстановления на случай вылета (для учебной задачи, собственно, ни к чему) и будет тебе щастье.
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
19.03.2013, 03:28
Цитата Сообщение от Fireblade Посмотреть сообщение
Преподу пофиг, он сам говорит, что типо образовательная программа плохая
Нутогда ему нечего делать в универе. Если он свой же курс не может наладить. И дать вам задачи в соответсвии с тем что он вам преподавал. А раз уж он знает что будут такого рода задачи,то мог бы выделить пару зройку лекций и на пальцах объяснить основы.
Цитата Сообщение от Fireblade Посмотреть сообщение
самим изучать БД
Ну конечно так ведь проще. А свою зарплату он вам тоже предлагает самостоятельно освоить или все же...
Цитата Сообщение от iifat Посмотреть сообщение
СУБД, СУБД... Помешались все на этих СУБД.
Причем здесь это-то. Задача поставлена так как поставленна. И подразумевает определенное решение. Для изучения и закрепление определенного набора знаний и навыков.
В данном случае проблема в том что задача дана неподготовленному лицу, который без необходимого мимнимума эту задачу решить не сможет. Времени на изучение этого минимума как всегда нет. Вот и получается то что получается.
А СУБД или файл или таблички в памяти или объекты в памяти это уже не столь важно. Опять же даже при реализации на типизированном файле ты разделишь мух и котлеты по признакам в соответствии с принципами ООП независимо от уровня твоих знаний.
А когда ты знаешь о написании программ лишь набор операторов и что делфи запыскается с ярлычка с цифиркой 7.
То результат будет плачевным.
Для ТС можно рекомендовать прочитать основы реляционных БД и их проектирования. Большое внимание к нормализации отношений.
Ну и далее пытаться создать БД и милости просим к нам с вопросами о конкретных трудностях при реализации.
Конечно можно вам собрать БД и отдать,но что вы с ней сможете сделать? Если как я понимаю у вас и навыков работы с БД при реализации интерфейса в Delphi тоже нет.
0
2891 / 1926 / 208
Регистрация: 05.06.2011
Сообщений: 5,627
19.03.2013, 03:52
Как я понял ТС, задача -- клиент-сервер. БД там не упоминается. Либо я неверно понял, либо таки двоичный файл для простой базы проще, чем изучать теорию реляционных БД.
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
19.03.2013, 04:07
Цитата Сообщение от Fireblade Посмотреть сообщение
создать клиент-серверное приложение
О каких
Цитата Сообщение от iifat Посмотреть сообщение
либо таки двоичный файл
речь идет. Я боюсь представить как ТС будет разбираться с блокировками файла при одновременной работе некольких клиентов. Как будет реализован механизм записи в этот файл при одновременной работе. Каким образом 2 клиент будет узнавать о том что некая дорожка занята.
В вашем случае при реализации задачи придется идти либо путем многозвенной архитектуры (клиент(интерфейс) - сервер(логика) - файл(хранение)) либо частично писать свою СУБД которая будет работать с вашим типизированным файлом (Клиент(интерфейс, логика) - сервер БД(управление клиентскими сессиями основной функционал записи/чтения/блокировок/очередей доступа и т.п - файл(хранение))). Это при условии что вся логика по управлению блокировками, очередями записи и изменениями будет вынесена в отдельное приложение.
Ну и так для разгона Клиент-сервер
В вашем случае при работе с файлом и реализации всего мной описанного это будет скорее файл серверная архитектура.
В плане что вся логика реализуется на клиенте.
Так что как-то так.
0
2891 / 1926 / 208
Регистрация: 05.06.2011
Сообщений: 5,627
19.03.2013, 04:58
Цитата Сообщение от rdama Посмотреть сообщение
Я боюсь представить как ТС будет разбираться с блокировками файла при одновременной работе некольких клиентов. Как будет реализован механизм записи в этот файл при одновременной работе. Каким образом 2 клиент будет узнавать о том что некая дорожка занята.
Опомнись, человече! Какие блокировки? Какой механизм записи? Какая многозвенная архитектура?
Один файл. Один сервер. Запустился, прочитал, ждёт клиентов.
Дождался, выполнил запрос, ждёт следующего.
В конце -- пишем из памяти всё обратно в файл.
Задача -- учебная. Да хоть и реальная: объём базы -- какой? Я не знаком с работой боулинга, мож, глупость скажу. К примеру, 20 дорожек. Заказы по времени, кратные, скажем, 15 минутам. К примеру, 1000 клиентов (впрочем, справочник клиентов -- опять же, для учебной задачи -- можно и не делать). К примеру, на пару недель вперёд. Неужто в пару мегабайт не уложится?
Вот это:
Цитата Сообщение от rdama Посмотреть сообщение
Каким образом 2 клиент будет узнавать о том что некая дорожка занята
а точнее говоря -- что делать, если, пока один думает, второй прорвался и заказал -- единственная проблема. Но это проблема из жизни, а не из СУБД -- её придётся как-то предусматривать при любом варианте.
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
19.03.2013, 05:20
Цитата Сообщение от iifat Посмотреть сообщение
Один файл. Один сервер. Запустился, прочитал, ждёт клиентов.
Ну т.е. 3 звенка.
0
2891 / 1926 / 208
Регистрация: 05.06.2011
Сообщений: 5,627
19.03.2013, 05:49
Цитата Сообщение от rdama Посмотреть сообщение
Ну т.е. 3 звенка
Трёхзвенка -- если добавить клиент-серверную СУБД (не обязательно SQL). Если сервер сам читает файл и отвечает на запросы -- где тут третье звено?
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
19.03.2013, 06:15
Да я про СУБД не говорю. С точки зрения архитектуры это получается 3 звенка в виду того что есть как минимум 2 звена отвечающих за соединение (клиент-сервер) и отдельное хранилище (файл/БД/еще кака неведома зверушка).
При отсутсвии 1 из все перестает работать.
0
2891 / 1926 / 208
Регистрация: 05.06.2011
Сообщений: 5,627
19.03.2013, 06:32
Вот тут не понял. БД требует СУБД, которая будет третьим звеном; неведомая зверушка потребует неведомо чего; а файл тут при чём? Предлагаешь операционную систему считать третьим звеном?
Звено -- это ж отдельный процесс с отдельной программой, так? В моей схеме их два: клиент и сервер. Не вижу третьего.
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
19.03.2013, 07:12
У SQLite и Access тоже нет. И тем не менее.
0
2891 / 1926 / 208
Регистрация: 05.06.2011
Сообщений: 5,627
19.03.2013, 07:38
Тем не менее -- что? Если сервер работает с базой на SQLite/Access, то мы имеем трёхзвенку? Мы, похоже, очень по-разному понимаем эту самую трёхзвенку. Лень, честно говоря, искать, кто из нас прав. Хай будет трёхзвенка.
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
19.03.2013, 08:03
Цитата Сообщение от iifat Посмотреть сообщение
Тем не менее -- что?
И то и другое СУБД.
В принципе я чего то тоже запутался.
А как рассматривать вариант 1С клиент - платформа - файловая БД?
0
2891 / 1926 / 208
Регистрация: 05.06.2011
Сообщений: 5,627
19.03.2013, 08:25
Ну, я как-то считаю звеном отдельный процесс. Файловая БД отдельного процесса не запускает.
Хотя, вполне возможно, стоит считать асинхронные эээ... сущности, что ли. Тогда даже асинхронно читаемый файл -- звено. 1С 7 версии вообще одним процессом, как я понимаю, работает, 8 в руках не держал. Если вернуться к нашим баранам, я предлагал именно синхронное одноразовое чтение файла при запуске. А вот, к примеру, Access, да через асинхронные запросы -- ну, может, и заслуживает называться звеном.
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 13
19.03.2013, 08:26
Цитата Сообщение от iifat Посмотреть сообщение
Трёхзвенка -- если добавить клиент-серверную СУБД (не обязательно SQL). Если сервер сам читает файл и отвечает на запросы -- где тут третье звено?
а третье звено это слабое звено)))
под такую задачу лучше использовать MySQL))) для клиент-серверную не ставят онлайн...слишком уязвимо...да и защита в копеечку влетит)))
0
2891 / 1926 / 208
Регистрация: 05.06.2011
Сообщений: 5,627
19.03.2013, 08:34
Цитата Сообщение от gosean Посмотреть сообщение
под такую задачу лучше использовать MySQL
Будь эта задача реальной -- был бы, возможно, смысл использовать MySQL, а то и лучше SQLite. Всё, что я говорю -- я говорю про случай учебной задачи и ТС с нулевыми знаниями БД и недостатком времени.
0
 Аватар для rdama
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
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
19.03.2013, 15:42
Трехзвенка
БД-Сервер-Клиент
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2013, 15:42
Помогаю со студенческими работами здесь

Создание простейшего клиент-серверного приложения
делал всё по инструкции http://www.interface.ru/home.asp?artId=19397 дошёл до этого шага "Вот на этом процесс создания примитивного...

Cкиньте, пожалуйста, примеры клиент-серверного приложения.
Ребят, выручите, скиньте пожалуйста примеры клиент-серверного приложения. Вопрос из темы...

Что нужно для создания клиент-серверного приложения.
Добрый день. Мне нужно сделать программу для для вычитки часов в учебном заведении. Основная функция - возможность подключения к базе...

Для чего нужны потоки в работе клиент-серверного приложения?
Возник вопрос. Для чего нужны потоки в работе клиент-серверного приложения? SocketServer имеет такие события, как OnGetThread, On...

Нестабильная работа клиент-серверного приложения
Например никнейм пользователя, может записаться в Memo а может и в ListBox1, или часы, могут отобразится на одном месте, могут сместиться,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru