首先使用約束可以確保表數據的準確完整和唯一性;
其中常見的約束有
PRIMARYKEY,DEFAULT,UNIQUE,FOREIGNKEY,NOTNULL
一般情況下:DEFAULT和NOTNULL是會限制的,可以確保數據完整避免程序邏輯不夠嚴謹造成的系統異常。但也不是絕對的,如果是后期優化還要考慮現有數據是否會造成沖突。
PRIMARYKEY在大對數情況下會設置作為業務數據的唯一標識符。但一些關系表一般可以不設置。有人說PRIMARYKEY必須自增,其實也未必。得就實際業務需求而定。
UNIQUE約束可以保證一列或者多列組合值都是唯一的??梢蕴嵘@一列的搜索效率。但同樣也得考慮歷史數據的情況。
當然以上情況只是經驗之談,具體數據庫的優化一定是根據實際的業務邏輯進行的??赡軟]有什么必須遵守不可違背的定律。
只要符合業務需求并且能夠提升業務效率,就是合理的設計。