Agile PLM数据库表结构(Oracle)
刚进公司,任务是接管PLM系统,但是还在给外包团队开发,没有代码。无妨先看业务和数据库,ok,业务看不懂,只能先看数据库,数据库没有数据字典,这个系统没有任何文档产出......练手时发现数据库类型是Oracle,面对百度不成问题,数据字典只能看前端然后去数据库里面一个个找着对应自己整理了,纯折磨
只能一点点来了,我真的服了,没有数据字典给我,让我熟悉这个系统。可能使用到了一个就来改一下,网上的资料也比较少
文章参考:https://blog.csdn.net/namelessmyth/article/details/124372370
基本上全抄 ,带入理解。公司数据字典里面可以忽略此部分。系统时区是0时区,我们这边是东8得加8个小时t1.CREATE_DATE + INTERVAL '8' HOUR
数据表
物料 ITEM
字段名 | 中文名 |
---|---|
ITEM_NUMBER | 物料编码 |
CLASS | 一级分类 |
SUBCLASS | 二级分类 |
DESCRIPTION | 描述(物料名称) |
DEFAULT_CHANGE | 最新的变更单ID |
RELEASE_TYPE | 生命周期ID |
REV_NUMBER | 版本号 |
-- 物料表
select * from agile.item;
-- 物料视图
select * from agile.ITEM_query;
select * from agile.ITEM_P2_QUERY;
select * from agile.ITEM_P2P3_QUERY;
select * from agile.ITEM_P2P3_QUERY_ALL_REV;
-- 物料历史记录
select i.item_number,t.*
from ITEM_HISTORY t
inner join ITEM i on t.item = i.id
where I.ITEM_NUMBER like '03.08.%'
BOM
字段名 | 中文名 |
---|---|
ITEM | 父物料ID |
COMPONENT | 子物料ID |
ITEM_NUMBER | 子物料编码 |
QUANTITY | 子料用量,文本字段 可支持分数,例如:1/6 |
CHANGE_IN | 新增时的变更单ID |
CHANGE_OUT | 删除时的变更单ID |
PRIOR_BOM | 如果不为空,代表: 该行数据变更了另一行数据, 值为另一行数据ID |
FLAGS | bom分录状态 第5位数为1代表有效) |
SELECT * FROM agile.bom b;
-- 工位表(bom字段关联bom表id字段,一个工位一行记录,可能存在超过4000的问题)
select * from REFDESIG t where bom = 72624583;
-- 大文本字段存储表,bom注释(id为物料id,row_id为bom的id)
select * from AGILE_FLEX t where t.text in ('sjj12','sjj');
-- PLM物料Bom查询(只查一层)不带工位, BOM注释
SELECT b.*, ic.DESCRIPTION
,l.value AS sub_class_text
,ls.value AS life_cycle
,ip.ITEM_NUMBER AS parent_item_number
,lp.value as parent_life_cycle
FROM agile.bom b
INNER JOIN agile.ITEM_QUERY ip ON b.item = ip.id
INNER JOIN agile.ITEM_QUERY ic ON b.component = ic.id
left JOIN agile.LANGTABLE lp ON ip.RELEASE_TYPE = lp.id AND lp.type = 4450 AND lp.langid = 4
INNER JOIN agile.LANGTABLE l ON ic.SUBCLASS = l.id AND l.type = 4450 AND l.langid = 4
INNER JOIN agile.LANGTABLE ls ON ic.RELEASE_TYPE = ls.id AND ls.type = 4450 AND ls.langid = 4
WHERE NVL(b.CHANGE_OUT, 0) = 0 AND SUBSTR(b.FLAGS, 5, 1) = 1
and ls.value not in ('报废','停产','退市')
and lp.value in ('报废','停产','退市')
and ip.ITEM_NUMBER like '02.88.000026'
and ic.ITEM_NUMBER like '03.%'
活动 ACTIVITY
业务关系:
计划(项目)包含阶段, 阶段包含任务和关口, 某些任务完成以后, 关口才能打开, 才能进行下一阶段的任务
字段名 | 中文名 |
---|---|
class | 大类(关口和活动) |
subclass | 小类(关口, 任务, 计划, 阶段) subclass=18027:计划(项目) subclass=18028:阶段 subclass=18029:任务 subclass=18401:关口 |
PARENT_ID | 上一层对象的id 比如:任务的parent_id会指向阶段 阶段的parent_id指向计划 |
ROOT_ID | 最上层对象的id,也就是计划的id |
status | 状态信息-状态18516 未开始 18517 进程中 18518 完成 18519 已取消 18540 已取消 18539 已打开 18537 已关闭 18538 审阅中 |
价格 PRICE
PRICE:对应价格
PRICELINE:对应价格的定价页签数据。也就是价格里面一行,即阶梯价格。当价格新建之后会有一条很多字段都是null与之对应,往定价中新增记录之后会是2条数据。
价格和BOM类似也存在版本管理,在流程中也能对价格进行增删改操作,流程走到发布节点才会生效.流程中未生效的数据也是存在PRICELINE表的.
字段名 | 中文名 |
---|---|
price_type | 价格类型 1:代表量产价 0:为样品价 |
price_number | 价格编号 |
owner | 创建人 |
supplier | 对应的供应商 |
item | 对应的物料 制造商部件型价格这个字段为空。 |
mfr_part | 对应的制造商部件 物料型价格这个为空。 |
default_change | 默认的最新的价格变更 |
delete_flag | 删除标识 0:代表未删除。 |
flags | 状态标识 刚新建时第三位是1 加入变更单之后第4位变为1 |
part_number | 物料型价格 这个字段记录物料编码 制造商部件价格这个字段记录: 制造商名称::制造商部件编号 |
-- 价格主表
SELECT * FROM agile.PRICE p;
-- 价格子行
SELECT * FROM agile.priceline pl;
价格子行 PRICELINE
字段名 | 中文名 |
---|---|
price | 外键,关联price表ID。 |
change_in | 价格行新增的表更单id 如果是0代表走变更之前就新增好的 如果是空则代表无效数据。 |
change_out | 只要有值代表该行已被删除且流程已发布 流程如果还未发布,则依然会是0 删除别人的行in和out相等。 |
prior_row | 如果该行修改了另一个行 这里记录被操作行id。 |
flags | 状态标识 在变更中新增全为0 变更之前新增第4和第5位为1 不受PCO影响。 |
quantity | 数量 |
effective_from_date | 生效开始日期 |
effective_end_date | 生效结束日期 |
currency_code | 货币代码 |
material_price | 材料价格 |
-- 变更 2473549:EcoBOM
select * from agile.change c where c.CHANGE_NUMBER in ('C0095253');
--变更受影响物件查询
SELECT c.change_number, i.*
FROM AGILE.REV R
INNER JOIN AGILE.ITEM I ON R.ITEM = I.ID
INNER JOIN AGILE.CHANGE C ON R.CHANGE = C.ID
INNER JOIN agile.LANGTABLE l on c.SUBCLASS = l.id and l.type = 4450 and l.langid = 4
WHERE I.CLASS = 10000 AND C.CREATE_DATE > '2018-01-01'
and l.value in ('自制件料号申请与BOM发布流程','ECO-BOM变更流程')
变更 流程?CHANGE
字段名 | 中文名 |
---|---|
CHANGE_NUMBER | 编号 |
CLASS | 一级分类 |
SUBCLASS | 二级分类 |
CREATE_DATE | 创建日期 |
STATUS | 状态 |
RELEASE_DATE | 生命周期日期 公司系统这里不为null表示已完成 |
DELETE_FLAG | 删除标记 为null表示没删除 |
-- 变更 2473549:EcoBOM
select * from agile.change c where c.CHANGE_NUMBER in ('C0095253');
-- 变更受影响物件查询
SELECT c.change_number, i.*
FROM AGILE.REV R
INNER JOIN AGILE.ITEM I ON R.ITEM = I.ID
INNER JOIN AGILE.CHANGE C ON R.CHANGE = C.ID
INNER JOIN agile.LANGTABLE l on c.SUBCLASS = l.id and l.type = 4450 and l.langid = 4
WHERE I.CLASS = 10000 AND C.CREATE_DATE > '2018-01-01'
and l.value in ('自制件料号申请与BOM发布流程','ECO-BOM变更流程')
供应商 ORGANIZATION
--供应商
select * from ORGANIZATION where org_number in ('RM.00652');
制造商 MANUFACTURERS
MANUFACTURERS:制造商
MANU_PARTS:制造商部件
MANU_BY:制造商和部件关系表
--制造商
select * from agile.MANUFACTURERS b where b.name = '昆晶冷片(深圳)电子有限公司';
--制造商部件
select * from agile.MANU_PARTS p where p.PART_NUMBER in ('1N5242B');
--物料和部件关联关系
select * from agile.MANU_BY b where B.MANU_PART != 0;
产品服务请求 PSR
--缺陷
select * from PSR t where t.status = 2477843;
文件 Floder
Floder:文件夹表
Attachment:附件表
历史记录
EVENT_HISTORY:事件历史表
CHANGE_HISTORY:变更历史表
ITEM_HISTORY:物件历史表
公共表
二级分类描述 LANGTABLE
-- 查询CHANGE表中的STATUS和SUBCLASS描述,查询条件:等于LANGTABLE中的ID,取等于LANGTABLE中的VALUE
select t1.CHANGE_NUMBER,t1.CREATE_DATE + INTERVAL '8' HOUR as "time", t2.VALUE as "status", t3.value from AGILE.CHANGE_P2P3 t1
left join AGILE.LANGTABLE t2 on t2.ID = t1.STATUS and t2.TYPE = 4450
left join AGILE.LANGTABLE t3 on t3.ID = t1.SUBCLASS and t3.TYPE = 4450
where t3.VALUE != '完成' and t3.VALUE != '取消' and t1.DELETE_FLAG IS NULL
第二页,第三页 PAGE_TWO, PAGE_THREE
PLM中大部分数据对象都会有第二页和第三页。
第二页中存储的是分类中一二级分类的公共字段。对应的表是PAGE_TWO
第三页中存储的是三级分类中特殊字段。对应的表是PAGE_THREE
PLM中很多常用对象的第二页,第三页信息已经做了视图,可以直接用视图来查询
-- 第二页
select * from agile.PAGE_TWO t2;
-- 第三页
select * from agile.PAGE_THREE t2;
-- 物件关联第二页
select * from item i
inner join page_two p2 on i.id=p2.id and i.class = p2.class
在第二页、第三页中的 大文本字段 和 多列表字段:
大文本字段:对于varchar2 4000以内的内容直接存储在第二页和第三页。但如果超过4000则是存在下面的表中。
-- 大文本存储表,bom注释(id为物料id,row_id为bom的id)
select * from AGILE_FLEX t
inner join bom b on t.row_id = b.id and t.id = b.item
where t.text in ('sjj2','sjj');
多列表字段:多列表选择的值数量比较小时是以",id1,id2,id3,"存储在第二页和第三页中的。但如果超过一定数量这个字段会变成“-1”然后需要从msatt表查询。
拿对应的id去 列表表 listname 和 列表项 Listentry 查询,列表项分类id可以去后台管理系统的“设置-数据设置-列表”中查询
字段名 | 中文名 |
---|---|
entryid | 列表项id |
entryvalue | 列表项值 |
parent_entry | 列表项之间父子关系 |
parentid | 列表项分类 |
--列表定义表,层叠列表用parent_list链接父子列表
select * from agile.LISTNAME WHERE name like '%物料组%';
--列表子行 父子记录通过parent_entry关联,parentid用于区分不同的列表项
select * from agile.LISTENTRY l where l.parentid in (2477261) and langid in (0,4);
--修复生命周期专用SQL display值应该为0.
select * from agile.listname where id = 301;
update listname set display = 0 where id = 301;
--生命周期查询
select ip.*,lp.value
from agile.ITEM_QUERY ip
INNER JOIN agile.LANGTABLE lp
ON ip.RELEASE_TYPE = lp.id AND lp.type = 4450 AND lp.langid = 4
用户 AGILEUSER
-- plm用户表
select * from agile.AGILEUSER where loginid = 'zhangsan'
-- 用户组
select * from agile.user_group where id = 6039858
货币转换 CONVERSION
-- 转换(货币)
select * from agile.CONVERSION c where c.CONV_EFFECTIVE_TO_DATE is null;
系统配置
-- 查询PLM进程扩展
select * from PROPERTYTABLE p
inner join NODETABLE n on p.parentid = n.id
where n.PARENTID = 10025 and p.value like '%PCBCreateItem%'
-- 查询PLM事件程序
select * from agile.PROPERTYTABLE p
inner join agile.NODETABLE n on p.parentid = n.id and propertyid = 885
where n.PARENTID = 2000011631 and p.value like '%CheckSCSupplier%'
公司数据字典
https://www.cnblogs.com/fanwenkeer/p/18186625
Agile PLM数据库表结构(Oracle)的更多相关文章
- 物理数据模型(PDM)->概念数据模型 (CDM)->面向对象模型 (OOM):适用于已经设计好数据库表结构了。
物理数据模型(PDM)->概念数据模型 (CDM)->面向对象模型 (OOM):适用于已经设计好数据库表结构了. 步骤如下: 一.反向生成物理数据模型PDM 开发环境 PowerDes ...
- 不同数据库表结构的转化,PowerDesigner的使用教程
通过学习PowerDesigner工具,学习概念模型,物理模型,面向对象模型,业务模型,以及不同数据库表结构的转化. 通过案例给大家分享,sql server 2008r2 数据库和oracle数据库 ...
- 批量导出数据库表(oracle)
批量导出数据库表(oracle) 要求:导出sql文件,包含表结构和数据. 方案一 1:用cmd进入命令行输入:tnsping cmstar就是测试172.18.13.200是否连接成功2:导入与导出 ...
- 用户中心mysql数据库表结构的脚本
/* Navicat MySQL Data Transfer Source Server : rm-m5e3xn7k26i026e75o.mysql.rds.aliyuncs.com Source S ...
- mysql数据库表结构导出
mysql数据库表结构导出 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据 mysqldump -h localh ...
- magereverse - Magento数据库表结构
Magento数据库表结构相当复杂,250多张表包含了非常多的表关联关系,让刚刚接触Magento的开发者来说真的非常头疼.往往是看到一个产品的各种属性分散在非常多的表中,找不到任何办法来取出它们的数 ...
- 为什么要用hibernate 与基于数据库表结构的项目开发
最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的,于是我就去搜了一下,就搜到了一篇帖子, ...
- activiti数据库表结构全貌解析
http://www.jianshu.com/p/e6971e8a8dad 下面本人介绍一些activiti这款开源流程设计引擎的数据库表结构,首先阐述:我们刚开始接触或者使用一个新的东西(技术)时我 ...
- K3数据库表结构
K3数据库表结构查看方法,直接在数据库中打开表 t_TableDescription,其中即各表及其与K3功能的对应关系 也可直接查询: select * from t_TableDescriptio ...
- 比较两个mysql数据库表结构的差异
需求来源:一个线上系统,一个开发系统,现在要把开发系统更新到线上,但是开发系统的数据库结构与线上的略有差异,所以需要找出两个数据库的表结构差异. 数据库表结构的差异 注:操作均在Linux系统下完成 ...
随机推荐
- #线段树,二分#洛谷 2824 [HEOI2016/TJOI2016]排序
题目 分析 这排序就很难实现,考虑定一个基准,小于该基准的视为0,否则视为1, 那排序可以看作将0和1分开,这就很好用线段树实现了 如果该位置是0,说明这个基准太高,显然可以用二分答案(基准),那么时 ...
- 你不知道的java对象序列化的秘密
目录 简介 什么是序列化 重构序列化对象 序列化不是加密 使用真正的加密 使用代理 Serializable和Externalizable的区别 总结 简介 你知道序列化可以使用代理吗?你知道序列化的 ...
- [洛谷P3961,TJOI2013]黄金矿工题解
这无疑是一个分组背包问题,斜率是分组的依据,组内物品则是这个斜率下金块的价值与重量的前缀和. 发现很多人的都是用的double储存斜率,其实我们可以用分数的方法保存,这就需要一个gcd. 然后我们用m ...
- 部署solr服务
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 一.Sorl单机部署 准备:solr5.5.tomcat8.5.jdk1.8 1.解压 solr-5.5.0.zip压缩包 2.复制./ ...
- Qt设置窗口显示到扩展屏
#include <QDesktopWidget> void Dialog::setDisplayPos() { QDesktopWidget *desktop = QApplicatio ...
- FPGA技术助手,notepad++ 两个插件
DS的时间很珍贵的 ,尤其是过了32岁以后,一身的病,扛不住996的制度.为了增加速度,只能想办法怎么在fpga工作上面降低时间.你有心思点来点去的GUI的界面.还不如用一个脚本完全做完.notepa ...
- C++ 类方法解析:内外定义、参数、访问控制与静态方法详解
C++ 类方法 类方法,也称为成员函数,是属于类的函数.它们用于操作或查询类数据,并封装在类定义中.类方法可以分为两种类型: 类内定义方法: 直接在类定义内部声明和定义方法. 类外定义方法: 在类定义 ...
- Spark SQL 抽样函数 ——TABLESAMPLE 的坑点
最近需要实现一段 Spark SQL 逻辑,对数据集进行抽样指定的行数. 由于数据集较大,刚开始的逻辑是,取窗口函数随机排序后 row_number 的前 n 行.但运行速度较慢,所以想起了 TABL ...
- 冬奥幕后故事:从低碳火炬到AI裁判,十四年后中国科技再上场
北京冬奥会开幕后,一个段子在社交媒体上流传甚广:"夏奥开幕式和冬奥开幕式就差半年,这半年人类科技进步真大啊." 文|张婧怡 封面来源|北京日报客户端 冬奥季终于到来. 2月4 ...
- 独家深度 | 一文看懂 ClickHouse vs Elasticsearch:谁更胜一筹?
简介: 本文的主旨在于通过彻底剖析ClickHouse和Elasticsearch的内核架构,从原理上讲明白两者的优劣之处,同时会附上一份覆盖多场景的测试报告给读者作为参考. 作者:阿里云数据库OLA ...