>>1. Should we create primary key for almost every table?

I agree with CHRISLONG.

>>Oracle will automatically create a unique index with the >>creation of a primary key on the table. If i do not need >>index on this column should i create this primary key? I >>remember that unique index is not easy to maintain. Is >>that correct?

Yes. Oracle will do this. You would do most of your searches based on IDs (PKs) and the joins that you do in your queries would be based on PKs and hence, Indexes on PKs are required and it's an Oracle feature that you can not avoid or over-rule it...I mean, there is no way you can create a PK without an index.

Maitaining UNIQUE KEY is just like maitaining another Oracle object. Who said it is tough to maintain? If the business rule says it must be unique then, this is how you enforce it. At the same time, you do lot of queries based on unique indexes as well.


>>2. In a table creation script should i specify the storage,
>>such as initial, next? Or should i just use the tablespace
>>default storage?
>>For some special table I will spesify at table level.

You could specify your own parameters at the table level. Or, you could create 2-3 tablespaces and create tables in each of these based on their volume. This way you could specify parameters at tablespace level itslef instead of at the table level.


>>3. Should i create the foreign key for every related table?
>>The foreign key will affect the exp/imp.

It all depends on your business and the type of application you are designing (OLTP or DSS). FKs will not pose a problem during EXP/IMP. During IMP, oracle will load the data first and then create the constraints later on. So, you will be safe here.