0

我正在使用服务器端 JavaScript - 是的,我实际上正在使用服务器端 JavaScript。为了使事情更加复杂,我使用 Oracle 作为后端数据库 (10g)。通过一些疯狂的 XSLT 和类似突变的 HTML 生成,我可以构建非常精美的 Web 表单 - 是的,我知道 Rails 和其他类似的框架,我选择了恐怖的道路。我没有 JQuery 或其他花哨的框架可供我使用,只有普通的 JavaScript 应该由名为 Mozilla Rhino 的底层引擎支持。是的,这很疯狂,我喜欢它。

所以,我有一堆表可供我使用,其中一些表充满了链接到值的关联键。由于我是一个讨人喜欢的人,我想添加一些漂亮的用户偏好驱动解决方案。

我的用户都有一个唯一的 user_id,并且这个 user_id 在整个会话期间都可用。

我最初的想法是有一个用户偏好表,其中有“三”列:user_id、feature 和 pref_string。使用分隔符,例如 : 或 - (还没有想到合适的分隔符),我可以将一堆首选项存储为一个列表,并使用 .split-method 将其元素存储在一个数组中(类似于 PHP - 爆炸功能)。功能列可能像表名或我想链接首选项的“功能”的某些标识符。我讨厌硬编码对象,特别是因为我希望能够备份这些对象并在应用程序范围内重用此功能。当然,我会喜欢更好的想法,但请记住,我不能轻易地添加一个库。

这些首选项可能就像“加入”到表中一样,所以我可以查询它并使用它的值。

我希望它听起来不会太复杂,因为嗯..它基本上是我需要的非常简单的东西。

谢谢!

编辑

假设我想填写一个下拉框,目前有 10 个动态值。我会使用一个简单的 select 语句从数据库中获取这些:

SELECT pet, value FROM pets

它将返回如下表:

dog  1
cat  2
fish 3

我会在下拉框中输入这个。但是,如果我愿意将首选项添加到该表中,例如 user_id 100 只会看到哺乳动物(狗、猫),而 user_id 200 只会看到海洋生物(鱼)。现在想象一下这张桌子上有世界上所有的生物,我有很多需要这种偏好的桌子。

由于我可以拥有无​​限的用户,我将不得不应用某种形式的元数据。做到这一点的解决方案,是我正在寻找的。

4

2 回答 2

2

这听起来与服务器端 JavaScript(我认为这不是一个疯狂的选择)或您缺乏框架(我认为这有点疯狂)无关。这是数据库和表设计的核心。

如何对表中的值列表进行分类取决于具体情况。例如,您可能有一个 PETS 表,其中包含您描述的数据。然后,您可能有一个 PET_ATTRIBUTE_LIST 表,其中包含 PETS 可能拥有的数据。最后,您可以有一个 PET_ATTRIBUTE 表来链接这两者。这样,属性(鱼、哺乳动物、脊椎动物等)在一个表中,宠物(狗、猫、beta 等)在另一个表中,然后可以将任意一组属性链接到宠物。

对于用户只看到对他们很重要的选项的问题,您将拥有一个 USER_PET_ATTRIBUTE 表,该表将包含用户的表和您的 PET_ATTRIBUTE_LIST 表之间的记录链接起来。

使用这种方法的多对多关系有很多,但它可能是最灵活的。

于 2011-01-01T22:42:24.410 回答
0

我认为您应该重新考虑“不使用框架”的观点。Helma/Ringo 是一个基于 Rhino 的成熟且可用于生产的服务器端 JavaScript 框架。抽象层将 javascript 对象映射到关系数据库(连接 jdbc),并且已经为用户对象和偏好提供了简单的方法。

于 2011-01-01T18:28:52.703 回答