【问题标题】:How to model a Firebase Database in UML diagrams?如何在 UML 图中建模 Firebase 数据库?
【发布时间】:2019-01-12 23:56:04
【问题描述】:

我有一个 android 项目,所以我决定制作一个 Quiz 应用程序,并在其中使用了 Firebase。 但是我还需要为这个项目设计 UML 图,我想知道我是否可以这样做,因为 Firebase 是一个无表数据库。

【问题讨论】:

  • 您到底关心什么?您想知道您是否可以在 UML 中表示 Firebase 数据库?
  • @Thomas Kilian 是的,因为我有一个大学项目,他们需要我们的 android 应用程序在 UML 图中表示,我直到现在都使用 Firebase,所以我正在考虑是否可以这样做
  • 概念模型绝对是可能的,例如在类图中。根据您的确切数据模型,可能会使用更具体的模型。有关介绍和一些示例,请参阅ripublication.com/ijaer17/ijaerv12n5_12.pdf。另见stackoverflow.com/questions/11323841/…
  • 请参考@FrankvanPuffelen 给你的链接。下次请在您的问题中更具体。我投票认为这不清楚。我不会撤回我的近距离投票,因为它太宽泛了。
  • @FrankvanPuffelen 好的谢谢!

标签: android firebase nosql uml class-diagram


【解决方案1】:

Firebase 数据库,无论是 realtime database 还是 cloud firestore,都是 document-oriented NoSQL 数据库。确实没有表格,只有文档集合,其中每个文档都是类似 JSON 的结构,文档可以包含其他嵌入的集合或文档。

理论上,集合中的每个文档都可能与其他文档完全不同。在这种情况下,UML 类图将毫无意义,因为类假定了共同的属性和行为。

db.collection("ouch"):          // Not recommended 
     [ {name: "Spiderman"}, 
       {size: "XXL", item: "T-Shirt}, 
       {date: "July 4 1776", event:"independence day"} ]

实际上,然而,集合中的文档通常是一组非常相似的对象,或者至少是相关的对象。可能是集合中的一个对象有更多的属性,或者更少的属性。但它们代表的是同一种东西:

db.collection("users"):   // example 1, small variations
      [ { id: "AL", first: "Ada",last: "Lovelace"},
        { id: "JSMITH", last: "Smith", first: "Joe", lastLogin:"2021-07-10"} ]

db.collection("shopItems"):    // example 2, more variations but common ground
      [ { id: 123, type: "Book", title: "The definitive guide to Firebase", author:"L.Moroney", price: 34.23 },
        { id: 124, type: "Record", title: "Get lucky", artist: "Daft Punk", price: 16.20}
        { id: 125, type: "Shirt", brand: "Seidensticker", model:"Classic", size: "XL", color:"white", price: 65.00 } ]

在这种情况下,你可以完美地使用 UML 类图,因为 UML 不是基于表的,而是基于类的:

  • 一个类代表一种事物。在逆向工程中,您通常会从已知集合开始。
  • 同类文档之间的微小结构差异将在 UML 类图中表示为“可选”属性(即多重性 [0..1])(参见 users 示例中的 lastLogin)。
  • 具有某些共同点的文档之间存在更大的实质性差异,通常会使用更专业的类进行建模(参见shopItems 示例,我们可以在其中猜测类ShopItem 及其专业化,例如BookItemRecordItem , TextileItem)。
  • 建模中的挑战是理解嵌入的文档和子集合。这些通常是其他关联类(或组合类)的符号。

原则上,UML 类图不会仅用于数据库(仅数据),而是用于独立设计应用程序的对象模型(数据和行为)您的数据库。然后,该模型可以根据满足您的用户需求所需的对象类型 help you to design 数据库。

【讨论】:

  • “理论上,集合中的每个文档都可以与其他文档完全不同。” ...这是有史以来最糟糕的做法。没有人会建议这样做。数据持久性 = 0 ...而且您应该始终对数据进行概念模型(是的,使用 uml),恕我直言。
  • @BorisDetry 没错!我认为我们完全同意。这就是为什么我以“理论上”开头的句子,然后是针对现实世界的“实践中”段落。我的最后一段准确地说明了您对概念模型的看法,只是 O 严格相信概念模型不仅适用于数据,而且适用于类(数据+行为);-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多