我一直认为数据库应该针对读取性能进行非规范化,因为它是为OLAP数据库设计完成的,而不是为OLTP设计进一步夸大3NF.
PerformanceDBA在各种帖子中,例如,在基于时间的数据的不同方法的表现中,捍卫了数据库应该总是通过归一化到5NF和6NF(正规形式)来精心设计的范例.
我是否理解正确(以及我理解的是什么)?
OLAP数据库(低于3NF)的传统非规范化方法/范例设计有什么问题,以及3NF足以满足大多数OLTP数据库实际情况的建议?
例如:
我应该承认,我永远无法理解非规范化有助于读取性能的理论.任何人都可以给我参考,对这个和相反的信念有很好的逻辑解释吗?
在试图说服我的利益相关者说OLAP/Data Warehousing数据库应该规范化时,我可以参考哪些来源?
为了提高可见度,我从评论中复制了这里
"如果参与者在他们看到或参与过的6NF中添加(披露)有多少现实生活(没有包含科学项目)的数据仓库实施,那将是一件好事.快速集合.Me = 0." - Damir Sudarevic
维基百科的数据仓库文章告诉我们:
"标准化的方法[与Ralph Kimball的维度相比],也称为3NF模型(第三范式),其支持者被称为"Inmonites",相信Bill Inmon的方法,其中声明数据仓库应该是使用ER模型/标准化模型建模."
看起来规范化的数据仓库方法(Bill Inmon)被认为不超过3NF(?)
我只是想了解数据仓库/ OLAP是非规范化的同义词的神话(或无处不在的公理信念)的起源是什么?
达米尔苏达雷维奇回答说他们铺好了道路.让我回到这个问题:为什么反规范化被认为有助于阅读?
我目前正在开展的项目是一个大型非营利组织的公告板.公告板将用于允许组织内的办公室间通信.
我正在构建应用程序,并且无法从我的数据库中提取我需要的结果,因为我认为它没有正确规范化,并且由于我对关系数据库理论和mysql的了解有限.
我将非常感谢董事会设计的输入,特别是可以改进数据库结构以促进有效查询的方式,并帮助我更快地开发此应用程序和未来的应用程序
公告板将按以下方式使用
-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jan 16, 2011 at 06:44 PM
-- Server version: 5.1.41
-- PHP Version: 5.3.1
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Database: `bulletinboard`
--
-- --------------------------------------------------------
--
-- Table structure for table `bbs`
--
CREATE TABLE IF NOT EXISTS `bbs` (
`id` int(11) NOT …Run Code Online (Sandbox Code Playgroud) 我想设计一个数据库,描述如下:每个产品在一个时间点只有一个状态.但是,产品的状态可能会在其生命周期内发生变化.我如何设计产品和状态之间的关系,可以很容易地查询当前特定状态的所有产品?另外,有谁可以请给我一些关于设计数据库的深入细节,这些数据库与上述问题的持续时间有关?谢谢你的帮助