many to many

本文介紹了首次搭建業務智能(BI)系統的經驗與挑戰,包括如何處理複雜的數據關係,如多對多聯繫,以及解決多事實表中存在的時間維度問題。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首次做一個業務系統,也是一個BI,看起來很簡單的東西,做起來,真的很難啊,讀怪主管一開始就給我灌輸簡單概念了,不過開始就覺得難,呵呵,可能會更加慢了。

因為業務部門是給我他們平常用的報表,但是倒了我這就必須是兩個事實表了。而且事實表間也有聯系,在我看來是one to many ,但是對於BI或者sql 2005 AS來說是many to many .

建好cube後,就可以在sql上brower,看看數據是否正確,如果不正確就要找數據的關系,或者是id是否對應的上。

建many to many,是在緯度上,找到對應的緯度,點進取就可以修改響應的設置了。

在多事實表,如果只有一個表有time_id,這樣,sql as是不會有time緯度的雖然你已經設置了,所以需要在緯度設計裡面,增加一個time緯度,然後對應倒相應的事實表中去。

在关系数据库中,"多对多"(Many-to-Many)关系是指两个实体之间存在多个对应关系的情况。例如,在一个图书管理系统中,一本书可以被多个读者借阅,而一个读者也可以借阅多本书。 在Hibernate中,实现多对多关系需要使用一个中间表来维护两个实体之间的关联。这个中间表通常包含两个外键列,分别指向两个实体的主键。 为了映射多对多关系,需要做以下几个步骤: 1. 定义实体类:定义两个实体类,例如`Book`和`Reader`。 2. 建立关联:在每个实体类中都定义一个集合属性来表示与另一个实体的多对多关系。例如,在`Book`类中定义一个`readers`属性,表示借阅这本书的读者列表;在`Reader`类中定义一个`books`属性,表示这位读者借阅的书籍列表。 3. 映射中间表:使用Hibernate的映射文件(或注解)来映射中间表。在中间表的映射中,需要指定两个外键列分别对应两个实体的主键。 4. 配置级联操作:根据需要,配置级联操作以确保在删除一个实体时不会破坏多对多关系的完整性。 以下是一个使用Hibernate映射多对多关系的示例: ```java @Entity @Table(name = "books") public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; @ManyToMany(mappedBy = "books") private Set<Reader> readers = new HashSet<>(); // getters and setters } @Entity @Table(name = "readers") public class Reader { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @ManyToMany @JoinTable( name = "book_reader", joinColumns = @JoinColumn(name = "reader_id"), inverseJoinColumns = @JoinColumn(name = "book_id") ) private Set<Book> books = new HashSet<>(); // getters and setters } ``` 在上述示例中,`Book`实体和`Reader`实体之间建立了多对多关系。通过`@ManyToMany`注解和`@JoinTable`注解来定义中间表的映射关系。 这样,当我们查询一本书的借阅者列表时,Hibernate将自动处理中间表的查询和关联。同样地,当我们查询一个读者借阅的书籍列表时,Hibernate也会自动处理关联查询和中间表的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值