Пользовательские предпочтения с использованием SQL и JavaScript

StackOverflow https://stackoverflow.com/questions/4574761

Вопрос

Я использую JavaScript на стороне сервера - да, я на самом деле использую JavaScript на стороне сервера. Чтобы еще больше сложно, я использую Oracle в качестве бэкэнд -базы данных (10G). С каким -то сумасшедшим XSLT и мутантом HTML -поколением, я могу создать действительно модные веб -формы - да, я осознаю рельсы и другие аналогичные рамки, и вместо этого я выбираю путь ужаса. У меня нет jQuery или других модных рамок, просто простого JavaScript, который должен поддерживать базовый двигатель под названием Mozilla Rhino. Да, это безумие, и мне это нравится.

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

У моих пользователей есть все уникальный user_id, и этот user_id доступен в течение всего сеанса.

Моя первоначальная идея состоит в том, чтобы иметь таблицу предпочтений пользователей, где у меня есть «три» столбцы: user_id, функция и pref_string. Используя разделитель, например: или - (не думал о подходящем), мне может понравиться хранить кучу предпочтений в качестве списка и хранить его элементы в массиве с использованием .split -method (аналогично PHP -Полнода). Столбец функции может быть похож на имя таблицы или какой -то идентификатор для «функции», которую я тоже хочу связать предпочтения. Я ненавижу жесткие объекты, особенно потому, что я хочу иметь возможность поддержать их и повторно использовать эту функциональность по всему приложению. Конечно, я хотел бы лучшие идеи, просто имейте в виду, что я не могу просто добавить библиотеку так легко.

Эти предпочтения могут быть похожи на «соединенные» к таблице, поэтому я могу запросить его и использовать его значения.

Я надеюсь, что это не звучит слишком сложно, потому что хорошо ... это в основном что -то действительно простое, что мне нужно.

Спасибо!

РЕДАКТИРОВАТЬ

Допустим, я хочу заполнить выпадающую коробку, которая в настоящее время имеет 10 динамических значений. Я бы получил их из базы данных, используя простой оператор SELECT:

SELECT pet, value FROM pets

Это вернет таблицу, как следующее:

dog  1
cat  2
fish 3

Я бы ввел это в выпадающую коробку. Однако, если бы мне могли бы получить предпочтения, добавленные к этой таблице, например, user_id 100, увидят только млекопитающих (собака, кошка), а пользователь_ид 200 увидят только морские существа (рыба). Теперь представьте, что в столе есть все существа мира, и у меня есть много таблиц, которые потребуют таких предпочтений.

Поскольку у меня могут быть неограниченные пользователи, мне придется применить какую-то форму мета-дат. Решения для этого, я ищу.

Это было полезно?

Решение

Похоже, это не имеет ничего общего с JavaScript на стороне сервера (который я не Думайте, это сумасшедший выбор) или у вас отсутствие рамки (которые я делать Думайте немного сумасшедшим). Это база данных и дизайн таблицы в его основе.

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

Что касается пользователей только для их вариантов, которые важны для них, у вас будет таблица user_pet_attribute, связывающая записи между пользователями вашей таблицы и вашей таблицей Pet_attribute_list.

Использует этот метод много ко многим отношениям, но, вероятно, он самый гибкий.

Другие советы

Я думаю, что вы должны пересмотреть свою точку зрения «не использовать структуру». Helma/Ringo-это зрелая и готовая к производству фреймворк JavaScript на стороне сервера на основе носорога. Уровень абстракции отображает объекты JavaScript в реляционную базу данных (JDBC подключен), а также уже предоставляет простые методы для пользовательских объектов и предпочтений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top