数据库设计命名:应该使用“id”或“table_name”+“id”?

时间:2014-07-25 08:45:49

标签: mysql sql database database-design

因此,对于每个表都有一个id,通常是int(11)Auto inc,而不是null。

当我在学校时,我主要将其命名为id,

然而,当我遇到更复杂的数据库设计时,我发现如果我使用“id”,我必须在选择查询中做更多工作

例如,有一个表“customer”,“customer_group”

所以我只是得到客户和他的customer_group信息:

SELECT *
FROM customer
JOIN customer_group 
    ON customer.group_id = customer_group.id

请注意,将有两个id返回,如果我想区分它们,我需要这样做:

SELECT customer.id AS cid
    ,customer_group_id AS cgid
    ,customer.NAME
    ,.......
FROM customer
JOIN customer_group 
    ON customer.group_id = customer_group.id

这使得工作非常繁琐,查询很长。所以,我想知道命名id的做法是什么,我应该使用table_name +“id”来命名吗?谢谢

1 个答案:

答案 0 :(得分:1)

我们可以使用aliasing做这样的事情,以减少它的繁琐和可读性。

SELECT c.id AS cid
    ,customer_group_id AS cgid
    ,c.NAME
    ,.......
FROM customer c
JOIN customer_group cg
    ON c.group_id = cg.id

在为ID命名的情况下,ID的最佳实践是基于意见或基于实施标准。根据情况,每种方法的好处各不相同。

通常,ID的{​​{1}}应为X Table,但在其他表中使用时,请将ID称为外键,它将成为Y Table }

因此,这将在Y表中清楚地表明此X_ID引用(来自)X表的X_ID

命名约定是根据开发人员的方便定义的,然后它变成了方法论,后来它将成为标准。 但是,这也会影响我们发展环境的变化。

我会建议它的商业项目是否按照标准选择命名约定。

如果是个人项目,请选择适合您习惯的项目..