使用SQL和JavaScript的用户首选项

时间:2011-01-01 16:46:17

标签: javascript sql oracle rhino user-preferences

我使用的是Server Side JavaScript - 是的,我实际上使用的是Server Side JavaScript。为了更复杂化,我使用Oracle作为后端数据库(10g)。有了一些疯狂的XSLT和类似突变体的HTML生成,我可以构建真正花哨的Web表单 - 是的,我知道Rails和其他同样的框架,我选择了恐怖的道路。我没有JQuery或其他花哨的框架,只是简单的“JavaScript”应该由名为Mozilla Rhino的底层引擎支持。是的,这是疯了,我喜欢它。

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

我的用户拥有所有唯一的user_id,并且在整个会话期间都可以使用此user_id。

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

这些首选项可能就像“加入”表格一样,因此我可以查询并使用其值。

我希望这听起来不太复杂,因为好吧......基本上我需要的东西非常简单。

谢谢!

修改

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

SELECT pet, value FROM pets

它会返回如下表格:

dog  1
cat  2
fish 3

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

由于我可以拥有无​​限的用户,因此我必须应用某种形式的元数据。我正在寻找解决方案。

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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