Пользовательские предпочтения с использованием SQL и JavaScript
-
14-10-2019 - |
Вопрос
Я использую 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 подключен), а также уже предоставляет простые методы для пользовательских объектов и предпочтений.