What are the key points to avoid table locks?
First a quick recap on what a deadlock is. Let's say you have two sessions, 1 and 2, and two resources, A and B. The following sequence then occurs:


Session 1 gets a lock on resource A
Session 2 gets a lock on resource B
Session 1 requests a lock on resource B, but has to wait until session 2 has released it. We are fine up until this point
Session 2 requests a lock on resource A - but session 1 is blocked and can never go forwards to release it. Deadlock occurs.


There is only a very limited amount your DBA can do about this because this situation originates in the application, it merely manifests itself in the database. It is best to adopt a convention of always locking resource in the same order. If we had the convention of always locking in the order A, B then our scenario would be:


Session 1 gets a lock on resource A
Session 2 requests a lock on A, but has to wait for session 1
Session 1 gets a lock on resource B, completes its work, and releases both
Session 2 gets locks on both A and B, completes its work, and releases both. No deadlocks.