给表名加上前缀以完全按照我的意愿对它们进行排序有多糟糕?

0 mysql best-practices table

使用 phpmyadmin/heidisql 等界面时,我有以下表格:

account
account_post
account_post_status
account_post_type
account_status
account_type
Run Code Online (Sandbox Code Playgroud)

对我来说理想的是这样的:

account
account_type
account_status
account_post
account_post_type
account_post_status
Run Code Online (Sandbox Code Playgroud)

所以我发现使用数字作为前缀是完美的。它完全按照我的意愿完成工作。我的意思是:

01_account
02_account_type
03_account_status
04_account_post
05_account_post_type
06_account_post_status
and so on
Run Code Online (Sandbox Code Playgroud)

我读了几个像我这样的主题,用户想要为表格添加前缀,但原因不明。我的原因是因为我想以特定的顺序在界面中看到它们。上面列出的表格只是一个例子。我的数据库中最多有 40 个表,使用数字对它们进行排序非常有趣。

我还阅读了表的 sql 命名约定,我明白用数字作为表名前缀根本不是一个好习惯。我发现一些数据库系统甚至不接受以数字为前缀的表名。

不管怎样,对我来说,只有一点点劣势。应用程序本身。我现在在 PHP 中使用 mysql。当我将使用查询从数据库中选择/插入/更新等时,我还应该使用前缀,这很烦人。但是我将创建一个函数来从已知列表中添加前缀(因为我可能想在此期间更改顺序)。例子:

"SELECT id FROM ".add_table_prefix('account')." WHERE whatever"
Run Code Online (Sandbox Code Playgroud)

我还有一个命名外键的约定,这些名称包括表名。我不会在那里添加前缀。

另外,我不知道 phpmyadmin 或其他用于 mysql 的 GUI 是否可以选择为表创建自定义订单,但这不符合我的兴趣,因为我希望在没有其他配置的情况下访问数据库的任何地方都有这个订单。

我在听。我的所作所为有多糟糕?这里有一个人做到了这一点?

编辑:

老实说,在数据库中,与数据库中的表相比,表中的列数更常见。在这种情况下,请给我一个很好的理由,说明为什么我们想要对列进行排序(如我们所愿,并且确实如此)但我们不想对表进行排序。

对表中的列进行排序的唯一好处是为了我们的视图,对吗?为什么不对表也这样做呢?仅仅因为 SQL 语言没有实现这一点(所以是 GUI),这并不意味着对表进行排序没有意义,对吧?

dan*_*ack 7

它(不止)有点疯狂。如果添加account_post_comment字段,则需要重新编号并重新编写所有代码。

更好的是,如果您使用alter table(或CREATE TABLE添加评论并使用它)。

ALTER TABLE account_post COMMENT '03'
Run Code Online (Sandbox Code Playgroud)

要按顺序检索,请使用information_schema.tables

SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COMMENT
FROM information_schema.tables
WHERE table_schema = 'db_name'
ORDER BY TABLE_COMMENT
Run Code Online (Sandbox Code Playgroud)