MySQL设计:单独的架构或表前缀?

时间:2018-02-08 19:18:08

标签: mysql database-design database-schema

我有一个业余爱好项目,我正在创建自己的软件,它将有不同的模块。我们的想法是使模块可堆叠,并可以关闭和打开。我使用MySQL作为数据库后端,并且想知道在自己的模式上是否更好地拥有特定于模块的表,或者是否应该为te表添加前缀。例如,假设我有一个系统模块和一个员工模块;将所有与员工相关的表放在员工计划上会比在表名前添加“emp _”更好吗?

3 个答案:

答案 0 :(得分:0)

前缀表名通常是不必要的混乱;您JOINing的表名或表应该能够清楚地显示正在发生的事情。 all-tables-in-one-db与几个dbs之间没有性能差异;有一个轻微的语法差异。

答案 1 :(得分:0)

这对于MySQL来说是一个没有实际意义的点,因为数据库和模式在MySQL中是可以互换的。它与SQL Server更相关。

答案 2 :(得分:0)

我的MySQL关键字database重命名为schema,因为它们不是分开的数据库。您仍然可以在架构之间建立关系。

在诸如Laravel Eloquent之类的ORM中,您可以编写如下关系:

$company->hasMany(Employee)

在这种关系中,您将有一个名为company_employee的数据透视表。如果您有两个独立的架构,则要将透视表放在哪里?在company模式还是employee模式上?

Laravel将无法解决此问题,并且在架构之间创建这种关系并非易事。