我还没有完全使用SQL,但显然足以被它的爪子抓住,因为我对如何引用noSQL中的东西感到茫然。
我们说我有一个显示books
的页面,然后是users
可以将任意数量的书籍保存到他们自己的个人图书馆的功能("喜欢"他们,基本上)。
一本书包含作者,标题,页数,概要,列表等参数字符等
在SQL中,我需要在books
和users
之间设置一个连接表,但是在noSQL中(特别是Firebase,因为那是我开始的)那里&没有这样的事情让我感到困惑。我被警告要嵌套数据,但是这里似乎有必要在books
下嵌套users
(反之亦然?)并且有大量重复数据。
由于几个原因,这对我来说似乎很蠢。一个是需要大量额外的时间来迭代用户,因为他们的整个库也需要迭代。其次,我需要复制大量数据,因为我想要完整地显示其库中的书籍,以及概要和字符列表等。
我是否真的需要制作另一个名为library
的细分受众群,在其中列出users
并将books
嵌套在其下?这是一种有效的方法吗?
或者我错过了必要的东西吗?即使在noSQL(包括Firebase)中,我是否可以像使用外键一样引用数据?
答案 0 :(得分:2)
我遇到了来自SQL背景的相同问题。下面的示例结构是对您的noSQL(在本例中为Firebase)最佳外观的高级视图:
- Firebase root
- Users
- $userId
- name
- email
- books
- $bookId
- Books
- $bookId
- title
- author
...以及关于如何访问图书的简单概念:
var ref = new Firebase();
ref.child('Books').child($bookId).push({/* book info */});
总之,那些$userId
和$bookId
字段对于在整个应用中引用数据非常重要。