2014-01-28 3 views
-2

Пожалуйста, я создаю систему базы данных для группы, используя MySQL и php.I я столкнулся с некоторыми проблемами, этоДинамическая система баз данных с PHP и MySQL

1.Я хочу, чтобы система баз данных динамической - таким образом, когда администратор, использующий систему, сможет добавлять столбцы в определенную таблицу из передней части, не имея необходимости знать что-то о mysql и php.

2. Также я хочу, чтобы администратор, который не знает mysql и php, может добавлять таблицы в базу данных через интерфейс (страница PHP).

3.С учетом вышеупомянутых проблем в (1 и 2), как я могу добавить столбцы, добавленные администратором, в форму (php-страницу) из базы данных и как проверить ошибки в форме.

Пожалуйста, это примеры, чтобы разъяснить, что я сказал.

a. Что делать, чтобы клиент мог добавлять столбцы в существующую таблицу в базе данных без какой-либо помощи технической команды?

b.Что делать, чтобы клиент добавлял таблицы в существующую базу данных без помощи технической команды?

c.Как добавить столбцы, добавленные администратором в форму, а также проверить наличие ошибок на форме (php-страница).

Любой помощь welcomed.Thank Вы

+0

Вы знаете php? Вы знаете SQL, как добавлять столбцы/строки? Если да, то в чем проблема? Вам просто нужно программно создать много форм и проверить их на входные ошибки, и когда форма отправлена, выполните код, который хочет эта форма, например. если пользователь нажал кнопку добавления столбца, появилась новая форма, в которой он вводит тип поля (int, varchar), длину и имя. В php вы поймаете что-то вроде этого: 'ALTER TABLE selected_table ADD column VARCHAR (255) NOT NULL;' where 'selected_table' и' varchar (255) 'являются переменными. Но это может быть трудная и скучная работа :) –

+0

см. Http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model –

ответ

1

Ну в принципе вы можете просто писать запросы, как ALTER TABLE xxx ADD column VARCHAR(100) и т.д. заполнение требуемых значений из формы. Это, однако, сильно обескураживает. Это не только означает, что ваш скрипт сможет выполнять запросы, которые обычно могут выполняться только пользователями (mysql) с правами администратора, а также очень подвержены проблемам безопасности.

Читают вопрос сразу начинает меня думать о системе EAV -like1 базы данных, хотя это весьма спорно схема для использования в реляционной базе данных системы, как MySQL, чтобы использовать в любой системе, на самом деле ...

несколько проблем, которые приходят на ум (большинство точек относятся к EAV слишком кстати)

  • Вы потеряете логическую структуру

    Как любого типа да ta может быть привязана к любому типу сущности, поэтому - по крайней мере в вашей базе данных - нет логической связи между вашими атрибутами (или столбцами в вашем случае) и вашими сущностями (таблицы в вашем случае), а затем просто присутствовать.

  • Очень, очень трудно поддерживать

    Если таблицы растут, какие столбцы должны индексироваться? Как вы могли бы предотвратить кого-то невежественного - и, как вы говорите, по умолчанию - добавление 200 столбцов в таблицу? Здесь можно суммировать многочисленные другие проблемы ...

  • Что относительно ограничений?

    Как вы собираетесь решить, кому разрешено добавлять/удалять/редактировать столбцы? И как вы вынуждаете их выбирать правильный тип столбца?Или когда добавляется таблица: какой должен быть первичный ключ (coumpound)? Помните: ваши администраторы не знают. Я предполагаю, что это вызовет необходимость мета-таблиц, содержащих такую ​​информацию. Вы уверены, что хотите написать всю логику для этого? И вы уверены, что хотите отслеживать ошибки и т. Д., Которые, скорее всего, позволят вашей системе рухнуть, как карточный домик?

  • Он пахнет как лист первенствовать ...

    Без функций, которые есть, но все же. Итак, почему бы не отправить вашим администраторам ссылку на документы google? ;)

Нет на самом деле, это звучит как очень плохая идея ...

Пожалуйста, ваши полный пользовательский случай, я совершенно уверен, что мы можем думать о лучшем решении, то добавление столбцов и добавление таблиц в базу данных.

+0

Пожалуйста, говорите, это плохая идея, позволяющая администраторам такой доступ для добавления столбцов и таблиц в базу данных? – George

+0

В принципе: да. IMO только тем, у кого есть знания самой базовой системы, в этом случае (my) sql должно быть разрешено изменять структуру базы данных ... Существует множество других параметров, позволяющих администраторам обрабатывать (возможно) сложные и разные типы данных – giorgio

+0

О, но давайте рассмотрим ситуацию, когда вы создали базу данных с таблицами, имеющими два столбца (ID и имя), а затем администратор, который не знает mysql, и php хочет добавить слово Age в таблицу, как вы решаете такую ситуация. – George

Смежные вопросы