|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проектирование БД и Клиента
Доброго времени суток всем участникам!
Сразу перейду к делу. Постановка задачи: Создать программу подбора персонала с использованием бд. С ТЗ уже определился, осталось спроектировать по ТЗ бд и написать саму прогу клиента. Отсюда ряд вопросов: 1. Как правильно спроектировать бд? (имеется ввиду хранить все данные о соискателях и фирмах-работодателях только в 2х таблицах, либо разбить каждую на дополнительные: Что-то вроде раздел "Образование", например, в отдельной таблице и т.д...) 2. Как правильно оформить внешний вид программы? 3. Какого провайдера для бд выбрать? PS: Люди добрые , я новичок еще в программировании подобного рода приложений, поэтому помогите кто чем может. Заранее благодарю. |
#2
|
||||
|
||||
C чего начать?
Если попорядку сперва почитать бы литературу попрограмированию в среде Делфи и работе с БД (принципы построения реляционных БД и взаимодействие программ Делфи с БД)
1. прочитай про реляционные базы. 2. посмотри похожие программы или читай Архангельского внешний вид должен быть по возможности стандартным и удобным для пользователя (чтобы тот не искал пол часа кнопку выкл 3. а это зависит от маштабов, удобства переноса программы и от твоих привычек Как итог: если бы выложил полное ТЗ то мож ктонибудь за пару вечеров тебе основу программы накодил бы а так вопросы настолько обширные, что по этому поводу килограммовые книги пишут (в том числе и для начинающих). Посмотри также FAQ на сайте. Наилутших пожеланий тебе и удачи! |
#3
|
|||
|
|||
Спасибо большое за ответ, он вполне емкий. Немного уточню, так как вижу небольшое непонимание. Дело в том, что с теориеей проектирования бд я знаком (в теории :-)), вопросы обширные потому, что не могу сформулировать конкретику. Постараюсь в ближайшее время сформировать "кратенькое", но подробно изложенное ТЗ и выложить его.
Цитата:
И еще вопросик, если кто-то сталкивался с подобными программами -- киньте ссылку, я почему-то не нашел :-(( |
#4
|
||||
|
||||
Ну если теорию читал
по базам - выдели сущности и информацию и попробуй ее расположить непротиворечиво и без избытка если у тебя для сущности "Фирма" будет храниться: - Название - адрес - телефоны - тип фирмы ... Можно конечно для каждого типа фирмы создавать свою таблицу и дентичную по структуре, но вдруг надо добавить новый тип. Можно в поле тип так и писать "Образование", "Торговля"... только можно потом случайно записать для одной фирмы тип "тАрговля" и фильтры работать не будут А можно завести таблицу "Типы фирм" - ключ - наименование типа а в таблице "Фирма" в столбце - тип фирмы хранить этот ключ да еще его проиндексировать а потом еще определиться с взаимосвязями между таблицами и тд. Про провайдера: - если использовать BDE то для переноса программы прийдется перетаскивать и его - зато во Всех Виндах есть ADO и ODBC - есть еще компоненты позволяющие напрямую работать с БД или вообще работать с отдельными таблицами без БД - но если надо обрабатывать миллионы записей - то без сервера БД необойтись (MSSQL или MySLQ или Postgres...) в общем гдето так по поводу примеров попробу посмотреть http://www.delphisources.ru/pages/so...ager_base.html и http://www.delphisources.ru/pages/so...base/1_db.html прям здесь на сайте |
#5
|
|||
|
|||
Цитата:
С этим все понятно и не проблема. :-) Думаю использовать ADO (тем более немного с ним работал). В качестве провайдера думаю использовать базу Access. Вот только не уверен, что на современном офисном компьютере при достаточно больших выборках прога не будет тормозить. :-( И еще, при использовании бд на Access, возможен ли вариант сетевого использования программы? Спасибо. |
#6
|
||||
|
||||
Цитата:
А насчёт использования по сети: использовать конечно можно, но будет создаваться локальная копия и поэтому работа по сети совершенно не целесообразна - фай сервер не рулит! --------------------------------------------- Программирование - не профессия, а стиль жизни |
#7
|
||||
|
||||
Если предпологается работа по сети и спреличными обьемами данных
осваивай сразу работу с серверами БД - монстром от Майкрософт - или бесплатным MySQL Еще вариант трехзвеннку сделать но тут писать намного больше Вчера натолкнулся на статейку Организация работы MS Access-приложения с MySQL http://www.interface.ru/home.asp?artId=9317 В ней описывается (для Access): 1. Установить на сервере MySQL 2. Настроить поддержку кириллицы для MySQL 3. Создать базу данных Вашего приложения 4. Установить драйвер ODBC на все машины, на которых работает Ваше приложение 5. В случае MS Access 2003 -- установить обновления для корректной работы ODBC 6. Изменить код приложения -- для автоматического подключения таблиц Пункты 1-4 помогут и тебе а после установки ODBC можно работать через компоненты ADO Есть еще статейки и на этом сайте по MySQL. Ну а дальше дерзай (при неправильной настройке ADO компонентов они будут тебе тоже делать локальные копии данных) Ну а мне щас приходиться кодить в связке HTML - JS - PHP - Postgres на одной из старых версий Линиксов |
#8
|
|||
|
|||
Столкнулся сейчас еще с одной проблемой.(Ну по крайней мере для меня).
Так как кодил с использованием бд мало, то всегда использовал только DBGrid, а тут такая ситуация: - После двойного клика на строке грида я получаю uid, создаю с ним запрос, выполняю его (через TADOQuery), вопрос: Как мне обработать результат запроса и запихнуть все это на форму в такие компоненты как TEdit и т.п.? Почему-то теряются значения в дбгрид-е и вылетает ошибка: Ошибка в параметре FROM. Проверял, никакой ошибки нет... Код: ADOQuery1.Close; ADOQuery1.SQL.Add('SELECT * FROM tbl_names'); ADOQuery1.Open;// Это когда просто вывод в дбгрид а потом такой код: ADOQuery1.SQL.Add('SELECT * FROM tbl_names WHERE uid='+IntToStr(id)); ADOQuery1.ExecSQL; ShowMessage(ADOQuery1.FieldByName('name').AsString ); // Ну для проверки, например... ХЭЛП!!!!!! Последний раз редактировалось acl, 11.03.2008 в 14:41. |
#9
|
||||
|
||||
Код:
ADOQuery1.SQL.Add('SELECT * FROM tbl_names WHERE (uid LIKE "'+IntToStr(id)+'")'); Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#10
|
||||
|
||||
Цитата:
Нельзя использовать ExecSQL для запросов которые возвращают данные. Используй Open; --------------------------------------------- Программирование - не профессия, а стиль жизни |
#11
|
|||
|
|||
Цитата:
|
#12
|
|||
|
|||
Цитата:
|
#13
|
|||
|
|||
Цитата:
ADOQuery1.Params.ParamByName('Id').Value := Id; |
#14
|
||||
|
||||
Delphi help:
(дословно): Description Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE). используй ExecSQL для выполнения запросов не возвращающих данных (таких как INSERT, UPDATE, DELETE, and CREATE TABLE) |
#15
|
||||
|
||||
Цитата:
- есть еще DBEdit... - если хочешь чтоб в гриде одно а в другом месте другое создай еще один Query насчет Params - тогда уж лучше создать другой параметрический Query и задавать ему параметры, а то и вовсе связку с первым мастер - деталь сделать (если правильно помню) про лайк ты и сам знаешь Удачи |