我有一个业余爱好项目,我正在创建自己的软件,将有不同的模块。我们的想法是使模块可堆叠,并可以关闭和打开。我使用MySQL作为数据库后端,并且想知道在自己的模式上是否更好地拥有特定于模块的表,或者是否应该为te表添加前缀。例如,假设我有一个系统模块和一个员工模块;将所有与员工相关的表放在员工计划上会比在表名前添加“emp_”更好吗?
前缀表名通常是不必要的混乱;表格名称或你是JOINing
的表应该使它明显发生了什么。 all-tables-in-one-db与几个dbs之间没有性能差异;有一个轻微的语法差异。
这对于MySQL来说是一个没有实际意义的点,因为数据库和模式在MySQL中是可以互换的。它与SQL Server更相关。
我的MySQL关键字database
被重命名为schema
,因为它们不是分离的数据库。您仍然可以跨模式建立关系。
在某些ORM中,例如Laravel Eloquent,您可以编写如下关系:
$company->hasMany(Employee)
在这种关系中,您将拥有一个名为company_employee
的数据透视表。如果您有两个独立的模式,您想在哪里放置数据透视表?在company
架构或employee
架构?
Laravel将无法解决这个问题,并且跨模式创建这种关系并非易事。