SQL junction table 命名:使其可读与遵循约定
SQL junction table naming: making it readable vs. following convention
考虑以下 "user" table:
CREATE TABLE user (
user_id INTEGER PRIMARY KEY NOT NULL,
nick_name TEXT NOT NULL UNIQUE
)
现在我有一个多对多参考 table,它连接 2 个用户
"following" 关系(顺便说一句,这不是双向关系)。
我在 sql 中阅读了很多关于命名的内容,但大多数时候它是
真的不一致(有些人说 PascalCase,有些人 snake_case 例如)。
我的问题是,以下哪个命名更好?
可读性 > 惯例:
CREATE TABLE user_following_user (
follower_user_id INTEGER NOT NULL,
target_user_id INTEGER NOT NULL,
FOREIGN KEY ...
PRIMARY KEY ...
)
约定 > 可读性:
CREATE TABLE user_user_xref (
user1_id INTEGER NOT NULL,
user2_id INTEGER NOT NULL,
FOREIGN KEY ...
PRIMARY KEY ...
)
请记住,可能还有其他 table 也有 2 个相关用户(比如阻塞 table),这就是为什么我不确定什么是正确的方法名称(路口-)tables.
也许还有另一种方法可以在保持可读性的同时遵循约定。我很感激每一个提示。
每次都追求可读性。善待维护您 sql 代码的人;可能是你 6 个月后。另外,请检查您关注的 "conventions" 来自哪里。任何人有什么理由定义一个消除对你正在做的事情的任何解释的约定(比如第二个例子)?
您可能会发现这有帮助:the names we give things.
考虑以下 "user" table:
CREATE TABLE user (
user_id INTEGER PRIMARY KEY NOT NULL,
nick_name TEXT NOT NULL UNIQUE
)
现在我有一个多对多参考 table,它连接 2 个用户 "following" 关系(顺便说一句,这不是双向关系)。
我在 sql 中阅读了很多关于命名的内容,但大多数时候它是 真的不一致(有些人说 PascalCase,有些人 snake_case 例如)。
我的问题是,以下哪个命名更好?
可读性 > 惯例:
CREATE TABLE user_following_user (
follower_user_id INTEGER NOT NULL,
target_user_id INTEGER NOT NULL,
FOREIGN KEY ...
PRIMARY KEY ...
)
约定 > 可读性:
CREATE TABLE user_user_xref (
user1_id INTEGER NOT NULL,
user2_id INTEGER NOT NULL,
FOREIGN KEY ...
PRIMARY KEY ...
)
请记住,可能还有其他 table 也有 2 个相关用户(比如阻塞 table),这就是为什么我不确定什么是正确的方法名称(路口-)tables.
也许还有另一种方法可以在保持可读性的同时遵循约定。我很感激每一个提示。
每次都追求可读性。善待维护您 sql 代码的人;可能是你 6 个月后。另外,请检查您关注的 "conventions" 来自哪里。任何人有什么理由定义一个消除对你正在做的事情的任何解释的约定(比如第二个例子)?
您可能会发现这有帮助:the names we give things.