SAP ABAP层没有使用数据库底层表约束设计:
SAP业务后台可配置特性,让SAP系统可以适应绝大部分的业务场景。
SAP使用自己的ABAP层,为系统的扩展提供了完整的一套开发平台。
而SAP在底层数据库表设计中并没有使用复杂的表约束来设计。
(环境:SAP ECC6 SQLserver2008)
比如:EKPO(采购订单行项目)和EINA(采购信息记录)表。
在采购模型中,采购订单的行项目包含了信息记录,所以信息记录号被作为外键存放在【采购订单的行项目】表中。



SQL2008对表的约束有5种:
1. PRIMARY KEY约束(SAP使用了)
在表中常有一列或多列的组合,其值能唯一标识表中的每一行。这样的一列或多列成为表的主键(Primary Key)。一个表只能有一个主键,而且主键约束中的列不能为空值。

2. FOREIGN KEY约束(SAP没有使用)
外键(Foreign Key)是用于建立和加强两个表(主表与从表)的一列或多列数据之间的连接的。创建约束的顺序是先定义主表的主键,再对从表定义外键约束。

3. UNIQUE约束(SAP没有使用)
UNIQUE约束用于确保表中的两个数据行在非主键中没有相同的列值。与PRIMARY KEY约束类似,UNIQUE约束也强制唯一性,但UNIQUE约束用于非主键的一列或多列组合,且一个表可以定义多个UNIQUE约束,另外UNIQUE约束可以用于定义多列组合。
4. DEFAULT约束(SAP使用了)
若在表中某列定义了DEFAULT约束,用户在插入新的数据行时,如果该列没有指定数据,那么系统将默认值赋给该列,当然该默认值也可以是空值(NULL)。

5. CHECK约束(SAP没有使用)
CHECK约束用于限制输入一列或多列的值的范围,通过逻辑表达式来判断数据的有效性。一个列的输入内容必须满足CHECK约束的条件,否则数据无法正常输入。
最后:
在SQL数据库中,只看到3种类型 : nvarchar、decimal、int。
ABAP的多种变量类型在这里都不存在,包括日期、时间类型。
本文探讨了SAP ABAP层的设计选择,在数据库表设计中未采用复杂约束的特点,并对比了SQL Server 2008提供的五种表约束机制。文中详细解释了SAP如何利用自身的ABAP层来支持业务需求,同时分析了SAP ECC6环境下对几种特定表的处理方式。
1394

被折叠的 条评论
为什么被折叠?



