Вот хитрый вопрос - как мне программным образом создать и опросить базу данных, содержимое которой я не могу предвидеть?
Я внедряю стандартную систему ввода данных. Пользователь может создавать формы PHP с макетом WYSIWYG и использовать их для любых целей. Он также может запросить ввод.
Итак, у нас есть три этапа:
- форма разработана и сгенерирована. Это разовая процедура, хотя форму можно редактировать позже. Это создает базу данных.
- кто-то или несколько человек используют форму - скажем, для ежедневных отчетов о продажах, учета запасов, заработной платы и т. Д. Их ввод в формы записывается в базу данных.
- другие, возможно, руководство, могут запрашивать базу данных и генерировать отчеты.
Поскольку эти формы являются общими, я не могу предсказать структуру базы данных - кроме как сказать, что она будет отражать поля формы HTML и состоять из ввода данных из набора полей редактирования, заметок, переключателей и тому подобного.
Вопросы и замечания:
А) Как лучше всего структурировать базу данных с точки зрения таблиц и столбцов? Как насчет первичных ключей? Моей первой мыслью было использование имени элемента управления для идентификации каждого столбца, затем я понял, что пользователь может редактировать форму и переименовывать, так что, возможно, «имя» становится «сотрудником» или «зарплата» становится «: зарплата». Я склоняюсь к уникальному номеру для каждого.
Б) как лучше всего набирать строки? Я думал о временной метке, чтобы я мог сделать запрос, и о столбце для идентификатора строки из A)
C) Я должен обработать переименование / вставку / удаление столбца. Для удаления, я не уверен, следует ли удалять данные из базы данных. Даже если пользователь больше не вводит его из формы, он может захотеть запросить то, что было введено ранее. Или могут быть некоторые юридические требования для сохранения данных. Любые ошибки в столбце переименовать / вставить / удалить?
D) Для запроса я могу заставить мой PHP опросить базу данных, чтобы получить имена столбцов и сгенерировать форму со списком, где каждая запись имеет имя столбца базы данных, флажок, чтобы указать, следует ли его использовать в запросе, и на основе типа столбца, некоторые критерии выбора. Этого должно быть достаточно для создания поисковых запросов, таких как "position = 'старший продавец' и зарплата> 50k".
E) Мне, вероятно, нужно сгенерировать некоторые причудливые диаграммы - графики, гистограммы, круговые диаграммы и т. Д. Для получения результатов числовых данных во времени. Мне нужно найти хороший FOSS PHP для этого.
F) Что еще я забыл?
Мне все кажется очень сложным, но я - база данных n00b - может быть, это просто для вас, гуру?
Редактировать: пожалуйста, не говорите мне не делать этого. У меня нет выбора: - (
Редактировать: в реальной жизни я не ожидаю, что переименование / вставка / удаление столбца будет частым. Однако возможно, что после нескольких месяцев работы может потребоваться изменение базы данных. Я уверен, что это происходит регулярно. Я боюсь, что я плохо сформулировал этот вопрос и что люди думают, что изменения будут происходить так или иначе каждые 10 минут или около того.
Реально, мои пользователи будут определять базу данных, когда выкладывают форму. Они могут сделать это правильно с первого раза и никогда не изменить его - особенно если они конвертируют из бумажных форм. Даже если они решат измениться, это может произойти только один или два раза, спустя месяцы или годы - и это может произойти в любой базе данных.
Я не думаю, что у меня есть особый случай, и что мы не должны концентрироваться на изменениях. Возможно, лучше сконцентрироваться на связи - какова хорошая схема первичного ключа? Скажите, может быть, для одного ввода текста, одного числового значения и заметки?