数据库列和外键规范化

时间:2011-12-03 01:50:36

标签: database standards normalization

我正在为我的公司构建一个新系统(灯 - ubuntu服务器,php 5.3,mysql 5.5,apache 2,redis)(如版本2.0)

我想做对,让它变得更好。

我想使用innodb,我想知道命名列和外键是否有标准。

例如:

table_a
 table_a_id
 table_a_name
 etc...

这种方式当你离开加入它很容易区分,但如果你有很长的名字,写sql会很痛苦。

table_a
 id
 name
 etc...

这样,表格很容易理解,但每次离开时都必须使用别名或表名。

是命名数据库规范化的数据库.table.column的一部分吗?

2 个答案:

答案 0 :(得分:11)

数据库,表,列,键,外键的命名约定与数据库规范化无关。

尽管如此,我建议在任何地方保持相同的命名约定结构。我的所有名字都非常标准,单词或者如果它是一个短语,它用下划线分隔,没有数字也没有特殊的字符。对于列,键和fk都是一样的(除了数字),我总是使用plurials(很少见,你只有1分贝,1个表有1列和1行)

这就是我的所作所为:

databases: companies
tables: clients, clients_products, products
column: id, name, address, city
key: name
unique key: name

这样,当您查询数据时,您可以非常清楚您要求的内容或查找内容。

答案 1 :(得分:0)

  

是命名数据库规范化的数据库.table.column的一部分吗?

没有。简而言之,规范化与通过基于识别属性之间的某些类型的依赖性重构表来提高数据完整性有关。

表和列的名称是您的API。

ISO 11179,信息技术 - 元数据注册管理机构(MDR)是用于在注册表中表示元数据的国际标准。虽然它的目标是语义,而不是表和列,但许多数据库设计者使用它作为命名表和列的指南。在大型组织中,它非常有价值。 (函数依赖,规范化的一部分,是一种语义事物。)

您可能会发现探索表名和对象类之间的区别很有用。 ( Object class 在这个意义上与面向对象的编程无关。它是ISO 11179中的技术术语。)

A review copy of part 5 (PDF)命名和识别原则可在线获取。 Wikipedia可能是一个更持久的参考。 (可能不会。)