数据库表设计是否需要在字段前标注字段的所属对象,比如用户表的名字是 user_name,学校表的名字字段是 school_name

2021-04-14 22:06:57 +08:00
 Renco

这样写法会不会过于冗余。

7660 次点击
所在节点    程序员
102 条回复
morimi2026
2021-04-15 07:07:14 +08:00
@feifanhanmc 这是我见过的最差的命名规范
ColouredGlaze
2021-04-15 07:21:40 +08:00
name 是 mysql 数据库的保留字,个人建议是数据库字段加上前缀,代码实体去掉前缀,映射做好,个人建议
raaaaaar
2021-04-15 07:41:43 +08:00
id 你们也加吗?但是 gorm 这种框架会自动加一个 id 字段,需要额外弄么。。
iseki
2021-04-15 07:57:02 +08:00
不用
VeryZero
2021-04-15 08:33:51 +08:00
个人不喜欢加,但是公司要求加。。

因为很多表名本身就自带前缀,字段名再加表名前缀,这是在套娃吗。字段名冲突用别名解决不香吗。

另外坚决反对缩写的,少一两个字符又不会影响数据库性能,是想让别人觉得你很厉害吗?

程序里面也是同理,有些人就喜欢整各种稀奇古怪的缩写变量名,方法名。生怕别人不知道这坨屎是谁拉的。
masterclock
2021-04-15 08:36:46 +08:00
@feifanhanmc 这是我见过的最差的命名规范
sutra
2021-04-15 08:40:14 +08:00
如果字段名都需要用表名做前缀,那还需要表干什么?
statement
2021-04-15 08:40:20 +08:00
原表不加 但关联表肯定要加 不然同一张表不两个 id 和 name
encro
2021-04-15 08:41:35 +08:00
表名就可以表示自身了,所以没必要加前缀,除非外键 order.user_id 这样的
siweipancc
2021-04-15 08:55:34 +08:00
挺可怕的,一言不合就骂人:D
TimPeake
2021-04-15 08:57:12 +08:00
😂
xuanbg
2021-04-15 08:57:34 +08:00
不加,我手写 sql 也不加。
rationa1cuzz
2021-04-15 09:04:34 +08:00
考虑到 join 的情况我是都是用 xx_name,其实可以起别名,但是某些情况下不好写(狗头)
IvanLi127
2021-04-15 09:06:37 +08:00
完全没必要,因为库里这冗余的命名,前后端业务、接口、界面都得多写这些。表加这个是不会用 sql 的 alias 么?不写不会影响产出质量
wangritian
2021-04-15 09:34:54 +08:00
我觉得没必要带,同理包括 api 接口设计
PerFectTime
2021-04-15 09:37:09 +08:00
外键才会加上描述
对应实体中的属性不加
passerbytiny
2021-04-15 10:02:27 +08:00
(古老的,或者大型的)数据库设计体系, “列”是直属于数据库,而不是先属于“表”再间接属于数据库的,这样列名必须要能自举。在以前那种到处是“review”,甚至用存储过程代替应用编程的时候,这种从全局层面管理列的架构,应该是有好处的。

后来因为 ORM,或者是回归原始的关系数据模型,列(属性 /字段),只能从属于表(实体 /类)了,列名是否能自举,就不再重要了。

然而以上那些只是副因,如何命名,主要还是取决于开发人 /团队的自制规范。
clf
2021-04-15 10:04:18 +08:00
加前缀的好处就是避免有些运维直接手写 sql 时忘了加反引号,比如 name 是 sql 的关键字,一些情况下不加反引号就会报错。当然咯,如果全部操作都是在 IDE 和 ORM 框架下操作的,不需要手写 SQL,就没这个问题。

不过一般情况下,外部数据才会加前缀,本体属性不会加前缀。
Outshine
2021-04-15 10:06:43 +08:00
找不到这样写的必要,join 的时候 table.name 不就行了?

----

我们这边的习惯就是只有外键会加表名,比如文章表的作者 ID 和分类 ID:creator_id 、category_id

---

另外,#1 @feifanhanmc 的那个命名规范简直烂透了
cheng6563
2021-04-15 10:14:29 +08:00
我司是如
SCHL_NAME
SCHL_ADDR
SCHL_CICO
SCHL_CINA

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/770704

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX