关于SAP系统 数据库底层表设计约束情况
2016-06-28 23:08
204 查看
SAP业务后台可配置特性,让SAP系统可以适应绝大部分的业务场景。
SAP使用自己的ABAP层,为系统的扩展提供了完整的一套开发平台。
而SAP在底层数据库表设计中并没有使用复杂的表约束来设计。
(环境:SAP ECC6 SQLserver2008)
比如:EKPO(采购订单行项目)和EINA(采购信息记录)表。
在采购模型中,采购订单的行项目包含了信息记录,所以信息记录号被作为外键存放在【采购订单的行项目】表中。
![](http://img.blog.csdn.net/20160628230605137?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160628230610371?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160628230615216?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
SQL2008对表的约束有5种:
1. PRIMARY KEY约束(SAP使用了)
在表中常有一列或多列的组合,其值能唯一标识表中的每一行。这样的一列或多列成为表的主键(Primary Key)。一个表只能有一个主键,而且主键约束中的列不能为空值。
![](http://img.blog.csdn.net/20160628230619809?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2. FOREIGN KEY约束(SAP没有使用)
外键(Foreign Key)是用于建立和加强两个表(主表与从表)的一列或多列数据之间的连接的。创建约束的顺序是先定义主表的主键,再对从表定义外键约束。
![](http://img.blog.csdn.net/20160628230625481?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3. UNIQUE约束(SAP没有使用)
UNIQUE约束用于确保表中的两个数据行在非主键中没有相同的列值。与PRIMARY KEY约束类似,UNIQUE约束也强制唯一性,但UNIQUE约束用于非主键的一列或多列组合,且一个表可以定义多个UNIQUE约束,另外UNIQUE约束可以用于定义多列组合。
4. DEFAULT约束(SAP使用了)
若在表中某列定义了DEFAULT约束,用户在插入新的数据行时,如果该列没有指定数据,那么系统将默认值赋给该列,当然该默认值也可以是空值(NULL)。
![](http://img.blog.csdn.net/20160628230629215?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
5. CHECK约束(SAP没有使用)
CHECK约束用于限制输入一列或多列的值的范围,通过逻辑表达式来判断数据的有效性。一个列的输入内容必须满足CHECK约束的条件,否则数据无法正常输入。
最后:
在SQL数据库中,只看到3种类型 : nvarchar、decimal、int。
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的多种变量类型在这里都不存在,包括日期、时间类型。
相关文章推荐
- pl/sql 变量赋值
- IDEA下创建Maven,Servlet,JSP,MYSQL项目
- pl/sql 运算符和表达式
- pl/sql表类型
- 【SQL】 sql中的日期比较
- 分布式缓存技术memcached学习(四)—— 一致性hash算法原理
- ORACLE数据库的索引类型及其适用场景
- MySQL中group by测试例子
- ORA-12560:TNS
- pl/sql BIND变量
- 大文件导入oracle
- SQL和NoSQL数据库的差别
- 正则表达式与sql交互
- pl/sql LOB类型
- windows下完全卸载oracle
- pl/sql %ROWTYPE
- MySQL-SQL插入性能优化
- 关于mysql-5.7.13-winx64服务无法启动的解决方法
- MySQL数据库的优化
- 达达的mysql数据库优化之路