Is there any database level ER-Diagram for AgilePLM?
Hi All,
I was exploring the objects link at db level. Is there any procedure or way/Utility get entity relationship links at db level in AgilePLM Database.
I need database level table structure of AgilePLM just wanted to know which tables links to which table and there attributes relationships.
I know this is a very complex because, there are thousands of tables resides in the db but some basic tables information like NodeTable, Items,Change,Rev how it stores the objects in the form of SubClass Class ,ParentClass etc.
-Thanks
Kaustubh
Hi Kaustabh,
I don’t think there is one such procedure or utility to depict the relationship in Agile schema as such. However there are many more threads in our community containing queries for key data from Agile. You can review them and use it as per convenience.
I suggest you to go through the below post to start off then there are other specific queries that you can utilize.
https://myagileplm.com/questions/how-to-start-db-learnings/
There are *no* published documents on the Agile database schema. But myAgile is a very good place to ask questions about things that you have not been able to figure out on your own. The link that Arif provided is a good place to start. Also search for questions concerning how to get data for Items, Changes, BOM, Revisions, Page Two/Page Three attributes, etc.
The basics of the schema are :
1) CLASS and SUBCLASS are attributes in the base table – ITEM for Parts/Documents, CHANGE for ECO/ECR/MCO/Deviation/Stop Ship, etc. All base attributes are stored in the class base table. But a tab can contain data from many tables – Title Block has data from ITEM, REV, CHANGE shown, at a minimum.
2) All page two/page three attributes are in the PAGE_TWO and PAGE_THREE tables, and link to the base table using ID and CLASS. CLASS also indicates which base table a record should be linked to.
3) Almost every record in the database has a unique ID value, within the table (MSATT is an example of a table without a unique ID). Several different sequences are used to do this, so a given ID may not be unique across all tables (but usually is).
4) The database is highly normalized, as in you rarely see a text value repeated in more than 1 table, but instead link to it using the ID it is assigned in the base table. So, a change number is found in the CHANGE table, but when you link the change to a revision, you see the ID of the change record with that number, not the change number.
5) List attributes are much the same, the value is found in LISTENTRY along with an ID (ENTRY_ID), and referenced using the ID value in the attribute itself.
6) Look for the “agile9schema.sql” file in the “$ORACLE_HOMEadminagile9createagile directory. This gives you an easy lookup for what attributes are in a table.
7) The configuration is held mostly in NODETABLE and PROPERTYTABLE, and is hierarchically arranged (note the PARENTID attribute in both tables). Other tables of interest are ADMINCRITERIA, ADMINMSATT, LISTNAME, LISTENTRY, CRITERIA, QUERY, FOLDERING and FOLDER.
8) User information is mostly in AGILEUSER and USER_ASSIGNMENT (PAGE_TWO is also used).
As noted before, if you have a specific question, feel free to ask on this forum, and tag it as related to the schema. I or someone else will see it and answer to the best of our abilities.
Another way is to write a SDK based code to traverse down from the “root node” and write down all the child nodes. This will be database agnostic and version agnostic.
Though painful, there is a way to get what attributes and properties are associated with any A9 object. ( had to write this to verify configuration against Excel based “definition” ), since all the configuration was done manually ( error prone )