sql server主鍵的問題現(xiàn)狀
sql server主鍵是sql server中非常重要的組成部分,那么,sql server主鍵設計目前都遇到了那些問題呢?下文將帶您尋找答案。
關于sql server主鍵設計,一般而言,是根據業(yè)務需求情況,以業(yè)務邏輯為基礎,形成sql server主鍵。
比如,銷售時要記錄銷售情況,一般需要兩個表,一個是銷售單的概要描述,記錄諸如銷售單號、總金額一類的情況,另外一個表記錄每種商品的數(shù)量和金額。對于第一個表(主表),通常我們以單據號為sql server主鍵;對于商品銷售的明細表(從表),我們就需要將主表的單據號也放入到商品的明細表中,使其關聯(lián)起來形成主從關系。同時該單據號與商品的編碼一起,形成明細表的聯(lián)合主鍵。這只是一般情況,我們稍微將這個問題延伸一下:假如在明細中,我們每種商品又可能以不同的價格方式銷售。有部分按折扣價格銷售,有部分按正常價格銷售。要記錄這些情況,那么我們就需要第三個表。而這第三個表的主鍵就需要第一個表的單據號以及第二個表的商品號再加上自身需要的信息一起構成聯(lián)合主鍵;又或者其他情況,在第一個主表中,本身就是以聯(lián)合方式構成聯(lián)合主鍵,那么也需要在從表中將主表的多個字段添加進來聯(lián)合在一起形成自己的主鍵。
數(shù)據冗余存儲:隨著這種主從關系的延伸,數(shù)據庫中需要重復存儲的數(shù)據將變得越來越龐大?;蛘弋斨鞅肀旧砭褪锹?lián)合主鍵時,就必須在從表中將所有的字段重新存儲一次。
SQL復雜度增加:當存在多個字段的聯(lián)合主鍵時,我們需要將主表的多個字段與子表的多個字段關聯(lián)以獲取滿足某些條件的所有詳細情況記錄。
程序復雜度增加:可能需要傳遞多個參數(shù)。
效率降低:數(shù)據庫系統(tǒng)需要判斷更多的條件,SQL語句長度增加。同時,聯(lián)合主鍵自動生成聯(lián)合索引
WEB分頁困難:由于是聯(lián)合主鍵方式(對于多數(shù)的子表),那么在WEB頁面上要進行分頁處理時,在自關聯(lián)時,難于處理。
【編輯推薦】