Sql 如何组合两个数据库?

Sql 如何组合两个数据库?,sql,sqlite,android-room,Sql,Sqlite,Android Room,我在问自己,在给定两个数据库的情况下,如何最好地定义一个新数据库 我有以下两个数据库 作者保存作者信息的地方,即姓名,出生年份,国家,流派等 Book我在其中保存有关该书的信息,即AuthorName,ReleaseYear,页面等 如何创建一个包含所有书籍和作者全部信息的新数据库?也就是说,一个完整的图书数据库,其中包括作者姓名,发行年份,页面,流派,发行年份和作者.生日,作者.国家/地区如果数据库中有两个表,您可以使用加入将它们组合起来。下面是关于如何使用JOIN的SQLite教程 根据您

我在问自己,在给定两个数据库的情况下,如何最好地定义一个新数据库

我有以下两个数据库

  • 作者
    保存作者信息的地方,即
    姓名
    出生年份
    国家
    流派
  • Book
    我在其中保存有关该书的信息,即
    AuthorName
    ReleaseYear
    页面

  • 如何创建一个包含所有书籍和作者全部信息的新数据库?也就是说,一个完整的
    图书
    数据库,其中包括
    作者姓名
    发行年份
    页面
    流派
    发行年份
    作者.生日
    作者.国家/地区

    如果数据库中有两个表,您可以使用
    加入
    将它们组合起来。下面是关于如何使用
    JOIN
    的SQLite教程

    根据您提供的信息,我假设您可以在表
    作者
    中选择列
    姓名
    ,在表
    书籍
    中选择列
    作者姓名
    。你可以试试这样的

    SELECT
      A.Name,
      B.ReleaseYear,
      B.Pages,
      B.Genre,
      B.ReleaseYear,
      A.Birthyear,
      A.Country
    FROM
      Author A
      LEFT JOIN Book B
        ON A.Name = B.AuthorName
    

    如果数据库中有两个表,可以使用
    JOIN
    组合它们。下面是关于如何使用
    JOIN
    的SQLite教程

    根据您提供的信息,我假设您可以在表
    作者
    中选择列
    姓名
    ,在表
    书籍
    中选择列
    作者姓名
    。你可以试试这样的

    SELECT
      A.Name,
      B.ReleaseYear,
      B.Pages,
      B.Genre,
      B.ReleaseYear,
      A.Birthyear,
      A.Country
    FROM
      Author A
      LEFT JOIN Book B
        ON A.Name = B.AuthorName
    

    最好使用一个数据库并在其中包含两个表,如

    作者表
    作者(主键)
    名称
    生日
    国家
    体裁

    书桌
    BookId(主键)
    作者(FK)
    发布年份

    Pages

    最好使用一个数据库并在其中包含两个表,如

    作者表
    作者(主键)
    名称
    生日
    国家
    体裁

    书桌
    BookId(主键)
    作者(FK)
    发布年份
    页面


    基本上,我让他们在我的应用程序上创建这两个表,并希望将合并后的版本存储在服务器上。或者你会建议另一种方法吗

    是的,我们会的。每个实体应该有一个表,即一个用于作者,一个用于书籍。因此,您不会冗余存储数据(例如,作者姓名或书名),否则可能导致以后的不一致。你可以在这里阅读关于数据库规范化的内容:或者用谷歌搜索它

    现在您必须决定如何链接这些表。一个作者可以写多本书。一本书可以由多个作者写吗?给你可以使用的两个表ID(或者找到一些自然的唯一键,比如书的ISBN,或者作者的名字+出生年份-只有名字可能是不够的,甚至当与年份结合时也可能不会)

    如果一本书只能由一位作者撰写,则存在1:n关系(一位作者撰写一本书,一位作者撰写多本书)

    • 作者(作者id、姓名、出生年份、国家等)
    • 图书(图书编号、标题、作者编号、发行年份、页数等)
    如果一本书可以有几个作者,那么就有一个m:n关系(一本书由多个作者撰写,一个作者撰写多本书)

    • 作者(作者id、姓名、出生年份、国家等)
    • 图书(图书编号、标题、发行年份、页数等)
    • 图书作者(图书id,作者id)
    您始终可以联接表,以获得组合结果


    基本上,我让他们在我的应用程序上创建这两个表,并希望将合并后的版本存储在服务器上。或者你会建议另一种方法吗

    是的,我们会的。每个实体应该有一个表,即一个用于作者,一个用于书籍。因此,您不会冗余存储数据(例如,作者姓名或书名),否则可能导致以后的不一致。你可以在这里阅读关于数据库规范化的内容:或者用谷歌搜索它

    现在您必须决定如何链接这些表。一个作者可以写多本书。一本书可以由多个作者写吗?给你可以使用的两个表ID(或者找到一些自然的唯一键,比如书的ISBN,或者作者的名字+出生年份-只有名字可能是不够的,甚至当与年份结合时也可能不会)

    如果一本书只能由一位作者撰写,则存在1:n关系(一位作者撰写一本书,一位作者撰写多本书)

    • 作者(作者id、姓名、出生年份、国家等)
    • 图书(图书编号、标题、作者编号、发行年份、页数等)
    如果一本书可以有几个作者,那么就有一个m:n关系(一本书由多个作者撰写,一个作者撰写多本书)

    • 作者(作者id、姓名、出生年份、国家等)
    • 图书(图书编号、标题、发行年份、页数等)
    • 图书作者(图书id,作者id)

    您始终可以联接表,以获得组合结果。

    假定您在一个数据库中有表,而不是在单独的数据库中。当一个简单的查询就足够时,不需要创建新的“数据库”或表。为什么要对数据进行非规范化?为什么不在应用程序中定义一个
    视图
    或一个查询?基本上,我让它们在我的应用程序上创建这两个表,并希望将组合版本存储在服务器上。或者您会建议另一种方法吗?您正在展示的由两个表组成的数据库已经很好了。不过,你必须考虑关系。(这毕竟是关系数据库的用途。)请阅读我的答案。照目前的情况,我在作者表中看到了一种类型。我想这是他们的主要流派吧?如果您想使用体裁,您可能需要添加一个包含所有可用体裁的体裁表和一个桥接表,以使用一种或多种体裁标记每本书。可能您在一个数据库中有表,而不是在单独的数据库中。没有必要