База данных в базе данных? - PullRequest
0 голосов
/ 09 августа 2011

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

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

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

Не в MySQL, если вы не определите структуру для него, разбейте данные и сохраните их в этой структуре.Однако это было бы обременительно.Вы можете определить иерархическую структуру в одной таблице, сделав ссылку на родительский элемент в той же таблице.Таким образом, вы можете хранить даже элементы XML и их атрибуты в одной базе данных, имея только три таблицы для документа, элементов и атрибутов.Запрашивать эти таблицы было бы очень сложно, особенно в MySQL.В Oracle вы получили CONNECT BY, который допускает рекурсивные запросы, но он медленный.

Может быть, вам стоит взглянуть на базы данных No-SQL, такие как Mongo, которая лучше подходит для таких задач.

0 голосов
/ 09 августа 2011

В нормализованной схеме базы данных вы бы смоделировали это с помощью собственной ссылки в списке, т.е.

create table list (
  id int,
  parent_id int,

  primary key list_pk (id),
  foreign key list_self (parent_id) references list (id)
)

Если выпадающий параметр № 5 имеет зависимые параметры, вы можете запросить их следующим образом:

select * from list where parent_id = 5
...