新聞中心
sql server主鍵是sql server中非常重要的組成部分,那么,sql server主鍵設(shè)計(jì)目前都遇到了那些問題呢?下文將帶您尋找答案。

關(guān)于sql server主鍵設(shè)計(jì),一般而言,是根據(jù)業(yè)務(wù)需求情況,以業(yè)務(wù)邏輯為基礎(chǔ),形成sql server主鍵。
比如,銷售時(shí)要記錄銷售情況,一般需要兩個(gè)表,一個(gè)是銷售單的概要描述,記錄諸如銷售單號(hào)、總金額一類的情況,另外一個(gè)表記錄每種商品的數(shù)量和金額。對(duì)于第一個(gè)表(主表),通常我們以單據(jù)號(hào)為sql server主鍵;對(duì)于商品銷售的明細(xì)表(從表),我們就需要將主表的單據(jù)號(hào)也放入到商品的明細(xì)表中,使其關(guān)聯(lián)起來形成主從關(guān)系。同時(shí)該單據(jù)號(hào)與商品的編碼一起,形成明細(xì)表的聯(lián)合主鍵。這只是一般情況,我們稍微將這個(gè)問題延伸一下:假如在明細(xì)中,我們每種商品又可能以不同的價(jià)格方式銷售。有部分按折扣價(jià)格銷售,有部分按正常價(jià)格銷售。要記錄這些情況,那么我們就需要第三個(gè)表。而這第三個(gè)表的主鍵就需要第一個(gè)表的單據(jù)號(hào)以及第二個(gè)表的商品號(hào)再加上自身需要的信息一起構(gòu)成聯(lián)合主鍵;又或者其他情況,在第一個(gè)主表中,本身就是以聯(lián)合方式構(gòu)成聯(lián)合主鍵,那么也需要在從表中將主表的多個(gè)字段添加進(jìn)來聯(lián)合在一起形成自己的主鍵。
數(shù)據(jù)冗余存儲(chǔ):隨著這種主從關(guān)系的延伸,數(shù)據(jù)庫中需要重復(fù)存儲(chǔ)的數(shù)據(jù)將變得越來越龐大?;蛘弋?dāng)主表本身就是聯(lián)合主鍵時(shí),就必須在從表中將所有的字段重新存儲(chǔ)一次。
SQL復(fù)雜度增加:當(dāng)存在多個(gè)字段的聯(lián)合主鍵時(shí),我們需要將主表的多個(gè)字段與子表的多個(gè)字段關(guān)聯(lián)以獲取滿足某些條件的所有詳細(xì)情況記錄。
程序復(fù)雜度增加:可能需要傳遞多個(gè)參數(shù)。
效率降低:數(shù)據(jù)庫系統(tǒng)需要判斷更多的條件,SQL語句長度增加。同時(shí),聯(lián)合主鍵自動(dòng)生成聯(lián)合索引
WEB分頁困難:由于是聯(lián)合主鍵方式(對(duì)于多數(shù)的子表),那么在WEB頁面上要進(jìn)行分頁處理時(shí),在自關(guān)聯(lián)時(shí),難于處理。
【編輯推薦】
SQL CHARINDEX函數(shù)的使用
SQL查詢時(shí)間段的語句寫法
SQL隱性事務(wù)實(shí)例
SQL事務(wù)的操作語法
SQL中CONVERT函數(shù)的使用
文章名稱:sqlserver主鍵的問題現(xiàn)狀
URL標(biāo)題:http://m.5511xx.com/article/ccspoej.html


咨詢
建站咨詢
