What columns generally make good indexes?

Indexes can play an important role in query optimization and searching the results speedily from tables. The most important step is to select which columns are to be indexed. There are two major places where we can consider indexing: columns referenced in the WHERE clause and columns used in JOIN clauses. In short, such columns … Read more

Why use multiple columns as primary keys (composite primary key)

Your understanding is correct. You would do this in many cases. One example is in a relationship like OrderHeader and OrderDetail. The PK in OrderHeader might be OrderNumber. The PK in OrderDetail might be OrderNumber AND LineNumber. If it was either of those two, it would not be unique, but the combination of the two … Read more

When to use a View instead of a Table?

Oh there are many differences you will need to consider Views for selection: Views provide abstraction over tables. You can add/remove fields easily in a view without modifying your underlying schema Views can model complex joins easily. Views can hide database-specific stuff from you. E.g. if you need to do some checks using Oracles SYS_CONTEXT … Read more

Best design for a changelog / auditing database table? [closed]

In the project I’m working on, audit log also started from the very minimalistic design, like the one you described: event ID event date/time event type user ID description The idea was the same: to keep things simple. However, it quickly became obvious that this minimalistic design was not sufficient. The typical audit was boiling … Read more