On Thu, Sep 19, 2019 at 03:54:40PM -0600, Michael Lewis wrote: > You can also look at citext type to avoid the casting. Oh, that looks really useful I think I will go back and use that type quite a bit. Thanks for pointing it out to me. > > customer_key integer DEFAULT > nextval('customer_key_serial') PRIMARY KEY , > cust_no smallint NOT NULL UNIQUE , > name varchar UNIQUE , > > Why do you have a surrogate primary key generated by a sequence when you > have a natural key of either cust_no or name? Why not just declare the > customer number to be the PK? At the moment, the customer (who is a small startup) really does not have a customer number. It is really a place holder at the moment, with the sequence being the "real" key. For all I know, the customer number may be alphanumeric. in the final implementation. > Where does customer number come from anyway? > Using smallint seems potentially short-sighted on potential future growth, > but changing the type later should be minimal work as long as you don't > have this customer_number denormalized many places, or use it as the FKey > after dropping customer_key surrogate key. Thanks for your suggestion. -- "They that would give up essential liberty for temporary safety deserve neither liberty nor safety." -- Benjamin Franklin