SAP BW把主数据分为了三类:属性,文本,层级。每一类都存放在了一个与IO关联的数据库表中。下图是一个简单主数据模型的数据库表结构。
SAP BW 数据模型,特别是主数据模型大量使用了代键(SORROGATE KEY)的概念。一般代键都是由系统自动产生的,而且是唯一的一个数字的组合。作为数据上传或者维护过程的一部分,系统会自动为每一个新的主数据产生一个代键,并且在一个称作SID表(图中,#1)的数据库表维护代键和主数据之间的关系。
属性值存放在属性表(图中,#2)中。属性表一共有两张:存放时间相关属性的Q表和存放时间无关属性的P表。与P表相比,Q表多出来两个字段DATAFROM 和DATETO,它们用来确定任意属性组合的有效时间段。另外属性表中还维护了的数据版本信息(活动数据和修改数据)。除了这两张属性表外,系统还将它们包含的所有字段组合成一个数据库试图,也就是所谓的M表。
如果一个属性被指定为导航属性,那么跟它有关的数据存放在导航属性SID表中。与属性表不同,导航属性SID表中存放的不是属性的实际值,而是属性的代键。这样可以提高查询访问导航属性的速度。
文本表(图中,#3)用来存放文本主数据,包括名称和文本描述。将文本属性和一般属性分开的方式一方面可以提高数据的访问性能,另一方面可以支持多语言。而且文本表也支持时间相关的文本属性。时间相关的文本表多出来两个字段用来确定文本的有效期DateFrom和DateTo。
层级(Hierarchy)表(图中,#4)用来存放主数据的层级结构数据。这种建模的层级一般称为外部层级。而通过属性定义的层级结构称为内部层级。层级表包括四张数据库表,分别称为H表,K表,I表和J表。
上述所有的这些数据表都是在激活IO的时候,系统按照它的命名规则自动生成的:
/BI<C 或者数字>/<表代码><信息对象>ITPUB个人空间8Z.r:AR$L6\"](k Y
<C 或者数字>: C = 客户定义IO
4D I p%W'rRFp,e,Q0 Digit = SAP定义IO
<表代码>: S = SID 表
3[!@^k^3l Mj0 T = 文本表
7K:t@ z-q0}\ e0 P = 时间无关属性表ITPUB个人空间4Ns1WX`)V'|
Q = 时间相关属性表ITPUB个人空间:G?~TA(F(i*R
M = 属性试图,包括P表和Q表的内容ITPUB个人空间+U FQ4qs'i J~FD
X = 时间无关导航属性SID表ITPUB个人空间*Xn%k%f"]] q
Y = 时间相关导航属性SID表ITPUB个人空间1Z4[{;z QhD!l5{
H = 层级表ITPUB个人空间On"J7|^(a/At
K = 层级SID表ITPUB个人空间OJ6C1J[C!s
I = 层级SID结构表ITPUB个人空间8W"R!k H F7DC+LG
J = 层级内表ITPUB个人空间bcS1E-G#@3O
<信息对象>: 信息对象的名字 (如果以数字开头,去掉数字)