Pluto
Март 17, 2013 17:18:42
Моя программа при запуске проверяет наличие файла БД (SQLite) по определённому пути и при его отсутствии создаёт новую БД. Создание таблиц в БД (CREATE TABLE…) прописано в тексте программы. Но в данной БД будут нужны не только те таблицы, которые будет заполнять пользователь, но и таблицы-справочники, которые пользователем изменяться не будут; к примеру, допустим, таблица профессий.
Как-то мне кажется, что создавать структуру таблиц-справочников в программе и оттуда же, из текста программы, их заполнять посредством INSERT INTO table1 (id_prof, prof_name) VALUES (1, “водитель”) и т.д., это что-то не то.
А как по уму-то это сделать?
Справочники хранить в каких-нибудь CSV, XML, просто TXT файлах и подгружать их в БД при каждом старте программы? А для редактирования этих справочников ещё одну программку рисовать?
Создать отдельную БД, в которой посредством какой-нибудь Sqliteman создать эти таблицы-справочники? А как их потом объединять с таблицами из основной БД? Ведь таблицы пользователя должны быть связаны с таблицами-справочниками.
Shaman
Март 17, 2013 17:59:46
Можно хранить прямо в тексте, в виде мультистрок. При создании БД распарсивать их содержимое.
Pluto
Март 17, 2013 18:37:05
Что есть мультистрока? Что значит “распарсивать”?
А если справочник нужно обновить (добавить строки), лезть для этого в код программы?
Забыл добавить, я не профессиональный программист, я программист-любитель: глубокими знаниями в программировании не обладаю.
Shaman
Март 17, 2013 19:09:46
Я подобные данные содержал в отдельном модуле, где они не смешивались ни с чем другим и легко поддавались правке (уж полегче чем xml)
somedata='''one two three
four five six''' #это мультистрока
Оттуда они импортировались и, например, заносились в БД
for r in somedata.split('\n'):
MyInsert(r.strip().split(' '))
Это далеко не единственный возможный подход.
reclosedev
Март 17, 2013 19:36:28
Pluto
А как их потом объединять с таблицами из основной БД?
http://www.sqlite.org/lang_attach.htmlА по поводу как хранить и в чем редактировать, это от сценариев использования и потенциальных пользователей зависит.
doza_and
Март 17, 2013 21:09:10
Pluto
А как по уму-то это сделать?
Базы данных это плод труда множества людей, и один раз создав их дальше холят и причесывают многие годы. Не стоит рассчитывать что база у вас будет 100 раз на дню создаваться.
Pluto
Март 18, 2013 17:02:40
doza_and
Базы данных это плод труда множества людей
В моём случае моя БД - это плод моего же труда.
И что значит, база не будет сто раз на дню создаваться? К чему эта фраза?
Shaman
Это далеко не единственный возможный подход.
А какие ещё-то есть?
Мне пока что вариант с ATTACH DATABASE видится самым простым и приемлемым. В этом случае я могу оперативно добавлять/изменять/модифицировать данные в справочниках посредством какой-нибудь программы для работы с БД SQLite. Хоть всё той же Sqliteman.
—–
Я вообще привык к досовому фокспро. Там я могу связать любую dbf-таблицу из любого места на диске с любой другой dbf-таблицей из не менее любого места на диске.
doza_and
Март 18, 2013 21:30:14
Pluto
К чему эта фраза?
Я считаю правильным один раз специальным скриптом импортировать ваши справочники, в базу. Скрипт стереть, исходники справочников тоже. Дальше пользоваться только справочниками из базы.
Pluto
Март 20, 2013 16:51:45
doza_and
Прям конспирация какая-то…
Зачем же мне исходники справочников удалять?
А если мне понадобится установить экземпляр программы на другом компьютере?