You can also look at citext type to avoid the casting.

    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? 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.

Reply via email to