Mysql 跨应用程序共享表的最佳实践

Mysql 跨应用程序共享表的最佳实践,mysql,mysql-management,Mysql,Mysql Management,我们有一个MySQL实例在我们的小办公室中运行。我们有3个不同的应用程序,它们都使用db作为它们的后备存储。一个模式包含所有三个应用程序的所有表。所有应用程序都使用一些通用表(例如tbl_用户、tbl_设施等)。我一直在使用模式对象的应用程序前缀来直观地将它们与其他应用程序对象分开,例如: foo_tbl_设置 foo_tbl_订单 foo_vw_最近的订单 doof_tbl_设置 脱下vw零件 我从未对此感到满意,我总是觉得我应该使用不同的模式;一个用于每个逻辑应用程序,然后一个用于共享对

我们有一个MySQL实例在我们的小办公室中运行。我们有3个不同的应用程序,它们都使用db作为它们的后备存储。一个模式包含所有三个应用程序的所有表。所有应用程序都使用一些通用表(例如tbl_用户、tbl_设施等)。我一直在使用模式对象的应用程序前缀来直观地将它们与其他应用程序对象分开,例如:

  • foo_tbl_设置
  • foo_tbl_订单
  • foo_vw_最近的订单
  • doof_tbl_设置
  • 脱下vw零件
我从未对此感到满意,我总是觉得我应该使用不同的模式;一个用于每个逻辑应用程序,然后一个用于共享对象(用户表等)的共享模式

共享常用表非常重要,我不想放弃


我在谷歌上搜索了一下这个话题,但没有找到任何能真正解释这是否是一个好的实践的东西。我希望你们中的一些专业人士能为我这种情况下的最佳实践提供建议。

老实说,除非有令人信服的理由共享一个DB,否则你能不能不让每个应用程序都有一个DB

您说过它们“共享”表,但随后您用不同的名称描述了表名,这表明虽然它们共享相同的结构,但实际上并不共享数据。
除非我误解了,否则我建议每个应用程序使用一个DB。这还允许您将数据库和应用程序移动到新位置,而不必将其与服务器上的其他应用程序分离。

实际上,共享表不是一个很好的行为

但是,如果您确实需要,您可以为每个应用程序创建不同的模式,例如,创建一个公共模式shared_模式

公共模式可以具有共享表

然后,在每个应用程序模式中,您都可以从共享模式为要连接的每个表创建。您可以按此模式中需要的名称命名每个视图。
现在,您可以使用不同的名称来描述表。

foo\u tbl\u设置
转换为
foo.tbl\u设置
,很自然……我同意,但您有什么建议?我确实使用了单独的模式?这些前缀的使用表明存在一个干净的分离,但我没有给出答案,因为我不想详细说明:)是的,他们使用了,我肯定会这样使用他们!;)我可能不太清楚:应用程序共享一些共享表中的相同数据。所以我们有相似的表,我们有实际共享数据的表(例如用户帐户数据),感谢信息——“共享表不是一个很好的行为”——你能详细说明一下吗?我并不反对,但我想知道这是一个坏主意的主要原因是什么。这可能会导致不一致的状态。例如:如果您是web开发人员ruby on rails,则可能会在删除记录后从服务器执行一些回调,以清理一些数据或创建一些业务逻辑。如果从另一个应用程序中删除记录,则不会通知其他应用程序,因为这是从ruby代码中处理的。\n我理解您的示例,但它不适用于我们将共享的表。实际上,我们只想共享很少的表,事实上,目前我能想到的只有_user、_user_roles和_roles表。客户端应用程序不会删除这些表中的记录,我们也没有触发器设置或任何会导致级联更改的内容。是否还有其他原因(性能、易管理性等)使跨模式共享表成为一个坏主意?我认为对于您的情况来说,这没有问题。如果你遇到任何问题,请告诉我。