我是否总是需要复制和嵌套数据以在noSQL(Firebase)中引用它?

时间:2015-04-18 15:57:15

标签: firebase database-design nosql

我还没有完全使用SQL,但显然足以被它的爪子抓住,因为我对如何引用noSQL中的东西感到茫然。

我们说我有一个显示books的页面,然后是users可以将任意数量的书籍保存到他们自己的个人图书馆的功能("喜欢"他们,基本上)。

一本书包含作者标题页数概要列表等参数字符

在SQL中,我需要在booksusers之间设置一个连接表,但是在noSQL中(特别是Firebase,因为那是我开始的)那里&没有这样的事情让我感到困惑。我被警告要嵌套数据,但是这里似乎有必要在books下嵌套users(反之亦然?)并且有大量重复数据。

由于几个原因,这对我来说似乎很蠢。一个是需要大量额外的时间来迭代用户,因为他们的整个库也需要迭代。其次,我需要复制大量数据,因为我想要完整地显示其库中的书籍,以及概要和字符列表等。

我是否真的需要制作另一个名为library的细分受众群,在其中列出users并将books嵌套在其下?这是一种有效的方法吗?

或者我错过了必要的东西吗?即使在noSQL(包括Firebase)中,我是否可以像使用外键一样引用数据?

1 个答案:

答案 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字段对于在整个应用中引用数据非常重要。