Darkbasic | Дата: Воскресенье, 31 Октября 2021, 19:25 | Сообщение # 1 |
Revival Deiphi
Сейчас нет на сайте
| Всех приветствую. Зарегистрировался на данном форуме далеких 10 лет назад, было тогда 13 лет отроду, как увлекся программированием. Было всякое, что то пытался, что то делал, но все в итоге так и осталось где-то на полках пылиться, не достиг я в данной сфере ничего от слова совсем. Время как-то прошло, теперь я более менее взрослый человек и решил все таки идти за своей маленькой мечтой, ведь как сказал один из мною прослушиваемых исполнителей "Мечта - таблетка, если жизнь спазм", но не суть. Поступил я на курсы, время к диплому(за что будет корочка, но не так важно) и есть у меня небольшой набросок проекта. Это что-то вроде готовой БД на чистом С. Я понимаю, что есть sql, plpgsql, mysql и им подобные, но моя цель не в этом, в укреплении и углублении знаний по С, хотя как известно, язык угасает(нет, конечно на нем еще написана добрая половина всяких драйверов и устройства различные на нем еще работают), и все работают уже минимум на С++, ведь ООП, как известно, смогло вытеснить процедурное программирование. Ну-с, извиняюсь за тираду, перейдем к сути. Хотелось бы вас, всех гуру программирования(это сейчас не в обиду, не подкалываю, а действительно с уважением обращаюсь) попросить обратить внимание на мою небольшую программку(и действительно, она весит пока что 33 Кб), которая является чем-то вроде готовой БД. В "БД" есть следующие поля: Номер человека, его ФИО, его дата поступления и отчисления. Что то вроде универской БД в самом простом виде. Что на данный момент умеет программа: 1)Соответственно запоминать данные, то есть можно их вводить(для простоты тестов даты генерируются случайным образом, вводятся только ФИО ). Для ФИО есть функция, что при любом регистре программа преобразует данные в нормальный вид. Пример иВАнов - преобразуется в Иванов и так далее. 2)Читать эти данные. 3)Сортировать эти данные по нужному выбранному полю(ФИО сортирует по отдельности, то есть либо по фамилии, либо по имени, либо по отчеству и по первой букве пока что, ну а числа соответственно в порядке возрастания). 4)Поиск по нужному полю. Тут пока реализовано кривовато, по ФИО ищет только точные совпадения строка в строку, либо по первой букве следующей и предыдущей, с цифрами аналогично, либо точные данные, либо ближайшие +-1. 5)Удалять элемент полностью. 6)Изменять любые данные в выбранном элементе. 7)Записывать все введенные данные в файл и при последующей открытии программы считывать их по новой. Пока что это все, что умеет. Программа соответственно построена на консольной основе, так как пока видимо мне не хватает какой-то программистской смекалки понять WINAPI, чтобы все это красиво в окошечке было. Ссылка на сам исполняющий файл Ссылка на скачивание. При запуске после введения данных создастся файл data.txt, при втором запуске создастся файл last_num.txt рядом, первый хранит всю "БД", во втором хранится номер последнего элемента. Хотелось бы услышать какой-то критики, напутствий и всего такого, так как мне нравится этим заниматься, хоть оно и не приносит мне доход, плюс по С очень мало тем в принципе, никто не занимается уже этим языком по крайней мере здесь. Всем заранее спасибо!
|
|
| |
Storm54 | Дата: Воскресенье, 31 Октября 2021, 21:21 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Если пишете диплом по этой теме, то очень странно видеть путаницу в терминах БД и СУБД. Ваша программа как раз-таки является неким подобием СУБД. Касаемо программы: Формат хранения выбран неудачный по нескольким причинам: 1. В текстовом формате хранить избыточно. Особенно, если планируется добавлять различные типы данных. 2. Столбцы разделены пробелами, что уже исключает возможность использования этих символов в качестве полезных данных. 3. Строки таблицы разделены символами переноса строк, что также исключает возможность хранить многострочные документы в БД. Функционал СУБД очень скуден, по сути реализована только одна таблица с захардкоженным типом данных, подробнее: 1. Отсутствие возможности создавать и настраивать базы данных, таблицы и т.п. 2. Естественно, ни о каком ACID и речи даже не может идти. 3. Догадываюсь, что какой либо встроенной оптимизации поиска также нет.
Похвально, что пробуете писать на C - хоть немного разберетесь с основами работы с памятью, но проект очень слабый и даже рассматривать нечего. Если была задумка сделать СУБД, то можно было бы поставить конкретную задачу и попытаться ее реализовать - тот же журнал транзакций попытаться сделать и понять какую задачу он решает.
Советую прочитать любую книгу по SQL, чтобы понять, какие вообще задачи решают SQL СУБД. Хорошая книга "Введение в SQL" Мартина Грабера.
Сообщение отредактировал Storm54 - Вторник, 02 Ноября 2021, 15:43 |
|
| |
drcrack | Дата: Понедельник, 01 Ноября 2021, 00:30 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| Цитата 2. Столбцы разделены пробелами, что уже исключает возможность использования этих символов в качестве полезных данных. 3. Строки таблицы разделены символами переноса строк, что также исключает возможность хранить многострочные документы в БД. ну это решается экранированием хотя согласен что проект в целом странный
|
|
| |