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

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

18.03.2013, 22:12. Показов 6473. Ответов 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
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
19.03.2013, 20:50  [ТС]
Студворк — интернет-сервис помощи студентам
Спасибо всем за отзывы!
В общем программа должна работать примерно так:
Цитата Сообщение от iifat Посмотреть сообщение
Один файл. Один сервер. Запустился, прочитал, ждёт клиентов.
Дождался, выполнил запрос, ждёт следующего.
В конце -- пишем из памяти всё обратно в файл.
И надо, чтобы программа работала хотя бы с одним клиентом )) Еще разрешили использовать типизированный файл в качестве базы. Лучше использовать его или все таки изучать БД?
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
20.03.2013, 00:54
Цитата Сообщение от Fireblade Посмотреть сообщение
использовать типизированный файл в качестве базы. Лучше использовать его или все таки изучать БД?
Нутут уж как вам будет угодно. Мы помоему более чем объяснили что и к чему может быть.

Добавлено через 3 минуты
Цитата Сообщение от Игорь[Igor
;4277484]Трехзвенка
БД-Сервер-Клиент
Почему именно так?
Будет ли в данном случае типизированный файл считать БД собственного формата?
Опять же вернемся к 1С 8. Клиент - Платформа - БД(формата 1CD) считать трехзвенкой или нет?
Ведь по факту файл 1CD это тоже некий типизированный файл.
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
20.03.2013, 03:15
Цитата Сообщение от rdama Посмотреть сообщение
Почему именно так?
Будет ли в данном случае типизированный файл считать БД собственного формата?
В полне возможно
Миниатюры
БД для клиент-серверного приложения  
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
20.03.2013, 03:26
Игорь[Igor], да теорию я знаю слава богу не первый день в професии.
Тут, то вопрос в том считать ли 3 звенной архитектурой вариант решения задачи в схеме клиент - сервер - типизированный файл или нет и это простой клиент - сервер (т.е. 2 звенка).
А 3 звенка это сугубо решения вида клиент - сервер -СУБД.
Вот о чем речь. Мы пытались разобрать частный случай.
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 13
20.03.2013, 03:44
Цитата Сообщение от rdama Посмотреть сообщение
iifat, я про 7 не говорю. Сугубо о восьмерке. У нее есть возможность работы в таком режиме.
Ну т.е мы приходим к синхронному чтению. И по факту получается некое подобие реализации проекта на DataSnap'е.
Сервер один раз при запуске открывает наш файл и сидит с ним, пока клиент ему не пришлет запрос для каких нибудь манипуляций с данными.
Необходима реализация управления сессиями и очередями записи. Ибо на лицо конфликт "кто последний тот и папа". Хотя зависит от реализации.
Кстати технология DataSnap как раз для построение многозвенных архитектур.
В случае с Access и SQLite у нас есть такое понятие как ядро СУБД Jet в случае Access и sqlite.dll во втором случае.
Т.е. условно можем считать 3 звенкой. Хотя по факту вроде как файл-сервер.
В нашем случае если мы реализуем весь функционал по интерпритации запросов клиента в серверном приложении , то вроде как и 2 звенка получается, а если мы вынесем логику в отдельную библиотеку и будем юзать функции из нее то уже вроде как появляется некий драйвер для работы с нашим файлом. В общем офтоп страшный,но с целью разобраиться. Как интерпритировать такой архитектурный прием.
gosean, онлайн тут не причем это всего лишь термин указывающий на то, что система должна работать в реальном времени. Т.е. если один клиент занял дорожку, то второй ее занять уже не может.
В принципе если мы реализуем функционал по управлению сессиями, то есть возможность от сервера отправлять команду на обновление каждому клиенту. С целью показать, что дорожка уже занята.
И кстати в 1С 8 до сих пор существуют проблемы блокировок.
Если используешь SQL Server...то проще на форме приложения сделать обработчик при вводе на условие пустого значения поля)))) и на условие определенной даты и времени)))
0
2917 / 1947 / 214
Регистрация: 05.06.2011
Сообщений: 5,767
20.03.2013, 03:52
Цитата Сообщение от rdama Посмотреть сообщение
Будет ли в данном случае типизированный файл считать БД собственного формата?
БД собственного формата можно обозвать что угодно. Ну, или почти что угодно. Задача учебная, преподаватель согласен -- почему бы и нет?
Цитата Сообщение от rdama Посмотреть сообщение
Опять же вернемся к 1С 8. Клиент - Платформа - БД(формата 1CD) считать трехзвенкой или нет?
Опять же, как считать звенья -- вопрос тёмный. Мне нравится -- по асинхронности (в частности, 1С с базой CDX -- не клиент-сервер: вся клиент-серверность реализуется Виндой прозрачно).
Цитата Сообщение от rdama Посмотреть сообщение
В случае с Access и SQLite у нас есть такое понятие как ядро СУБД Jet в случае Access и sqlite.dll во втором случае
Работа с базой -- непременно работа в набором процедур. Jet ли, sqlite ли, своя ли -- неважно, это почти не влияет на программу. Влияет -- синхронность/асинхронность: либо вызывали подпрограмму, передали запрос -- получили ответ, либо вызвали -- получили какой-то хэндлер, которого надо ждать и потом получать результат.
Цитата Сообщение от iifat Посмотреть сообщение
Один файл. Один сервер.
Уточняю: и одна нить.
Держать очередь клиентов, очередь запросов и реагировать на изменения. И даже не БД в виде типизированного файла/файлов: БД вся в памяти, в глобальных переменных. Файлы -- только как средство хранения между запусками сервера.
Цитата Сообщение от Fireblade Посмотреть сообщение
Лучше использовать его или все таки изучать БД?
Лучше купить виллу на Багамах и забыть весь этот программёж как страшный сон. Быстрее -- имхо, вот так. Хотя могу и ошибаться, естественно.
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 13
20.03.2013, 04:39
у вас получается всего 2 таблицы....1 таблица расписание, 2 таблица постоянный клиент)))
SQL запросом выводишь таблицу занятых....самое простое решение)))) остальное реализуется либо ADO либо ODBC
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
20.03.2013, 04:58
iifat,
Цитата Сообщение от iifat Посмотреть сообщение
преподаватель согласен -- почему бы и нет?
да я же не спорю. ТС уже дали советы пусть сам определяется.
Цитата Сообщение от iifat Посмотреть сообщение
Работа с базой -- непременно работа в набором процедур
Тут не согласен. Paradox, dBase, Clipper, Betrive всеэто СУБД ни о каких процедурах речи не идет(если речь о хранимках). Если нет то предложение не ясно.
Держать очередь клиентов, очередь запросов и реагировать на изменения. И даже не БД в виде типизированного файла/файлов: БД вся в памяти, в глобальных переменных. Файлы -- только как средство хранения между запусками сервера.
Это тоже было понятно с самого начала, и не вызывало вопроса.
Но опять же если мы от SQL сервера отключили файлы БД и несем их на флешке они перестали быть БД или нет?
Ну в общем тут кому как хочется вроде и так верно, но и иначе вроде без конфликта с теорией.
gosean, о чем вы? Человек даже не знает что такое БД, а вы ему про SQL уже.
Какой SQL без знаний теории реляционных БД?
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 13
20.03.2013, 05:44
Цитата Сообщение от rdama Посмотреть сообщение
iifat,

да я же не спорю. ТС уже дали советы пусть сам определяется.

Тут не согласен. Paradox, dBase, Clipper, Betrive всеэто СУБД ни о каких процедурах речи не идет(если речь о хранимках). Если нет то предложение не ясно.

Это тоже было понятно с самого начала, и не вызывало вопроса.
Но опять же если мы от SQL сервера отключили файлы БД и несем их на флешке они перестали быть БД или нет?
Ну в общем тут кому как хочется вроде и так верно, но и иначе вроде без конфликта с теорией.
gosean, о чем вы? Человек даже не знает что такое БД, а вы ему про SQL уже.
Какой SQL без знаний теории реляционных БД?
мдаа...тогда лучше вам репетитора...либо препод разводит на деньги))))
0
2917 / 1947 / 214
Регистрация: 05.06.2011
Сообщений: 5,767
20.03.2013, 05:45
Цитата Сообщение от rdama Посмотреть сообщение
Тут не согласен. Paradox, dBase, Clipper, Betrive всеэто СУБД ни о каких процедурах речи не идет(если речь о хранимках). Если нет то предложение не ясно.

Не по теме:

Вообще-то, в пятом Клиппере кроме функций нет ничего. Ну да, мощный язык наращивания синтаксиса, но после обработки препроцессором остаются голые вызовы. Классная идея. По-моему.
Кстати, а что есть Битрив? Мне почему-то казалось, что это типа SQLite -- чисто библиотека, ну, плюс утилиты.


Но ты прав, я почему-то решил, что мы обсуждаем программы на общецелевом языке типа Паскаля, Цэ. Если взять язык со встроенной СУБД, типа тобой перечисленных, там всё по-другому и, в частности, разговор насчёт типизированного файла вообще не имеет смысла -- ну глупо же писать на Клиппере и не использовать его базы. Я, правда, когда-то так делал, когда ещё на Цэ не писал, но там программа вообще к СУБД отношения не имела.
Цитата Сообщение от rdama Посмотреть сообщение
Это тоже было понятно с самого начала, и не вызывало вопроса
Вот как? Мне казалось, как раз вызывало. Тем более что это совершенно не единственный подход к такой задаче.
Цитата Сообщение от rdama Посмотреть сообщение
если мы от SQL сервера отключили файлы БД и несем их на флешке они перестали быть БД или нет?
А если заархивировали с паролем и прочно забыли пароль? А остаётся ли компьютер компьютером после выключения? Он же ничего не компьютит
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
20.03.2013, 06:06
Betrive это один из мамонтов на равне с paradox и dBase.
Методы хранения и работы с ними крайне похожи. О SQL если не натянуть на него Pervasive можно только мечтать.
Но он сугубо СУБД и ничего больше. Оболочку писать на чем угодно можно. Встроенныхинструментов для разработки нет. Есть dll которая реализует те или иные методы и все.
Цитата Сообщение от iifat Посмотреть сообщение
Вот как? Мне казалось, как раз вызывало
Тут как раз мои вопросы бы ли в блольшей степени для того чтоб ТС понимал о чем мы говорим, мы ведь вроде ему помочь хотим , ну и для уточнения, что я все правильно понимаю.
Цитата Сообщение от iifat Посмотреть сообщение
А остаётся ли компьютер компьютером после выключения?
Поэтому я не выключаю ноут. Чтоб у него разочарования в жизни не было.
1
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
03.04.2013, 14:47  [ТС]
Снова здравствуйте! Программу я сделал, все работает ))
Теперь хочу сделать так, чтобы при запуске сервера, он сам изменял базу, т.е. чтобы записи там шли на 3 недели, начиная с сегодняшнего числа. Вот на этом этапе я и застрял. Сначала хочу удалить все записи с прошедшей датой, но выдает ошибку "missing sql property".
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.izmenenie_BD;
var data,str:string; id:integer;
begin
  data:=DateToStr(Date);
  Form1.ADOQuery1.Open;
  Form1.ADOQuery1.First;
  while ADOQuery1.FieldByName('data').AsString <> data do
  begin
    id:=ADOQuery1.Fields.Fields[0].AsInteger;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('DELETE FROM raspisanie WHERE kod=:pid');
    ADOQuery1.Parameters.ParamByName('pid').Value:=id;
    ADOQuery1.Next;
  end;
end;
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
03.04.2013, 14:57
Цитата Сообщение от Fireblade Посмотреть сообщение
при запуске сервера, он сам изменял базу
СУБД какая ?

Добавлено через 1 минуту
Цитата Сообщение от Fireblade Посмотреть сообщение
хочу удалить все записи
Так все-таки ты ( = клиент) хочешь или сервер хочет ?)
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
03.04.2013, 14:58
Во-первых, SQL у тебя не исполняется, а только формируется.
Во-вторых, при использовании SQL не нужно использовать циклы. Нужно написать один правильный DELETE, который удалит все нужные строки.
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
03.04.2013, 15:20  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
СУБД какая ?
Так все-таки ты ( = клиент) хочешь или сервер хочет ?)
СУБД MS Access. Сервер изменяет при запуске )
Цитата Сообщение от Grossmeister Посмотреть сообщение
Во-первых, SQL у тебя не исполняется, а только формируется.
Во-вторых, при использовании SQL не нужно использовать циклы. Нужно написать один правильный DELETE, который удалит все нужные строки.
А как так сделать тогда? ) В SQL я не силен
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
03.04.2013, 15:33
Цитата Сообщение от Fireblade Посмотреть сообщение
СУБД MS Access
Тогда "он сам изменял" не получится.
По смешной причине - в MS Access сервера вообще нет.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
03.04.2013, 15:33
Цитата Сообщение от Fireblade Посмотреть сообщение
А как так сделать тогда? ) В SQL я не силен
1. SQL (DML-операция) отправляется на выполнение командой Execute, ExecSQL и проч. - зависит от компонентов
2.
SQL
1
2
3
DELETE 
FROM raspisanie 
WHERE fld_date BETWEEN date1 ANF date2
Как задавать даты в Access - спроси у них на форуме (это различается в разных СУБД)
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
03.04.2013, 15:46  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
Тогда "он сам изменял" не получится.
По смешной причине - в MS Access сервера вообще нет.
Под словом "сервер" я имел в виду серверное приложение. У меня задание написать клиент-серверное приложение.
Цитата Сообщение от Grossmeister Посмотреть сообщение
1. SQL (DML-операция) отправляется на выполнение командой Execute, ExecSQL и проч. - зависит от компонентов
2.
SQL
1
2
3
DELETE 
FROM raspisanie 
WHERE fld_date BETWEEN date1 ANF date2
Как задавать даты в Access - спроси у них на форуме (это различается в разных СУБД)
Дата у меня типа string. Этот код означает, что из поля fld_date удалить все строки с "date1" до "date2" ?
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
03.04.2013, 16:11
Цитата Сообщение от Fireblade
Этот код означает, что из поля fld_date удалить все строки с "date1" до "date2" ?
Нет, это означает, что надо удалить все СТРОКИ, в котором поле fld_date (или как оно у тебя называется) содержит значения даты в указанном диапазоне

PS
В написанном мной SQL д.б. AND, а не ANF
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 27
03.04.2013, 18:22  [ТС]
Цитата Сообщение от Grossmeister Посмотреть сообщение
Нет, это означает, что надо удалить все СТРОКИ, в котором поле fld_date (или как оно у тебя называется) содержит значения даты в указанном диапазоне

PS
В написанном мной SQL д.б. AND, а не ANF
Пробовал с полем data так сделать, мне выдавало ошибку "несоответствие типов данных в выражении условия отбора". Решил, что не соответствуют типы в Access и Delphi. Тогда решил попробовать удалить по уникальному коду, но тоже выдает ту же ошибку (((
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.izmenenie_BD;
var str:string; id:integer; data1,data2:integer;
begin
  data1:=1;
  data2:=3;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('DELETE FROM raspisanie WHERE êîä BETWEEN ''data1'' AND ''data2''');
  Form1.ADOQuery1.Open;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2013, 18:22

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru