I realize that a primary key is defined in a logical model while a primary/seconday index is defined during database design. I also understand that a primary index may or may not consist of all, or part, of the logical model primary key depending on performance and distribution requirements. I work for a company that uses Informatica as their ETL tool. We are converting a legacy edw built on Oracle to a new edw build on Teradata. Most of the ETL standards were developed based on how Informatica interacted best with Oracle. One of those standards within Informatica states that all primary keys will be defined at the database level in order to prevent sql overrides to define them in Informatica if they are not defined in the database. My problem is that, essential, primary keys do not exist, only primary indexes (upi,nupi,usi,nusi). Primary indexes may change over time in order to improve query performance based on varying data demographics. I do not want to define anything at the database level as a primary key as that will only add to the existing confusion concerning primary keys and primary indexes. Does anyone know of a best practice in this situation (assigning a primary key in the database versus allowing the definition of primary indexes in sql overrides using Informatica? Also, please feel free to communicate to me how/if you think 'primary keys' are used in database design.