数据库及数据仓库精要解析.ppt
文本预览下载声明
联系的转换 一对一和一对多联系 A与B之间是一对多联系,不转换为一张单独的表,而只在B转换后的表中增加A的主键属性(当然这些属性将形成一个引用到A的主键的一个外键),以此表示某B实体所从属的A实体。 这种方法可以产生更少的表,有利于提高数据库性能,还可以表达更多的约束 如对于联系Possess,将在Order表中增加一列customer#表示订单从属的顾客 弱实体的转换 由于弱实体总是全参与它与它的标识实体之间的多对一联系,因此可以采用上面提出的一对多联系方法进行转换。 弱实体转换后生成的表的主键由标识实体的主键与弱实体本身的部分键组合而成。 如弱实体Item转换后,构成如下: Item(order# ,item# , isbn ,qty 实体层次的转换 将实体层次转换为表定义时可采用两种方法 父辈实体与子辈实体都转换为单独的表通用方法,任何情况适用。 每一个子辈实体转换为单独的表,其中既包含各子辈实体的特殊属性,也包含子辈与父辈实体的公有属性。只适用全参与泛化,因无法比哦啊是不从属于任何子辈实体的父辈实体 如Customer与VIP、NONVIP之间的全参与泛化可用第二种方法转换为: VIP customer#,name,gender,birthday,city,address,email,credit NONVIP customer# ,name,gender,birthday,city,address,email,discount 一些实际的考虑 一般来说,在将ER图转换到表定义的过程中,需要考虑两个实际的问题:性能与数据规范化。 提高数据库性能的一个重要方法是进行数据冗余。 用一个表记录所有父子实体,而用一个字段来表示实体的类型。 例如:Customer customer# ,name,gender,birthday,city,address,email,credit,discount,customer_type 在线书店数据库及关系模式 Book isbn#,title,price,press,stock Author author# ,name,city Written_by isbn,author# ,serial Category category# ,super# ,tag Customer customer# ,name,gender,birthday,city,address,email,credit,discount,customer_type Interest_in customer# ,category# ,date Wish_for customer# ,isbn# ,date,status Order order# ,customer# ,date,status,payment,name,address Item item# ,order# ,isbn,qty 思考题 电话计费系统关于不同业务或叫特殊功能需求,比如:国内长途,港澳长途,国际长途等,如何设计数据库满足: 表结构不变,永远满足需求,比如:减少业务,增加业务 基于类似Excel表格的设计和基于实体联系模型(关系模式/模型)的设计比较 数据的统计分析及报表的展示功能 报表展示与制作是面向业务统计分析人员的最终体验,是最高层的数据统计分析应用的需求和表达 真实例子展开(Practical Data Warehouse and Business Intelligence Insights) 单主题 1)加拿大电信2007年的年度销售报表(1)2)加拿大电信2007年的季度销售报表(4)3)加拿大电信2007年的月度销售报表(12) 4)加拿大电信2007年每省的年度销售报表(10)5)加拿大电信2007年的每省的季度销售报表(40)6)加拿大电信2007年的每省的 月度销售报表(120)7)若每省有十个县,则需要报表10*12*10 1200 多主题 这样如果一个主题像上面的报表需求量,则有多少主题,报表数量是幂乘数的关系,尤其是同比和环比这样的统计需求 工作场景描述(Just Build It) 1)新建报表时,大多数人都是使用Microsoft Excel利用原有已经被Excel表格加工过的数据,很少使用初始规范化的数据源 2)一个报表因为加工过的而造成的数据分散,需要多个业务人员协作完成 3)多人协作时数据不一致,数据不规范严重影响工作进度 解决方案 使用多维建模方法论,建立以业务事件为导向的以主题(统计分析涉及的不同领域)相关的事实库(统计分析涉及的不同数据模型),通过对多维模型的钻取、切取、旋转等操作实现报表的动态化和个性化,消除众多关联报表等中间表,以实现Ad-hoc报
显示全部