1

希望有人能回答我这个相当简单的问题。我刚刚开始使用 MySQL 和 phpMyAdmin 为服务器创建后端数据库,我正在尝试找出为该服务器创建数据库索引的最佳方法。主数据库将保存以下表格;音乐、视频、文档和文件。(音乐)部分将包含(5)张桌子。(视频)部分将包含 (4) 个表格。(doc & files) 将保存大约 (5) 个表。

我的问题如下;什么会更好,为上述每个单独的数据库,或者我应该将这 14 个表放在主索引数据库中?

我的另一个问题是,我可以创建一个索引数据库,其中包含所有其他表的(FK)以用于查询和文件搜索?

任何信息,将不胜感激。谢谢

4

5 回答 5

1

在我看来,最好将它们放在一起并用前缀命名它们。作为

video_table1
video_table2
....

这样你就不会连接到其他数据库。仅当所有表都用于同一应用程序时,我的答案才适用,否则分开 dbs

Can I create a index database which would include (FK)'s to all the other tables to use for querying & file searching?

如果您使用的是 InnoDB。是的!

于 2013-09-04T14:52:30.690 回答
0

如果要在两个表之间建立外键关系,则应将两个表放在同一个数据库中。基本上,单个 ERD(实体关系图)的所有内容都应该保存在同一个数据库中。

于 2013-09-04T14:51:02.527 回答
0

我对你的设置有点怀疑,但我需要更多细节。至于您关于多个数据库与单个数据库的具体问题,除了对非常大的数据库的一些可能的大小限制之外,我认为实际上没有任何区别。也就是说,选择最适合你的东西。您可能更喜欢多个数据库的组织方式,或者您可能希望将它们合二为一。如果您使用多个数据库,您将无法一次对所有表执行数据库范围的操作(DROP DATABASE, mysqldumpwith tables)。外键可以跨数据库存在。

至于您关于“索引数据库”的问题,我不完全确定我是否理解,这可能取决于。您可以拥有一个Files包含文件类型(视频、音乐)外键的表,并使您的数据库更加通用。

于 2013-09-04T14:51:55.307 回答
0

好吧,这在很大程度上取决于您的项目实际需要什么。这些部分是否会相互交互(例如,音乐是否可以与视频相关联?)?

如果答案是 YES -> 对所有表使用单个数据库;如果答案是否定的 -> 您可以为每个“部分”设置单独的数据库;

于 2013-09-04T14:54:02.593 回答
0

如果目标是:

  1. 一个应用程序,
  2. 您想要结合所有这些表中的数据和
  3. 您不希望将它们分解为部署在不同环境中的单独应用程序:

单个数据库很好/可能是最好的。如果上述任何问题的答案是否定的,那么您可能仍需要一个数据库,但可能需要做更多工作。

关于第二个问题,如何将(对象?)映射到数据库的结构取决于您将如何使用它们,并且在某种程度上取决于您打算用于开发应用程序的语言和(更重要的是 - 框架)。如果您希望在您的应用程序中将这些建模为不同类型的超类file,您可能希望查看不同的面向对象方法来构建您的表(例如Table-per-type、table-per-hierarchy)。

例如,公共字段可能位于基表中Files,而特定类型的数据可能位于表中AudioFiles。的主键AudioFiles将是一个外键Files

于 2013-09-04T14:57:42.077 回答