gpt4 book ai didi

mysql - 创建表列和另一个数据库之间的关系

转载 作者:行者123 更新时间:2023-11-29 11:07:09 27 4
gpt4 key购买 nike

假设我有一个添加公司的应用程序。我有一个这样的表:

create table companies(
id primary key,
name varchar
)

对于每家公司,我都必须存储大量的业务类型信息。由于数量如此之多,我决定为每个公司创建一个数据库,以避免冲突、性能非常慢和查询复杂。数据库名称将是我的公司表中的公司名称。

我的问题是我想为公司名称和数据库提供一对一的关系,这样它们就会彼此陷入困境。那可能吗?如果没有,除了为每个公司创建一个数据库之外,还有更好的方法吗?

最佳答案

这是对我的评论的详细阐述。

数据库旨在处理包含数百万甚至数十亿行的表。我猜你的数据没有那么大。

为什么要将单个实体的所有数据存储在单个表中?以下是一些原因:

  • 您可以轻松地在不同公司之间运行查询。
  • 您可以定义实体之间的外键关系。
  • 如果更改数据结构,您可以在一处完成。
  • 在空间方面它可以更加高效。数据库通常将数据存储在数据页上,部分填充的页面会占用大量空间。
  • 您有一个用于备份和恢复的数据库。
  • 用于选择单个公司数据的 where 子句并不是特别“复杂”。

(注意:这是指“实体”,一个数据库术语。公司的数据仍然可以分布在多个表中。)

为了提高性能,您可以调整数据模型、添加索引和分区表。这对于在数据库上运行的大量应用程序来说已经足够了。

在少数情况下,每个公司/客户都需要一个单独的数据库。以下是我遇到过的一些情况:

  1. 您被告知这是您必须做的。
  2. 每个客户端实际上都是定制的,因此它们之间几乎没有共同的数据结构。
  3. 安全要求规定数据必须位于不同的数据库甚至不同的服务器上(这是 1 的“充分理由”)。

关于mysql - 创建表列和另一个数据库之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209639/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com