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 将无法解决这个问题,并且跨模式创建这种关系并非易事。
我有一个爱好项目,我正在创建自己的软件,该软件将具有不同的模块。这个想法是使模块可堆叠并且可以关闭和打开。我正在使用 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 将无法解决这个问题,并且跨模式创建这种关系并非易事。