Agile PLM 表结构说明

公共说明

数据库使用(重要)

直连数据库存在风险,使用时请谨慎!笔者曾今亲身体验,某个SQL写的有性能问题导致数据库服务器CPU占用率90%+,从而导致PLM服务不可用。

建议优先使用AgileApi的IQuery功能查询数据库。实在满足不了业务要求,公司内部存在擅长数据库性能优化的人员再考虑直连数据库。在功能设计时应充分考虑随着数据量增大后可能出现的性能问题,并在上线前进行充分测试。

如果要连PLM数据库,建议另外创建新用户并授予其AgilePLM_ROLE角色,而不是直接使用agile用户。

第三方系统程序如果要访问PLM的数据建议通过接口而不是直连PLM数据库。上述性能风险是原因之一。还有就是权限难以管控,一旦有了数据库用户,他们想查询任何数据都可以。有一种折衷的办法是视图,建立一个新用户后,仅给他们某个视图的权限。

未经授权和批准绝不能修改或泄漏agile用户密码。agile用户密码修改需要配套修改其他设置,否则Agile系统将无法使用.

时区问题

由于PLM要兼容各个国家的不同时区。PLM数据库中存的所有时间字段都是零时区时间。查询显示时需要根据当地时区换算。

例如:我们国家属于东8区,取出来之后要+8小时才是实际时间。参考sql如下:

--变更发布时间查询
select C.CHANGE_NUMBER, c.release_date + 8/24 from agile.change c

Agile表结构

数据表

物料

表说明

-- 物料表
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.%' 

表结构说明

item_number 物料编码

CLASS 一级分类

SUBCLASS 二级分类

DESCRIPTION 描述(物料名称)

DEFAULT_CHANGE 最新的变更单ID

RELEASE_TYPE 生命周期ID

REV_NUMBER 版本号

BOM

表说明:

参考 ItemBom.map.xml

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.%'

表结构说明

ITEM 父物料ID

COMPONENT 子物料ID

ITEM_NUMBER 子物料编码

QUANTITY:子料用量,文本字段。可支持分数,例如:1/6

CHANGE_IN 新增时的变更单ID

CHANGE_OUT:删除时的变更单ID

PRIOR_BOM:如果不为空,代表该行数据变更了另一行数据,值为另一行数据ID。

FIND_NUMBER:查找编号,目前没用起来.

FLAGS,bom分录状态(第5位数为1代表有效)

活动

class表示大类(关口和活动), subclass表示小类(关口, 任务, 计划, 阶段)

subclass=18027:计划(项目),

subclass=18028:阶段,

subclass=18029:任务,

subclass=18401:关口,

业务关系:
计划(项目)包含阶段, 阶段包含任务和关口, 某些任务完成以后, 关口才能打开, 才能进行下一阶段的任务
PARENT_ID:上一层对象的id,比如任务的parent_id会指向阶段,阶段的parent_id指向计划.
ROOT_ID:最上层对象的id,也就是计划的id
status:状态信息-状态。
值的具体含义:(每个环境可能不一样,建议使用statustype)
18516 未开始
18517 进程中
18518 完成
18519 已取消
18540 已取消
18539 已打开
18537 已关闭
18538 审阅中

价格

表说明

-- 价格主表 
SELECT * FROM agile.PRICE p;

-- 价格子行
SELECT * FROM agile.priceline pl;

PRICE:对应价格

PRICELINE:对应价格的定价页签数据。也就是价格里面一行,即阶梯价格。当价格新建之后会有一条很多字段都是null与之对应,往定价中新增记录之后会是2条数据。

价格和BOM类似也存在版本管理,在流程中也能对价格进行增删改操作,流程走到发布节点才会生效.

流程中未生效的数据也是存在PRICELINE表的.

PRICE表结构

price_type:价格类型。1:代表量产价,0:为样品价;

price_number:价格编号。相当于物料编码。

owner:创建人。

supplier:对应的供应商。

item:对应的物料。制造商部件型价格这个字段为空。

mfr_part:对应的制造商部件。物料型价格这个为空。

default_change:默认的最新的价格变更

delete_flag:删除标识。0:代表未删除。

flags:状态标识。刚新建时第三位是1。加入变更单之后第4位变为1

part_number:物料型价格这个字段记录物料编码;制造商部件价格这个字段记录:制造商名称::制造商部件编号

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变更流程')

供应商

表说明:

--供应商
select * from ORGANIZATION where org_number in ('RM.00652');

制造商

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;

产品服务请求

表说明:

--缺陷
select * from PSR t where t.status = 2477843;

文件

Attachment:附件表

Floder:文件夹表

所有数据

agile_objects对象视图,仅有CLASS, SUBCLASS, KEY_FIELD, DESCRIPTION

--大部分数据对象表,但仅有很少字段
select * from agile_objects;

历史记录

EVENT_HISTORY:事件历史表

前文提到的:

CHANGE_HISTORY:变更历史表

ITEM_HISTORY:物件历史表

公共表

第二页,第三页

PLM中大部分数据对象都会有第二页和第三页。

第二页中存储的是分类中一二级分类的公共字段。对应的表是PAGE_TWO

第三页中存储的是三级分类中特殊字段。对应的表是PAGE_THREE

第二页和第三页跟对象表的关联方式,根据对象表的ID和Class字段去第二页,第三页表中做关联查询。例如:

--第二页
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 

PLM中很多常用对象的第二页,第三页信息已经做了视图,可以直接用视图来查询

每个字段对应的含义或名称请结合PLM管理控制台查询。

大文本字段

对于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表查询。

管理配置

列表

listname:列表表

Listentry:列表项

列表项id:entryid

列表项值:entryvalue

列表项之间父子关系:parent_entry

列表项分类:parentid

列表项分类id可以去后台管理系统的“设置-数据设置-列表”中查询

--列表定义表,层叠列表用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

用户

表说明:

-- 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%'

你可能感兴趣的:(Agile,PLM,PLM,SQL,plm,数据库)