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