Архитектура базы данных, которая позволяет пользователям создавать простые веб-формы - PullRequest
0 голосов
/ 17 сентября 2011

Представьте себе веб-сервис, который позволяет пользователю создавать несколько различных видов пользовательских веб-форм, а затем заполняет несколько экземпляров каждой формы разными значениями.

Например, создайте форму с именем «у меня есть фильмы».просмотрел "с такими полями, как" жанр "," год "," режиссер "и т. д. и другой вид" книг, которые я прочитал ", с такими полями, как" автор "," страницы "и т. д., а затем зарегистрировал много фильмов и книгв моем профиле.

Я пытаюсь выяснить, как БД для этой службы должна быть организована для максимальной универсальности:

  1. Самый очевидный способ, о котором я подумал, этоиметь отдельную таблицу для каждой новой формы, которая создается, но, похоже, она может быть медленной и утомительной для программирования.

  2. Другой подход заключается в ограничении количества полей, которые может вставить пользователь, и создании одной таблицы, которая содержит все «формы» и имеет столбцы, такие как «Custom_value_1», «Custom_value_2»,и т. д. (мне придется хранить метку и тип данных каждого значения в другой таблице).

  3. Еще не думал об этом :)

1 Ответ

1 голос
/ 17 сентября 2011

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

Система ключ-значение является более гибкой, но сложной для программирования. Реляционная модель требует, чтобы вы правильно моделировали все виды «вещей», которые вы, возможно, захотите поместить в базу данных, что является менее гибким, но намного, гораздо более легким для программирования (поскольку вы можете в значительной степени строить формы из интроспекции модели данных) .

В данном случае кажется, что ни одно из них не является лучшим решением для вас. Я бы посмотрел в более гибкое хранилище типов документов. В частности, это звучит так, как будто это может быть хорошей работой для XML или XML-ориентированной базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...