An artificial PK is a primary key in which it holds no meaning to the row in which it identifies. Yes, it violates normalization rules, but it has become a common practice among today's "modern" architects.

In this situation, the user needs six fields to form a natural PK. If he/she added a field called "id" and populated it with the value from a sequence, any joins would probably execute faster.