Найти - Пользователи
Полная версия: БД и справочники для БД. Как эти справочники хранить?
Начало » Базы данных » БД и справочники для БД. Как эти справочники хранить?
1
Pluto
Моя программа при запуске проверяет наличие файла БД (SQLite) по определённому пути и при его отсутствии создаёт новую БД. Создание таблиц в БД (CREATE TABLE…) прописано в тексте программы. Но в данной БД будут нужны не только те таблицы, которые будет заполнять пользователь, но и таблицы-справочники, которые пользователем изменяться не будут; к примеру, допустим, таблица профессий.

Как-то мне кажется, что создавать структуру таблиц-справочников в программе и оттуда же, из текста программы, их заполнять посредством INSERT INTO table1 (id_prof, prof_name) VALUES (1, “водитель”) и т.д., это что-то не то.

А как по уму-то это сделать?
Справочники хранить в каких-нибудь CSV, XML, просто TXT файлах и подгружать их в БД при каждом старте программы? А для редактирования этих справочников ещё одну программку рисовать?


Создать отдельную БД, в которой посредством какой-нибудь Sqliteman создать эти таблицы-справочники? А как их потом объединять с таблицами из основной БД? Ведь таблицы пользователя должны быть связаны с таблицами-справочниками.
Shaman
Можно хранить прямо в тексте, в виде мультистрок. При создании БД распарсивать их содержимое.
Pluto
Что есть мультистрока? Что значит “распарсивать”?
А если справочник нужно обновить (добавить строки), лезть для этого в код программы?

Забыл добавить, я не профессиональный программист, я программист-любитель: глубокими знаниями в программировании не обладаю.
Shaman
Я подобные данные содержал в отдельном модуле, где они не смешивались ни с чем другим и легко поддавались правке (уж полегче чем xml)
somedata='''one two three
four five six''' #это мультистрока
Оттуда они импортировались и, например, заносились в БД
for r in somedata.split('\n'):
    MyInsert(r.strip().split(' '))
Это далеко не единственный возможный подход.
reclosedev
Pluto
А как их потом объединять с таблицами из основной БД?
http://www.sqlite.org/lang_attach.html

А по поводу как хранить и в чем редактировать, это от сценариев использования и потенциальных пользователей зависит.
doza_and
Pluto
А как по уму-то это сделать?
Базы данных это плод труда множества людей, и один раз создав их дальше холят и причесывают многие годы. Не стоит рассчитывать что база у вас будет 100 раз на дню создаваться.
Pluto
doza_and
Базы данных это плод труда множества людей
В моём случае моя БД - это плод моего же труда.
И что значит, база не будет сто раз на дню создаваться? К чему эта фраза?


Shaman
Это далеко не единственный возможный подход.
А какие ещё-то есть?

Мне пока что вариант с ATTACH DATABASE видится самым простым и приемлемым. В этом случае я могу оперативно добавлять/изменять/модифицировать данные в справочниках посредством какой-нибудь программы для работы с БД SQLite. Хоть всё той же Sqliteman.
—–
Я вообще привык к досовому фокспро. Там я могу связать любую dbf-таблицу из любого места на диске с любой другой dbf-таблицей из не менее любого места на диске.
doza_and
Pluto
К чему эта фраза?
Я считаю правильным один раз специальным скриптом импортировать ваши справочники, в базу. Скрипт стереть, исходники справочников тоже. Дальше пользоваться только справочниками из базы.
Pluto
doza_and
Прям конспирация какая-то…

Зачем же мне исходники справочников удалять?
А если мне понадобится установить экземпляр программы на другом компьютере?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB