在星型模式中将表名作为维度表或事实表的前缀是常见的做法吗?以表名作为前缀的列名也是常见的做法吗?
在我的普通 OLTP 数据库中,我不这样做,但我在星型模式中看到了这种类型的命名示例。
为数据仓库模式和 OLTP 模式设置不同的命名标准是否有意义?
谢谢德怀特
在星型模式中将表名作为维度表或事实表的前缀是常见的做法吗?以表名作为前缀的列名也是常见的做法吗?
在我的普通 OLTP 数据库中,我不这样做,但我在星型模式中看到了这种类型的命名示例。
为数据仓库模式和 OLTP 模式设置不同的命名标准是否有意义?
谢谢德怀特
表名:
列名:
仓库与 OLTP 命名:
tablename_column 名称约定用于确保数据库中的所有字段都是唯一的,尽管它可以用于当有唯一命名的标准/要求时(一些客户 IT 部门要求)。
Product.Name => Product.Product_Name
Part.Name => Part.Part_Name
它消除了 Name 来自何处的任何歧义。
我根本不喜欢用前缀来命名表(假设这不会违反公司的本地标准),因为虽然它今天可能是一个表,但它可以在明天重新实现为视图或分区视图,但会暴露相同的模式,然后我将不得不接受前缀不正确的对象或更新每个人对新名称的引用/创建同义词。
虽然保持一致性往往是赢家,但如果每个 DBA / Dev 都实现自己的版本,那将是混乱的,所以我倾向于找到公司标准并应用它们。
在 DW 中,用“长名称”命名列是很常见的,因为这些列最终会作为报告(查询结果)中的列标题,并且应该是业务用户友好的。因此,不是拥有Product.Name
and Customer.Name
which 都会显示为“Name”(除非使用别名),而是通常使用Product.ProductName
,Customer.CustomerName
因此一旦星号,它们就会在报告(查询)的第一行显示为“ProductName”和“CustomerName”通过连接展平。如果数据库允许,经常使用下划线代替驼峰式和空格。当表在模式中的作用可能不明显时,建议在大型 DW 中使用前缀 dim 和 fact;我其实很喜欢他们。
Ken,我喜欢您的 [type] [subject] [name] 约定,其中 type 是“dim”或“fact”(或聚合的“facts”)问题是在 Oracle 商业智能存储库中创建星型模式模型时,最佳实践建议我们应该使用 DIM_(或 dim)为维度和事实表创建别名,并为维度和事实表创建FACT(或 fact_)前缀。为了避免别名维度表和事实表读取 dim_dim[table name] 或 fact_fact_fact_[table_name),最好使用 _DM(或 _dm)后缀命名维度表,并使用 _FT(或 _ft ) 后缀。