Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Как создать свою собственную базу данных?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Chainiku



Зарегистрирован: 12.02.2004
Сообщения: 3

СообщениеДобавлено: Чт Фев 12 2004 23:58    Заголовок сообщения: Как создать свою собственную базу данных? Ответить с цитатой

Задача: Необходимо создать базу данных, не используя BDE, SQL и т.д. Изучаю Дельфи.

Как создать свою собственную базу данных? Где можно почитать в сети на эту тему?
Где посмотреть примеры кода? Если данных очень много, как их расположить в памяти?
К примеру более чем 2000 сотрудников – фамилии, зарплата. Нужно ли запихивать все данные в память, чтобы перемещаться по ним и оперировать более быстро с возможными модификациями? А может быть загружать в память только одну фамилию с зарплатой, позицируя в файле на необходимые данные и в случае их изменения сразу проводить перезапись файла? Я очень мало знаю про все это. Помогите "чайнику" – пытающемуся вырасти до "котла".

Совет о вновь изобретаемом велосипеде недавать Very Happy .
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
wildwind



Зарегистрирован: 03.02.2004
Сообщения: 268
Откуда: Москва

СообщениеДобавлено: Пт Фев 13 2004 12:29    Заголовок сообщения: Ответить с цитатой

Это даже хорошо, что ты считаешь себя "чайником". Вот мой совет. Не ищи советов всяких там котлов и самоваров. Думай! У тебя есть великолепная возможность все ключевые решения принимать самому. И потом с гордостью сказать: "Эту базу данных я сделал сам!". К тому же есть вероятность, что тебе удастся изобрести нечто принципиально новое и оригинальное.

А план может быть такой.

Во-первых, определи, для каких задач будет использоваться твоя база. Какими объемами данных ворочать и в какой среде будет работать. Все это бери не с потолка, а из жизни. Запиши все на бумаге (то есть в Notepad'е Smile)
Во-вторых, продумай внутреннюю и внешнюю организацию данных, ориентируясь на первый пункт. Чем проще она будет, тем лучше будет работать. Не пытайся копировать форматы DBF, Access или какие-либо еще. Опять же все подробно запиши.

В-третьих, прикинь, какими минимальными средствами Дельфи можно реализовать все то, что ты напридумывал на втором этапе. Если известных тебе средств не хватит, копайся в доке и VCL, там есть много полезного.

В-четвертых, запасись терпением, едой, пивом, и вперед - кодировать! И тестировать. И помни - чем проще, тем лучше.

А почитать можно например здесь, на ЦИТФоруме: СУБД / Учебные пособия и обзоры / Основы современных баз данных. Но! Советую лезть туда не раньше, чем окажешься на третьем или четвертом этапе.

Удачи!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
совсем незнакомый



Зарегистрирован: 24.12.2003
Сообщения: 183
Откуда: Israel

СообщениеДобавлено: Пт Фев 13 2004 15:48    Заголовок сообщения: Ответить с цитатой

вопрос создания prosten'koj базы данных ... возникал у меня. нам нужно было всё создавать в памяти, поэтому по-настоящему мы не возились с прогулками по файлам,
и т.д. но повозившись "немного", мы поняли сколько
работы уходит на разработку приличной СУБД.
советую лучше всего определиться с вопросами реализации:
1) что мне нужно от базы данных [величина, скорость реагирования, кол-во одновремменных запросов, кол-во информации, кол-во памяти, границы, безопасность и т.д.]
2) потому как вопрос изобретения велосипеда у вас не стоит, посоветую поосторожней отнестись к языку или АПИ манипуляций вашей Б.Д.: в противном случае вы большее время будете разрабатывать интерфейс.

Удачи.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Chainiku



Зарегистрирован: 12.02.2004
Сообщения: 3

СообщениеДобавлено: Пт Фев 13 2004 17:44    Заголовок сообщения: Ответить с цитатой

Большое спасибо. Структура-то есть. Smile
Хочу понять как базы данных устроены программно – то есть, как данные прописываются в саму базу? Каким образом осуществляется доступ к данным одновременно?

Мои рассуждения – поправьте, если можете. Этого я нигде не читал, это мое представление.
1. Имеется программа, код которой описывает некоторые правила формирования файла на жестком диске.
2. После ввода данных в столбик 1 строку 1, информация будет хранится в некоторой области оперативной памяти, определенной программным компонентом, например Delphi – StringGrid.
3. Затем значение информации будет скопировано из памяти в файл на жестком диске.
4. Или пункт 3 не будет выполняться и значения всех ячеек будут записываться из памяти в файл по завершении работы программы. (С моей точки зрения это неправильный путь, так как данные при сбое питания компьютера будут уничтожены, поэтому пункт 3 наиболее предпочтительней, так как фиксирует поэтапно значение каждой ячейки и данные могут быть доступны другим пользователям-клиентам).
5. Как правильно устроить файл с информацией?
Предполагаю, что его устройство таково – шапка базы данных, то есть информация о количестве столбиков и строк, количество отведенных байт для ячейки столбика 1 строки 1, столбика 2 строки 1 ... и т.д
Затем некое сочетание байтов или псевдосимвол, дающий разделение между шапкой базы данных и самими данными. Когда файл загружается программой, позицирование на этом псевдосимволе означает начало данных. Таким образом определив в шапке базы данных байтную длину данных, можно перемещаться по данным в файле смещаясь на определенное количество байт вперед или назад. В шапке базы данных имеется информация о количестве столбиков и строк. Значит структура файла будет похоже на следующее:

Шапка базы данных
------------------------
Данные(1 столбик)
Строка 1, Строка 2, Строка 3 ... Строка N
------------------------
Данные(2 столбик)
Строка 1, Строка 2, Строка 3 ... Строка N
------------------------
Данные(N столбик)
Строка 1, Строка 2, Строка 3 ... Строка N


Если вышеописанная структура правильна, дайте знать, пожалуйста.
Как исказить файл базы данных, чтоб при просмотре в обыкновенном режиме F3, не было видно текста и вообще данных? Понимаю, что ужасно тупой вопрос, но поверьте если база данных просто громадная, то проводить шифрование файла целиком - это коварство. Так как для доступа к данным понадобится сначала подвергнуть файл к дешифровке, а значит время доступа к базе увеличится. Значит надо шифровать данные на этапе записи ячейки в файл? Сжимаемы ли базы данных – имеется ввиду простая архивация в момент работы с ней или это тоже влияет на время доступа?

Всё это меня интересует как простого "чайника".

Друзья поделитесь... знаниями. Спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
wildwind



Зарегистрирован: 03.02.2004
Сообщения: 268
Откуда: Москва

СообщениеДобавлено: Пт Фев 13 2004 20:51    Заголовок сообщения: Ответить с цитатой

Ну-у-у, погнали! наши городских... А где же первый этап? Эх, лень-матушка, вперед нас родилась. Все-таки, подумай вначале вот над чем:

    * Твоя база будет персональная или многопользовательская? Если персональная, то не надо думать про одновременный доступ. Если многопользовательская, то не надо думать про StringGrid'ы. То есть надо, но в последнюю очередь.
    * Зачем твоей базе шифрование? Она что будет лежать в расшаренной папке? или на FTP сервере?
    * Зачем твоей базе сжатие? С ней будут работать на дискете?
Постарайся ответить аргументированно на эти вопросы. Потом поедешь дальше.

______________________________

По твоим рассуждениям, раз уж вывалил. В целом мыслишь верно. Насчет стуктуры файла - представь такую ситуацию. В нем уже есть много строк и хотят добавить новую. В сколько мест в файле нужно будет вставлять данные? То же и с удалением. А что если поменять местами строки и столбцы, типа:

Шапка
--------------
Срока 1
столбец 1, столбец 2, ..., столбец N,
...
Срока M
столбец 1, столбец 2, ..., столбец N,
-----

Получили нечто похожее на структуру DBF. Про нее я уже говорил - копировать не стоит.

А почему собственно база данных должна иметь табличную структуру? Почему например не дерево? Посмотри на реестр Windows - тоже база. Древовидная однако.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Гость






СообщениеДобавлено: Сб Фев 14 2004 20:53    Заголовок сообщения: Ответить с цитатой

если очень хочется понять (т.е. увидеть):

пойди на:

www.mysql.com
www.postgres.com

и там увидишь ответы на эти вопросы.

а в общем проблема "критического участка кода"
решается на системном уровне, т.е. есть инструменты для защиты к.у.к.:
семафоры, мутексы и прочие твари.

в виндах... не очень разобрался - но есть даже что-то типа
CriticalSection()
и в MFC есть класс CMutex

удачи.
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...