Professional Documents
Culture Documents
DM39-003 - Implementation Head Start
DM39-003 - Implementation Head Start
DM39-003 - Implementation Head Start
January 2018
These files are for the individual who participated in the course
and are not for distribution. No part of this material may be
reproduced or transmitted in any form or by any means,
electronic, mechanical, recording or otherwise, or by any
information storage and retrieval system without permission
from The PPDM Association.
• On-line documentation
• Wiki documentation
• Forum support
BA ADDRESS
• Each box represents a table in PPDM BA SERVICE ADDRESS
BA AUTHORITY COMP
• Connections (relationships) between modules
are not shown
BA CONSORTIUM SERVICE
BA CONTACT INFO
BA EMPLOYEE
BA ALIAS
BA ORGANIZATION
BA ORGANIZATION COMP
BA PERMIT
BA PREFERENCE
BA PREFERENCE LEVEL
BA XREF
BA_ORGANIZATION BUSINESS_ASSOCIATE
BA_EMPLOYEE ACTIVE_IND
NIZATION_COMP BUSINESS_ASSOCIATE
BA_ABBREVIATION
BA_CATEGORY
ORGANIZATION_ID
BA_CODE
ORGANIZATION_SEQ_NO EMPLOYER_BA_ID
USINESS_ASSOCIATE BA_NAME
ACTIVE_IND EMPLOYEE_BA_ID
RGANIZATION_ID
ADDRESS_OBS_NO EMPLOYEE_OBS_NO
BA_SHORT_NAME BA_AUTHORITY_COMP
BA_TYPE
RGANIZATION_SEQ_NO
ADDRESS_SOURCE ACTIVE_IND
CREDIT_CHECK_DATE
BA_AUTHORITY
CTIVE_IND EFFECTIVE_DATE
AREA_ID
PPLICATION_ID CREDIT_CHECK_IND BUSINESS_ASSOCIATE
AREA_TYPE EXPIRY_DATE
REA_ID CREDIT_CHECK_SOURCE AUTHORITY_ID
CREATED_DATE POSITION BA E_BA _F K BUSINESS_ASSOCIATE
BA OC_BAO _F K2
REA_TYPE CREDIT_RATING COMPONENT_OBS_NO
DESCRIPTION PPDM_GUID BA E_BA _F K2 AUTHORITY_ID
ONSULT_ID CREDIT_RATING_SOURCE ACTIVE_IND
EFFECTIVE_DATE REMARK ACTIVE_IND
ONTEST_ID BA OC_BAO _F K CURRENT_STATUS AREA_ID
EXPIRY_DATE SOURCE AUTHORITY_LIMIT
ONTRACT_ID EFFECTIVE_DATE AREA_TYPE
MAIN_EMAIL_ADDRESS STATUS AUTHORITY_TYPE
ESCRIPTION EXPIRY_DATE AUTHORITY_TYPE
MAIN_FAX_NUM ROW_CHANGED_BY AUTHORIZED_BY
FFECTIVE_DATE FIRST_NAME CONSULT_ID
MAIN_PHONE_NUM ROW_CHANGED_DATE CURRENCY_CONVERSION
XPIRY_DATE LAST_NAME BA AUC_BA AU_F K
CONTEST_ID
MAIN_WEB_URL ROW_CREATED_BY CURRENCY_OUOM
ACILITY_ID MAIN_EMAIL_ADDRESS CONTRACT_ID
ORGANIZATION_NAME ROW_CREATED_DATE EFFECTIVE_DATE
ACILITY_TYPE MAIN_FAX_NUM EFFECTIVE_DATE
ORGANIZATION_TYPE ROW_QUALITY EXPIRY_DATE
ELD_ID MAIN_PHONE_NUM BA AU_B A_FK3
EXPIRY_DATE
PPDM_GUID PPDM_GUID
FORMATION_ITEM_ID MAIN_WEB_URL BA AU_B A_FK2 FACILITY_ID
REMARK BA O_BA _F K REMARK
FO_ITEM_TYPE MIDDLE_INITIAL FACILITY_TYPE
REMOVED_DATE BA AU_B A_FK REPRESENTED_BA_ID
TEREST_SET_ID PPDM_GUID FINANCE_ID
SOURCE SOURCE
TEREST_SET_SEQ_NO REMARK JURISDICTION
ROW_CHANGED_BY
AND_RIGHT_ID
ROW_CHANGED_BY BA_CONTACT_INFO SOURCE LAND_RIGHT_ID
ROW_CHANGED_DATE ROW_CHANGED_DATE
AND_RIGHT_TYPE ROW_CHANGED_BY LAND_RIGHT_TYPE
ROW_CREATED_BY BA O_BA CI _FK4
ROW_CREATED_BY
BLIGATION_ID ROW_CHANGED_DATE LAND_SALE_NUMBER
ROW_CREATED_DATE ROW_CREATED_DATE
BLIGATION_SEQ_NO
BA O_BA CI _FK3 BUSINESS_ASSOCIATE ROW_CREATED_BY PPDM_GUID
ROW_QUALITY ROW_QUALITY
RGANIZATION_ID2 BA O_BA CI _FK2
LOCATION_ID ROW_CREATED_DATE PROD_STRING_ID
RGANIZATION_SEQ_NO2 ACTIVE_IND ROW_QUALITY PROD_STRING_SOURCE
BA O_BA CI _FK
BA _BACI_F K4
DEN_SOURCE SEIS_SET_ID
DEN_TYPE EFFECTIVE_DATE BA _BACI_F K3 SEIS_SET_TYPE
OOL_ID EXPIRY_DATE
BA _BACI_F K
BA_PERMIT SF_TYPE
LOCATION_NAME
PDM_GUID BA_ADDRESS PPDM_GUID
BA CI _BA_F K
SOURCE
ROD_STRING_ID SPATIAL_DESCRIPTION_ID
REMARK BUSINESS_ASSOCIATE
ROD_STRING_SOURCE SPATIAL_OBS_NO
ROW_CHANGED_BY JURISDICTION
ROJECT_ID BUSINESS_ASSOCIATE SUPPORT_FACILITY_ID
ROW_CHANGED_DATE BA P_BA _F K
PERMIT_TYPE
R_STR_FORM_OBS_NO SOURCE UWI
ROW_CREATED_BY PERMIT_OBS_NO
EMARK ADDRESS_OBS_NO BA P_BA _F K2
ROW_CHANGED_BY
ROW_CREATED_DATE ACTIVE_IND
EIS_SET_ID ACTIVE_IND BA CI _BAA _FK ROW_CHANGED_DATE
ROW_QUALITY EFFECTIVE_DATE
EIS_SET_TYPE ADDRESSEE_TEXT BA A_BA CI _FK
ROW_CREATED_BY
EXPIRY_DATE
F_TYPE ADDRESS_TYPE ROW_CREATED_DATE
BA A_BA CI _FK3 PERMIT_NUM
OURCE CITY_ID ROW_QUALITY
BA A_BA CI _FK4 PPDM_GUID
OURCE_DOCUMENT COUNTRY REMARK
UPPORT_FACILITY_ID EFFECTIVE_DATE
BA A_BA CI _FK2
SOURCE
WI EMAIL_ADDRESS ROW_CHANGED_BY
OW_CHANGED_BY EXPIRY_DATE
BA A_BA _F K
ROW_CHANGED_DATE
OW_CHANGED_DATE FAX_NUM ROW_CREATED_BY
BA AUC_S D_FK
OW_CREATED_BY FIRST_ADDRESS_LINE ROW_CREATED_DATE
OW_CREATED_DATE OFFICE_TYPE
OW_QUALITY PHONE_NUM
POSTAL_ZIP_CODE
PPDM_GUID
BA_SERVICE RATE_SCHEDULE SPATIAL_DESCRIPTION
PROVINCE_STATE
REMARK
SECOND_ADDRESS_LINE RATE _BA_F K RATE_SCHEDULE_ID SPATIAL_DESCRIPTION_ID
BUSINESS_ASSOCIATE
SERVICE_QUALITY ACTIVE_IND SPATIAL_OBS_NO
BA_SERVICE_TYPE RATE _SD_FK
7
SOURCE
ROW_CHANGED_BY Copyright 2018, PPDM Association. All Rights Reserved
AA_FK
Reading the PPDM Data
Diagrams
In Previous
PPDM Version
New
Table
New
Reference
Table
Many
Child Table Parent PK part of the child PK Parent
Mandatory relationship, parent must exist
Table
Many
Child Table Parent PK not part of the child PK
Optional relationship, but if used, parent must exist Parent
Table
One
Child Table Parent PK part of the child PK Parent
Mandatory relationship, parent must exist
Table
Although this relationship is used in
PPDM (super sub types), the diagram
tool does not support this notation
Many
Child Table Parent PK not part of the child PK Parent
Mandatory relationship, parent must exist
Table
This relationship is possible, but NOT
used in PPDM. Only PK columns are
mandatory.
9 Copyright 2018, PPDM Association. All Rights Reserved
PPDM Online Tabs
Search
Documentation
Diagrams
Switch schema
Print options
Subject list
Column list
Additional info
• Mandatory Components
• Table and column definitions – file extension is .tab
• Constraints (primary, foreign, check) – file extension is .con
• Note that in PPDM 3.9, the use of constraints to the R_PPDM_ROW_QUALITY reference table
continues to be mandatory.
Table Synonyms
80000 2000
70000
1500
60000 Tables
1000
50000 Columns
Constraints 500
40000
30000 0
20000
10000
0
PPDM 18 PPDM PPDM PPDM PPDM PPDM PPDM PPDM PPDM PPDM
1.0 2.0 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9
Plateau of
Productivity
Slope of
Trough of Enlightenment
Visibility
Disillusionment
Technology
Trigger
Maturity
Data ends up here
Long Term
Software management is
Corp Plan tactical!
Project plan
Executive
support
($)
Corporate Data Build a product
Maintain the
product
Corporate
execution
Decommission
Data the product
and data
survives
software
Can you think of any critical Can you think of any critical data or
process through the E&P lifecycle information that has been lost or
where data and information is not corrupted and become unavailable
created or used? to key stakeholders?
Data management
objectives must both
We
individual needs of each
stakeholder group or
process, to ensure that
data is stewarded for
others in support of the
corporate goal of data
management.
Integration
Long Learning Curves
Process are different
People are less portable
• The model is well positioned to support expansion • More horizontal tables, fewer vertical
• Business users can understand the model (with help) • More tables are needed to store
information than in most historical
− It’s their data; they should understand it!
systems
• The model is very flexible and powerful
− This is a consequence of business
− $100 M of Business input! modeling
PPDM uses super / sub types in cases where we need to capture detailed information about
specific kinds of objects, but want the referencing systems to be as simple as possible.
Some information is relevant for all canines (or vehicles), but some is specific to dogs
or wolves (or cars or airplanes)
AREA FACILITY
# AREA_ID # FACILITY_ID Support
# AREA_TYPE # FACILITY_TYPE Facilities
converted to
Super / Sub
types
Example
If you populate PDEN and PDEN_TYPE = 'PDEN_WELL', you must also put a row of
data into PDEN_WELL. The foreign key relationship to the well whose identity the
PDEN is assuming is in PDEN_WELL.
Row
Tables and Columns
Naming conventions
Class words
Column
Domains
Column Types
• Deprecation AREA_HIER_DETAIL
• Tables to be deprecated are prefixed with Z_ for one release
• Do not use these tables for new implementations AREA_CLASS
• Convert old applications (have about 2 years notice)
Simple content
Each column contains one type of information
Information is not usually concatenated
Identifiers
Could be implemented as natural or surrogate
Cost / benefit of both approaches
Column data types
Char (Oracle = varchar2)
Number (includes precision)
Numeric (no precision)
Date
Blob (used twice only)
• Should be added to every table in the data model, unless there is a %_REMARK
subordinate table.
• This column should not be used to store “structured” data when a specific
column can’t be found.
• Used for narrative comments about the data, usually from the perspective of the
business (not IT)
• The ROW EXPIRY DATE column is intended to be used for information about the
technical implementation or management of the data in a table.
• ROW EFFECTIVE DATE column is intended to be used for information about the
technical implementation or management of the data in a table.
Identifier varchar2 40
Type varchar2 40
Short name varchar2 30
Indicator (Y or N) varchar2 1
Seq_no number 8
Obs_no number 8
Latitude / Longitude number 14,9
Remark varchar2 2000
2 3 4
• SYSTEM_ID
• TABLE_NAME
• COLUMN_NAME
• PPDM_GUID
System
Table
Column
Row
• Keep in mind that because many tables are used in MANY relationships in PPDM, you
will need to configure your system to allow UPDATES, INSERTS and DELETES to
these tables over time.
• Some RDBMS have limitations on the number of times a table can be referenced in a
foreign key (some versions of SQL*Server limit this to 256).
• Some RDBMS have limitations on the number of FK that can be in a table (some
versions of SQL*Server limit this to 256).
• Some RDBMS may require you to have sufficiently large update or pool spaces to
allow updates to be committed.
• Although this will be easy at the start of your PPDM project, the problem will grow
as the number of times a value is referenced by other constraints increases.
• Columns
• one or more
• mandatory or optional
• Examples
• subject hierarchy PROD_STRING
• You can navigate from parent to grandchildren directly (without using CONNECT BY queries).
XREF_TYPE
DATA STORE
DATA STORE ID XREF_ID Values are
ID2
examples only
Warehouse 1 a Bay 1 Warehouse - Bay
Direct Relationships
Warehouse 1 b Bay 2 Warehouse - Bay
Only Bay 1 c Unit A Bay - Unit
Bay 1 d Unit B Bay - Unit
Unit A e Shelf 1 Unit - Shelf
Unit A f Shelf 2 Unit - Shelf
81 Copyright 2018, PPDM Association. All Rights Reserved
Using Recursive Relationships
Reciprocating constraints
• Each table contains FK constraints from the other
• Denormalized constraints
• Removing these as supported by members
PPDM 3.2
This relationship is easier to
manage, and offers business
SEIS_LINE (or benefits!
SEIS_SEGMENT)
First Point
Last Point
SEIS_POINT
234 Astralia
PERIOD_TYPE
WELL_TEST_ the WELL_TEST_PRESS_MEAS
RECORDER
PERIOD_OBS_NO
values that are recorded must all
be associated to the same
WELL_TEST and the same WELL.
• Protect the user from data corruption by preventing more than one UWI from being
referenced
PHYSICAL_
ITEM_
STORE
STORE_
ID
Best Practice: Ideally, the fully normalized location for a data value should be
used. The denormalized column (located in a parent table) is added to support
legacy implementations and should not be used for new implementations.
. .
. .
WELL_COMPONENT
…….
Detail Detail
• Check constraints are used to control the creation and behavior of super / sub type
table sets.
• The values are intentionally placed in the DDL, as they are not user controlled.
• Users should not change these values!
• The values used for the check constraints TYPE column must be exactly the same as the
names of each of the subtype tables.
• Every subtype (child) table name is included.
• The supertype (parent) table name is not included in the check constraint list.
• Values that are not the name of a subtype table may never be used.
• The names must be exactly the same as the name of the subtype table.
• The primary key of every table in the set must be at least 2 components:
• The first component identifies which of the subtype tables is used.
• Column name:
• In PPDM 3.8, this column is named %_TYPE and is the second part of the PK.
• In PPDM 3.9, this column is named %_SUBTYPE and is the first part of the PK.
• The second component of the Primary Key provides uniqueness.
• The value of the second component must be the same in the supertype and subtype tables.
• For every unique value in the Supertype table, that same value may be used in exactly one and only one
of the subtype tables.
• Check constraints are created to control the values that may be used.
• In the supertype (parent) table, the column may contain any of the subtype table names.
• In the subtype (child) table, the column may only contain the name of the table it is in. This
prevents users from using the wrong subtype table.
• In every super subtype table set, it is mandatory to populate both the super type and
the subtype tables.
• If a row is created in the supertype table, it must be related to a corresponding row in one
and only one of the subtype tables.
• If a row is created in the subtype table, it must be related to a corresponding row in the
supertype table.
• Objective: Load data into PPDM with all foreign and LOAD OF THE RINGS
not null constraints enabled
600
543
500
400
R_SOURCE R_PPDM_ROW_QUALITY
300
#SOURCE #ROW_QUALITY_ID
ROW_SOURCE ROW_QUALITY
ROW_QUALITY 200
SOURCE
100 69 78 83
57 65 66
41 40 48 45 39 38
18
2 4 1 1
0
RI 0
RI 2
RI 4
RI 6
RI 8
RI 0
RI 2
RI 4
RI 6
RI 8
RI 0
RI 2
RI 4
RI 6
RI 8
RI 0
RI 2
34
0
3
NG
NG
NG
NG
NG
NG
NG
NG
NG
NG
NG
NG
NG
NG
NG
NG
NG
NG
RI
102 Copyright 2018, PPDM Association. All Rights Reserved
From the LOTR Spreadsheet
TABLE_NAME TABLE_RING_LEVEL
APPLICATION RING18
APPLICATION_COMPONENT RING24
1. Order by Table
APPLIC_ALIAS RING20
APPLIC_AREA RING20
APPLIC_ATTACH RING20
APPLIC_BA RING20
APPLIC_DESC RING20
APPLIC_REMARK RING20 TABLE_NAME COLUMN_NAME RING_LEVEL GROUP
AREA RING06 APPLICATION ACTIVE_IND RING00 INSERT
AREA_ALIAS RING10
APPLICATION APPLICATION_ID RING00 INSERT
AREA_COMPONENT RING24
APPLICATION APPLICATION_TYPE RING04 INSERT
AREA_CONTAIN RING08
AREA_DESCRIPTION RING18 APPLICATION CONTRACT_ID RING18 INSERT
BA_ADDRESS RING08 APPLICATION CURRENT_STATUS RING04 INSERT
BA_ALIAS RING10 APPLICATION DECISION RING04 INSERT
BA_AUTHORITY RING10
APPLICATION DECISION_DATE RING00 INSERT
BA_AUTHORITY_COMP RING24
BA_COMPONENT RING24
APPLICATION EFFECTIVE_DATE RING00 INSERT
BA_CONSORTIUM_SERVICE RING16 APPLICATION EXPIRY_DATE RING00 INSERT
BA_CONTACT_INFO
2. Order by Column
RING12 APPLICATION EXTENSION_ID RING18 INSERT
BA_CREW RING10 APPLICATION FEES_DESC RING00 INSERT
BA_CREW_MEMBER RING12
APPLICATION FEES_PAID_IND RING00 INSERT
BA_DESCRIPTION RING18
BA_EMPLOYEE RING06 APPLICATION PPDM_GUID RING00 INSERT
APPLICATION PREVIOUS_APPLICATION_ID RING19 UPDATE
APPLICATION RATE_SCHEDULE_ID RING16 INSERT
APPLICATION RECEIVED_DATE RING00 INSERT
APPLICATION REFERENCE_NUM RING00 INSERT
To load data into these tables, you should use the following sequence:
Use reciprocating values and denormalized columns ONLY if you need to improve
performance! Populate them by procedure from their “home” location.
Check
constraint in
PK
Unmanaged arcs are never part of the Primary Key of a table (since
PPDM 3.4)
• Typical queries
• To non-FK columns
Source version
Inherited version
Alias version
WELL
R SOURCE
WELL
VERSION
Purchased
Service Data
Operator Regulator by
Company vendor
operator
SEIS SET
Names may change over time
Need to track both current and history Physical Circ ID Date Who
Item
The version of the data is based on date
• Data Circulation ABC 1 94-03-08 J Doe
• Status
ABC 2 94-06-29 B Lind
Surrogate PK component
ABC 3 95-04-19 J Clarke
Survey Recorded
Station
Format number
sequence sequence
number number
• number 8
1 1 1
2 2 2
Class Word 3 3 3
• xxx_seq_no Seismic acquisition
4 4 (interpolated)
5 5 (interpolated)
sequence and spatial
sequence may not be
6 6 (interpolated)
the same
7 7 6
8 8 5
9 9 4
Class Word
• xxx_obs_no
A vertical table must allow a wide variety of descriptive information (property values) to be
stored.
• Dates
• Currencies
• Measured values (with units of measure)
• Values selected from code lists
• Open text
• Value ranges (min and max)
• Combinations of values (a value and a narrative statement)
The property type table can be used to define rules about how each property type should
behave
• If the value to be entered is a date, which column should I use?
• How much precision for these measures?
• What unit of measure should a measured value be stored in?
• What reference table should be used to validate a reference code?
EQUIPMENT_ID MAX_VALUE_UOM
Each column is tuned to a specific SPEC_SET_ID MIN_DATE
CURRENCY_OUOM REFERENCE_VALUE
What precision and units should be REFERENCE_VALUE_OUOM
CURRENCY_UOM
used for each kind of value? DATE_FORMAT_DESC REFERENCE_VALUE_TYPE
EFFECTIVE_DATE REFERENCE_VALUE_UOM
REMARK
EQUIP_MAINT_ID
SOURCE
How can I be consistent so the table EXPIRY_DATE
SPEC_CODE
MAX_DATE
can be used by everyone? MAX_VALUE
SPEC_DESC
MAX_VALUE_OUOM
MAX_VALUE_UOM
• Use different precision for similar values, making them difficult to query
• Developers often like vertical tables because they are easy to code against
BUT
• The data content often becomes corrupted and hard to use!
The color of my truck – the value should be text, and validated against R_COLOR
The seating capacity of my truck – the value should be a number with no decimal
places
The fuel capacity of my truck – the value should be a number with one decimal
place, stored in liters.
table.
EXPIRY_DATE DATE ROW_CREATED_DATE
MAX_DATE DATE ROW_QUALITY
MAX_VALUE NUMBER
MAX_VALUE_OUOM VARCHAR2 20
MAX_VALUE_UOM VARCHAR2 20
MIN_DATE DATE
MIN_VALUE NUMBER
MIN_VALUE_OUOM VARCHAR2 20
MIN_VALUE_UOM VARCHAR2 20 This table contains
PPDM_GUID VARCHAR2 38 valid property types. It
REFERENCE_VALUE
REFERENCE_VALUE_OUOM
NUMBER
VARCHAR2 20
controls the behavior in
REFERENCE_VALUE_TYPE VARCHAR2 20 the vertical table.
REFERENCE_VALUE_UOM VARCHAR2 20
REMARK VARCHAR2 2000
SOURCE VARCHAR2 20
SPEC_CODE VARCHAR2 20
SPEC_DESC VARCHAR2 1024
ROW_CHANGED_BY VARCHAR2 30
ROW_CHANGED_DATE DATE
ROW_CREATED_BY VARCHAR2 30
ROW_CREATED_DATE DATE
ROW_QUALITY VARCHAR2 20
EQUIPMENT_SPEC R_EQUIP_SPEC
Each reference
EQUIPMENT_ID
table that contains20 the list
VARCHAR2 SPEC_TYPE
of Property Types for a vertical20table
SPEC_ID VARCHAR2 ABBREVIATION
SPEC_TYPE
contains
VARCHAR2
ACTIVE_IND a foreign key
20
to PPDM
VARCHAR2 1
ACTIVE_IND
EFFECTIVE_DATE
1 PPDM_PROPERTY_SET
PROPERTY_SET_ID
EXPIRY_DATE
PROPERTY
AVERAGE_VALUE
AVERAGE_VALUE_OUOM
SET.
NUMBER
VARCHAR2 20
LONG_NAME ACTIVE_IND
EFFECTIVE_DATE
PPDM_GUID
AVERAGE_VALUE_UOM VARCHAR2 20 PROPERTY_SET_ID EXPIRY_DATE
COST NUMBER 2 12 REMARK PPDM_GUID
Property sets allow us to control how
CURRENCY_CONVERSION NUMBER 5 10 SHORT_NAME PROPERTY_SET_NAME
REMARK
each property should be treated in the
CURRENCY_OUOM VARCHAR2 20 SOURCE
ROW_CHANGED_BY SOURCE
CURRENCY_UOM VARCHAR2 20
database.
EFFECTIVE_DATE DATE
ROW_CHANGED_DATE
ROW_CREATED_BY
USE_TABLE_NAME
ROW_CHANGED_BY
This gives us very precise control over
EXPIRY_DATE DATE PPDM_PROPERTY_COLUMN
ROW_CREATED_DATE ROW_CHANGED_DATE
MAX_DATE DATE ROW_QUALITY ROW_CREATED_BY
how to manage vertical tables.
MAX_VALUE NUMBER ROW_CREATED_DATE
MAX_VALUE_OUOM VARCHAR2 20 PROPERTY_SET_ID ROW_QUALITY
MAX_VALUE_UOM VARCHAR2 20 PROPERTY_OBS_NO
MIN_DATE
MIN_VALUE
DATE
NUMBER
ACTIVE_IND
COLUMN_PRECISION
COLUMN_SCALE
2
MIN_VALUE_OUOM VARCHAR2 20
COLUMN_SIZE
MIN_VALUE_UOM VARCHAR2 20 DATA_TYPE
PPDM_GUID VARCHAR2 38 DOMAIN
REFERENCE_VALUE NUMBER EFFECTIVE_DATE
REFERENCE_VALUE_OUOM VARCHAR2 20 EXPIRY_DATE
This table allows us to control exactly
REFERENCE_VALUE_TYPE VARCHAR2
20 how the vertical table will behave for every column that is used
PPDM_GUID
PREFERRED_CURRENCY_UOM
when a particular Property Type
REFERENCE_VALUE_UOM
REMARK
VARCHAR2
20
VARCHAR2
2000
is used. PREFERRED_UOM
REF_TABLE_NAME
SOURCE VARCHAR2 20 REMARK
Some properties are described with NUMBERIC values – use this table to list which columns in the
SPEC_CODE
SPEC_DESC
VARCHAR2
VARCHAR2
20
1024
SOURCE
USE_COLUMN_NAME
vertical table should be used, what precision you want to use (how many decimal places), what units
ROW_CHANGED_BY VARCHAR2 30 USE_TABLE_NAME
ROW_CHANGED_BY
ROW_CHANGED_DATE DATE
of measure to use and so on. 30
ROW_CREATED_BY VARCHAR2
ROW_CHANGED_DATE
ROW_CREATED_BY
ROW_CREATED_DATE DATE ROW_CREATED_DATE
ROW_QUALITY VARCHAR2 20 ROW_QUALITY
For code values that are derived from a reference table, you can say which reference table to
validate the entered value against.
PROPERTY_SET_ID
USE COLUMN NAME and USE PROPERTY_OBS_NO
TABLE NAME identify the name of ACTIVE_IND
the vertical table and the column of COLUMN_PRECISION
the vertical table that should be COLUMN_SCALE
used to store the value for a COLUMN_SIZE
property. DATA_TYPE
DOMAIN
For some kinds of property types, EFFECTIVE_DATE
more than one column may be EXPIRY_DATE
needed to describe the properties. PPDM_GUID
PREFERRED_CURRENCY_UOM
You can list as many columns as you
PREFERRED_UOM
need to, using one row in this table
REF_TABLE_NAME
for each property value you will
REMARK
store in the vertical table.
SOURCE
USE_COLUMN_NAME
USE_TABLE_NAME
ROW_CHANGED_BY
ROW_CHANGED_DATE
ROW_CREATED_BY
ROW_CREATED_DATE
ROW_QUALITY
EQUIPMENT_SPEC R_EQUIP_SPEC
EQUIPMENT_ID VARCHAR2 20 SPEC_TYPE
SPEC_ID VARCHAR2 20 ABBREVIATION
SPEC_TYPE VARCHAR2 20 ACTIVE_IND PPDM_PROPERTY_SET
ACTIVE_IND VARCHAR2 1 EFFECTIVE_DATE
AVERAGE_VALUE NUMBER EXPIRY_DATE PROPERTY_SET_ID
ACTIVE_IND
The mass of my AVERAGE_VALUE_OUOM
AVERAGE_VALUE_UOM
COST
VARCHAR2
VARCHAR2
NUMBER
20
20
12 2
LONG_NAME
PPDM_GUID
PROPERTY_SET_ID
EFFECTIVE_DATE
EXPIRY_DATE
3
SOURCE VARCHAR2 20 COLUMN_SCALE
SPEC_CODE VARCHAR2 20 COLUMN_SIZE
4 SPEC_DESC
ROW_CHANGED_BY
ROW_CHANGED_DATE
VARCHAR2
VARCHAR2
DATE
1024
30
DATA_TYPE
DOMAIN
EFFECTIVE_DATE
ROW_CREATED_BY VARCHAR2 30 EXPIRY_DATE
ROW_CREATED_DATE DATE PPDM_GUID
ROW_QUALITY VARCHAR2 20 PREFERRED_CURRENCY_UOM
SPEC TYPE = MASS PREFERRED_UOM
REF_TABLE_NAME
USE TABLE NAME = EQUIPMENT_SPEC
REMARK
EQUIPMENT_SPEC R_EQUIP_SPEC
EQUIPMENT_ID VARCHAR2 20 SPEC_TYPE
SPEC_ID VARCHAR2 20 ABBREVIATION
SPEC_TYPE VARCHAR2 20 ACTIVE_IND PPDM_PROPERTY_SET
ACTIVE_IND VARCHAR2 1 EFFECTIVE_DATE
AVERAGE_VALUE NUMBER EXPIRY_DATE PROPERTY_SET_ID
diameter of CURRENCY_OUOM
CURRENCY_UOM
VARCHAR2
VARCHAR2
20
20
SHORT_NAME
SOURCE
PROPERTY_SET_NAME
REMARK
SOURCE
EFFECTIVE_DATE DATE ROW_CHANGED_BY
USE TABLE NAME =
my pipeline EXPIRY_DATE DATE ROW_CHANGED_DATE USE_TABLE_NAME
MAX_DATE DATE ROW_CREATED_BY ROW_CHANGED_BY
MAX_VALUE
MAX_VALUE_OUOM
NUMBER
VARCHAR2 20
ROW_CREATED_DATE
ROW_QUALITY
ROW_CHANGED_DATE
ROW_CREATED_BY
EQUIPMENT_SPEC
MAX_VALUE_UOM VARCHAR2 20 ROW_CREATED_DATE
MIN_DATE DATE ROW_QUALITY
MIN_VALUE NUMBER
MIN_VALUE_OUOM VARCHAR2 20
MIN_VALUE_UOM VARCHAR2 20
PPDM_GUID
REFERENCE_VALUE NOTE: In PPDM
REFERENCE_VALUE_OUOM
VARCHAR2
NUMBER
VARCHAR2
38
20
PPDM_PROPERTY_COLUMN
PROPERTY_SET_ID
USE TABLE NAME = 3
PROPERTY
REFERENCE_VALUE_TYPE
REFERENCE_VALUE_UOM
VARCHAR2
VARCHAR2
20
20
PROPERTY_OBS_NO
ACTIVE_IND
EQUIPMENT_SPEC
REMARK VARCHAR2 2000 COLUMN_PRECISION
SOURCE COLUMN there
VARCHAR2 20 COLUMN_SCALE
SPEC_CODE VARCHAR2 20 COLUMN_SIZE
USE COLUMN NAME = MIN VALUE
SPEC_DESC
ROW_CHANGED_BY are 2 rows
VARCHAR2
VARCHAR2
1024
30
DATA_TYPE
DOMAIN
COLUMN PRECISION = 2
4 ROW_CHANGED_DATE
ROW_CREATED_BY
ROW_CREATED_DATE
DATE
VARCHAR2
DATE
30
EFFECTIVE_DATE
EXPIRY_DATE
PPDM_GUID COLUMN SIZE = 8
ROW_QUALITY VARCHAR2 20 PREFERRED_CURRENCY_UOM
30
DOMAIN
EFFECTIVE_DATE
EXPIRY_DATE
ROW_CREATED_DATE DATE PPDM_GUID
PREFERRED_CURRENCY_UOM USE TABLE NAME =
SPEC TYPE = COLOR ROW_QUALITY VARCHAR2 20
• Table names
• R_%
• Reference-like subjects (Areas, BA’s…)
• Decide what to use in PK values
• Natural values – names or other natural value can reduce joins
• GUID – uniqueness more likely
• Integers - may speed up query and retrieval
• Never force your users to memorize or refer to lists of codes!
• Create some business rules and deploy them consistently
• How, who, when, where…
• Check on-line documentation to confirm the existence and name of the reference table:
• When you find NULL data, and that absence is important, use the tables
PPDM_AUDIT_HISTORY and PPDM_QUALITY_CONTROL to track what you did to
investigate the problem and why the value is NULL.
• Note: In order to use these tables, you must install the DDL scripts that create a
unique index and a NOT NULL constraint on PPDM_GUID in every table.
PPDM_QUALITY_CONTROL
PPDM_AUDIT_HISTORY
• Users should not “dummy” data values that should convey business meaning in
order to satisfy a constraint or a procedure.
• Falsified or dummied data results in user mistrust, and can confuse or obscure the
results from legitimate queries.
• The PPDM Data Model avoids making columns mandatory unless it is certain that the
value can be determined and created on INSERT into the table.
• This guideline does not apply to values that are normally generated through system
procedures, such as Sequence Numbers, Observation Numbers, Primary Keys and so
on.
• The value may not be appropriate for the specific kind of data being loaded.
• For example, the table BUSINESS_ASSOCIATE can be used to describe people,
companies, regulatory agencies, consortiums, etc. Depending on which kind of business
associate you are describing, some columns will not be relevant. For example,
FIRST_NAME and LAST_NAME are not relevant to describing a company.
• In this case, it is useful to populate the column with a value such as NOT APPLICABLE.
• The value may not have been received yet, but is expected.
• As data is received from field operations, it is often necessary to populate data as it is
received, rather than waiting for a complete set of data.
• In this case, it is useful to populate the column with a value such as EXPECTED.
• Pitfall: Think about the time delays and processes that your organization uses in updating
incomplete information. Make sure that you will be able to add the missing information
when it is received, and that the updates can be propagated to your user communities.
Good governance procedures are important, as one does not want to present users with a
value such as EXPECTED long after operations are complete.
• The value may be UNKNOWN, but no search has been conducted to determine
whether a value might be discovered with some effort.
• In this case, it is useful to indicate to future searchers that there could be value in doing
some research to discover the missing value. Use PPDM_QUALITY_CONTROL to record
the fact that no research was conducted.
154 Copyright 2018, PPDM Association. All Rights Reserved
Understanding “NULL” Data
RA_CONFIDENTIAL_TYPE
R_CONFIDENTIAL_TYPE
#CONFIDENTIAL_TYPE
#CONFIDENTIAL_TYPE
#ALIAS_ID
…….
…….
• Some tables have strong REFERENCE BEHAVIOR, but are not a simple list of values
• AREA
• BUSINESS ASSOCIATE
• CS_COORDINATE_SYSTEM
• FACILITY
• FIELD, POOL
• SUBSTANCE
• STRAT_UNIT
• ZONE
• Architectural Principles
• DATE should not be part of the PK
• Volume regimes
• Volume measure based on temperature and pressure regimes
• Currencies
• Conversion rate varies over time
• Different banks use different conversion rates
• Different transactions use different conversion rates
• Exceptions
• Values whose UOM cannot be standardized
• Example: Production volume UOM depends on the type of product
• Example: Vertical tables
WELL
UWI DRILL_TD DRILL_TD_OUOM
SMITH12F 1250 FEET
JONES44 1560 METERS
12345 1400 FEET
PPDM_COLUMN
TABLE_ COLUMN_ UOM_ COLUMN OUOM_ COLUMN DEFAULT
NAME NAME _ UOM_
SYMBOL
WELL UWI
WELL DRILL_TD_OUOM
The PPDM Meta Model does not store data values - only information
about the structure of the data model.
The default Unit of Measure for a measured value is stored in the meta
model.
The original Unit of Measure is stored in the business table. This value is
only used to restore values back to the original (usually for regulatory
reporting).
Use the Meta Model to convert units from one system to another.
• Scalability
• retrieval (‘all wells that fall within my area’)
de
x c lu n e B
E Zo
l
• GIS does not handle sub-surface well Oi
• Depths ranges
• Zones
• Pools, reservoirs are not polygons
• Spatial locations version over time
• Historical
• Predictive
• Attribute information may be related to spatial information
• May need huge amounts of structured data that relates to the spatial information
WELL_NODE
COORDINATE
NODE_ID LATITUDE LONGITUDE _SYSTEM_ID UWI
12345 45.3456 49.1584 NAD83 12345
WELL_NODE_VERSION
COORDINATE
NODE_ID SRC OBS_NO UTM_X UTM_Y _SYSTEM_ID
12345 PPDM 1 200654 4956258 WGS83
• Try not to leave any information inferred if you can avoid it.
2005 East Texas Production Just using the table and column names we
have a lot of information
#PK
JAN OIL VOLUME (BBL)
FEB OIL VOLUME (BBL) • AREA in column name
WELL_
TEST_
FLOW
OK
• Natural vs surrogate
• Integer vs character
• GUID vs random vs concatenated vs license plate…
• Should they cascade or not?
• In PPDM 3.9 Primary Keys are now VARCHAR2(40) from VARCHAR2(20)
These
Don’t
requirements assume
Keep the
drive the PK Avoid
highly
the user
knows
RI
structure
structure in the #UWI
WELL_LEVEL_TYPE
destructive which
as simple
changes component
well subject area type is
as possible
created
No Distinguish
mandatory between Allow
hierarchy - completions components
relate only (n) and to be fully
components completions described
you know. (v)
• Implementation assists
• API?
• More documentation?
• More rigor in compliance?
www.ppdm.org/forums/