MySQL 设计:单独架构还是 Table 前缀?

MySQL Design: Seperate Schema or Table Prefixes?

我有一个爱好项目,我正在创建自己的软件,该软件将具有不同的模块。这个想法是使模块可堆叠并且可以关闭和打开。我正在使用 MySQL 作为数据库后端,我想知道在他们自己的架构上使用特定于模块的 tables 是否更好,或者是否应该为 te tables 添加前缀.例如,假设我有一个系统模块和一个员工模块;将所有与员工相关的 table 放在员工计划中是否比仅在 table 名称前加上诸如 "emp_"?

之类的前缀更好?

前缀 table 名称通常是不必要的混乱; table 的名字或 table 你是 JOINing 的人应该使发生的事情一目了然。 all-tables-in-one-db 与多个数据库之间没有性能差异;有轻微的语法差异。

这对 MySQL 来说是一个有争议的问题,因为数据库和模式在 MySQL 中是可以互换的。它与 SQL 服务器更相关。

我的MySQL关键词database被重命名为schema因为他们不是分开的数据库。您仍然可以拥有跨模式的关系。

在某些 ORM 中,例如 Laravel Eloquent,您可以编写如下关系:

$company->hasMany(Employee)

在这种关系中,您将有一个名为 company_employee 的枢轴 table。如果你有两个独立的模式,你想把你的枢轴放在哪里table?在 company 架构或 employee 架构上?

Laravel 将无法解决这个问题,并且跨模式创建这种关系并非易事。