代理鍵
A. surrogate keys在sql中是什麼意思
在SQL Server代理鍵是表中的每一行的唯一標識符。這僅僅是一個鍵。使用此鍵,我們可以找出一個唯一的行。沒有業務含義為代理鍵。這種類型的關鍵是產生或通過其他應用程序(而不是由用戶自備)產生的任何資料庫。
Surrogate Key 的關鍵是為每個行只是唯一的標識符,它可能會作為主鍵使用。存在對替代主密鑰,它是每個行必須具有該列的唯一值的唯一要求。代理鍵也被稱為人工鍵或身份鍵。它可以在數據倉庫中。
A Surrogate Key should have the following characteristics:
•Unique Value
•The key is generated by the system, in other words automatically generated
•The key is not visible to the user (not a part of the application)
•It is not composed of multiple keys
•There is no semantic meaning of the key
一般來說,Surrogate Key 的關鍵是SQL Server或資料庫本身產生了連續的唯一編號。代理鍵的purpsoe是作為主鍵。有一個代理鍵和主鍵之間的細微差別。理想情況下,每一行既有主鍵和代理鍵。主鍵標識資料庫中的唯一行,而代理鍵標識模型中的唯一實體。
http://www.c-sharpcorner.com/UploadFile/ff2f08/surrogate-key-in-sql-server/
http://www.sql-server-performance.com/2014/natural-surrogate-keys/
B. 求教如何中控控制智能電視開關機,通過網路命令喚醒和關閉電視,求解決方案,酬勞400元,萬分感謝!
更換帶紅外功能的手機,使用萬能遙控器功能配對出你電視的遙控器,按下遙控器的電視代理鍵即可達到你喜歡的絕對控制效果。
錢就不用,採納即可。
C. 數據倉庫 代理鍵 使用方法
我看到你的模型設計實際上沒有考慮歷史數據。要考慮到歷史數據,你的相關表結構需要一些變化。
事實表的結構需要變更為:
statis_month userid(主) bid deptid pay
200901 1 1 301 50
200901 2 2 302 30
200901 3 2 302 40
200901 4 3 303 15
200901 1 1 301 50
200901 2 4 302 30
200901 3 4 302 40
200901 4 3 303 15
我理解代理鍵實際是反應了倉庫中維度表的變更歷史。
例如,你提到的維度表可能發生如下變化
bid(代) deptid deptname groupid groupname 狀態 最後狀態日期
1 301 銷售一部 1 銷售區 失效 200901
2 302 銷售二部 1 銷售區 在用 200901
3 303 市場一部 2 市場區 在用 200901
4 302 銷售二部 2 市場區 在用 200902
D. 如何用代理鍵實現 DB2 UDB 主鍵
本文描述了三種實現: 使用傳統方法。使用鍵管理器。使用DB2 UDB 特性。代理鍵也叫 內鍵(internal key)。當創建一個表時,可以添加一個額外的列作為代理鍵。這個列應該是 NOT NULL,並且沒有商業意義。可以將該代理列指定為主鍵列。例如可以有一個數字代理列。代理鍵的值從某一個數字開始,例如 "1",以這個數字作為該列在表中第一行的值,之後的每一行中該列的值都按 1 遞增。 例如,如果我們有表 EMPLOYEE: CREATE TABLE EMPLOYEE ( FIRSTNAME CHAR(64), LASTNAME CHAR(64), SALARY DECIMAL(10, 2)) 那麼可以添加一個代理鍵列 SERIALNUMBER,並將其指定為主鍵列。這樣,這個表的定義就變為: CREATE TABLE EMPLOYEE ( SERIALNUMBER BIGINT NOT NULL, FIRSTNAME CHAR(64), LASTNAME CHAR(64), SALARY DECIMAL(10, 2), PRIMARY KEY (SERIALNUMBER)) 那麼,怎樣將惟一的值賦給每一行的 SERIALNUMBER 列呢?首先需要為代理鍵生成惟一的值。下面我將討論三種可行的解決方案。回頁首使用傳統方法解決方案的思想傳統方法是使用簡單的 SQL 或觸發器生成惟一的值。示例以表EMPLOYEE 為例。您可以在 INSERT 語句中實現代理鍵生成函數: INSERT INTO EMPLOYEE (SERIALNUMBER, FIRSTNAME, LASTNAME, SALARY) VALUES ((SELECT MAX(SERIALNUMBER) FROM EMPLOYEE)+1, 『John』, 『Smith』, 999.99) SQL 語句 " (SELECT MAX(SERIALNUMBER) FROM EMPLOYEE)+1 " 將找出最大的 SERIALNUMBER 並將其加 1,這樣新行就有一個惟一的 SERIALNUMBER。 這樣做存在的一個問題是,當將第一行插入表中時,可能會得到如下錯誤: SQL0407N Assignment of a NULL value to a NOT NULL. SQLSTATE=23502. 得到上述錯誤的原因是,當表為空時," SELECT MAX(SERIALNUMBER) FROM EMPLOYEE " 的返回為 NULL。因此,我們必須使用 COALESCE() 來處理這個問題: INSERT INTO EMPLOYEE (SERIALNUMBER, FIRSTNAME, LASTNAME, SALARY) VALUES (COALESCE((SELECT MAX(SERIALNUMBER) FROM EMPLOYEE), 0)+1, 『John』, 『Smith』, 999.99) 另一種傳統方法是使用觸發器來生成代理鍵: CREATE TRIGGER AUTOSURROGATEKEY NO CASCADE BEFORE INSERT ON EMPLOYEE REFERENCING NEW AS N FOR EACH ROW MODE DB2SQL BEGIN ATOMIC SET N.SERIALNUMBER = COALESCE((SELECT MAX(SERIALNUMBER) FROM EMPLOYEE), 0)+1; END 優點及問題傳統方法易於理解,而且容易在所有系統上實現。但是,這種實現實際上會導致事務處理系統中出現並發問題。因為該實現只允許一次執行一條 INSERT 操作。 因此,在獲得最大的 SERIALNUMBER 之前," SELECT MAX(SERIALNUMBER) FROM EMPLOYEE " 必須等待其他所有事務完成對表 EMPLOYEE 的 INSERT 或 UPDATE 操作。例如,如果有兩個事務正在對 EMPLOYEE 表進行 INSERT 操作,那麼其中有一個事務會被另一個事務阻塞。顯然,這種「逐次插入」的解決方案不適合多用戶的事務處理系統。 回頁首使用鍵管理器解決方案的思想很多大型的應用程序使用鍵管理器方法維護所有表的代理鍵。鍵管理器可以是一個助手類。每當需要向表插入一個行時,便可以調用鍵管理器生成新的鍵值,然後將獲得的鍵值插入新行。示例首先,需要創建表 KEYS 來記錄每個表的當前代理鍵值。鍵管理器類將使用該表生成新鍵值。 CREATE TABLE KEYS ( TABLENAME CHAR(256), COLNUMNAME CHAR(256), SURROGATEKEYVALUE BIGINT, INCREMENT BIGINT, PRIMARY KEY(TABLENAME, COLNUMNAME)); 第二,將新表(例如表 EMPLOYEE)注冊到表 KEYS 中。 INSERT INTO KEYS (TABLENAME, COLUMNNAME, SURROGATEKEYVALUE, INCREMENT) VALUES (『EMPLOYEE』, 『SERIALNUMBER』, 0, 1); 第三,編寫 KeyManger 類來維護每個已注冊表的代理鍵。KeyManager 將提供兩個方法: /** *Intialize the KeyManger */ KeyManager.singleton(); /** *Return the unique surrogate key value according to the input table *name and column name. */ KeyManager. GetSurrogateKey(String tableName, String columnName); 要查看更詳細的 KeyManger 的代碼,請參考附錄。 第四,調用 KeyManger 來獲得主鍵值: … KeyManager km = KeyManager.singleton(); Long surrogateKey = km.getSurrogateKey("EMPLOYEE", "SERIALNUMBER"); … 優點和問題顯然,鍵管理器是模塊化設計的一個很好的例子。鍵管理器封裝了代理鍵生成函數。這種實現也易於定製。您可以在 KEYS 表中為 SURROGATEKEYVALUE 或 INCREMENT 指定不同的值,以得到不同的代理鍵。而且,這種實現可以在大多數資料庫系統上實施。但是,為了進行維護,需要一個單獨的表和編寫代碼。所以,這種方法更適合於大型的跨資料庫系統。 回頁首使用DB2 UDB 特性DB2 UDB 提供了三種方法來生成惟一值。您可以使用這些方法來實現代理鍵。DB2 UDB Version 6.1 中的 GENERATE_UNIQUE() SQL 函數。 DB2 UDB Version 7.2 中 CREATE TABLE 語句的 IDENTITY 選項。DB2 UDB Version 7.2 中的 SEQUENCE 對象。 GENERATE_UNIQUE()解決方案的思想GENERATE_UNIQUE() 最初是在 DB2 UDB Version 6.1 中提供的一個 SQL 函數。該函數返回當前系統時間戳。我們可以使用該函數為代理鍵列生成惟一值。示例 CREATE TABLE EMPLOYEE ( SERIALNUMBER CHAR(13) FOR BIT DATA NOT NULL, FIRSTNAME CHAR(64), LASTNAME CHAR(64), SALARY DECIMAL(10, 2), PRIMARY KEY (SERIALNUMBER)) 然後可以用下面的 SQL 語句插入一行: INSERT INTO EMPLOYEE (SERIALNUMBER, FIRSTNAME, LASTNAME, SALARY) VALUES(GENERATE_UNIQUE(), 『John』, 『Smith』, 999.99) 優點和問題這里需要清楚兩件事情。首先,當多個事務在同一時刻插入行時,GENERATE_UNIQUE() 可能會返回相同的時間戳。在這種情況下,GENERATE_UNIQUE() 不能為每個事務生成一個惟一的返回值,因而這種方法不適合有大量事務的系統。第二,一旦系統時鍾需要向後調整,那麼 GENERATE_UNIQUE() 將可能返回重復的值。 由於上述限制,我決不會在生產系統中使用 GENERATE_UNIQUE()。但是,當您需要在有限的時間內完成一個原型時,這也許是一種選擇。 CREATE TABLE 語句中的 IDENTITY 選項解決方案的思想IDENTITY 是 DB2 UDB Version 7.1 和後期版本提供的 CREATE TABLE 語句中的一個選項。在創建表時,可以將某個列指定為 IDENTITY 列。對於每條 INSERT 語句,DB2 將負責為其中的這一列生成一個惟一的值。 示例 CREATE TABLE EMPLOYEE ( SERIALNUMBER BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), FIRSTNAME CHAR(64), LASTNAME CHAR(64), SALARY DECIMAL(10, 2), PRIMARY KEY (SERIALNUMBER)) 然後可以用下面的語句插入一行: INSERT INTO EMPLOYEE (FIRSTNAME, LASTNAME, SALARY) VALUES ( 『John』, 『Smith』, 999.99) INSERT 語句不需要指定 SERIALNUMBER 列的值。DB2 UDB 將根據列的定義自動生成惟一值,即 "GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)"。優點和問題IDENTITY 函數在大多數情況下是代理鍵函數的一個好的解決方案。DB2 import 和 export 實用程序也支持 IDENTITY 選項。然而,在某種情況下,這種解決方案不大方便。在運行 INSERT 語句之後,應用程序將永遠都不知道放入了主鍵列中的是什麼值。如果應用程序必須繼續向子表插入一個行,那麼它就不得不對父表運行一條 SELECT 語句,以得到主鍵值。不過,如果這一點對於您的系統不成問題的話,那麼使用 IDENTITY 選項是一個好主意。 SEQUENCE 對象解決方案的思想SEQUENCE 對象是在 DB2 UDB Version 7.2 中引入的一個特性。用戶可以在資料庫中創建一個 SEQUENCE 對象,就像創建表對象或視圖對象一樣,然後從 SEQUENCE 中請求值。DB2 保證用戶每次可以得到一個惟一的序列值。 示例您可以在資料庫中創建一個 SEQUENCE 對象: CREATE SEQUENCE EMPSERIAL AS BIGINT START WITH 1 INCREMENT BY 1 如果有一個如下所示的 EMPLOYEE 表: CREATE TABLE EMPLOYEE ( SERIALNUMBER BIGINT NOT NULL, FIRSTNAME CHAR(64), LASTNAME CHAR(64), SALARY DECIMAL(10, 2), PRIMARY KEY (SERIALNUMBER)) 那麼可以用下面的語句插入一個行: INSERT INTO EMPLOYEE ( SERIALNUMBER, FIRSTNAME, LASTNAME, SALARY) VALUES(NEXTVAL FOR EMPSERIAL, 'John', 'Smith', 99.99) 在這里使用 " NEXTVAL FOR EMPSERIAL " 從 SEQUENCE 中獲得惟一值。 您可以使用 " PREVVAL FOR EMPSERIAL " 獲得當前連接會話中最近生成的序列值。應用程序就可以知道放入主鍵列中的是什麼值,從而繼續向子表插入一個行。這里,「在當前連接會話中」這一點很重要,這意味著 "PREVVAL" 將只返回在相同連接會話中生成的值。 例如,考慮這樣的情況:有兩個應用程序連接到資料庫,並按照如下順序運行下面的 SQL 語句。 (假設 SEQUENCE " EMPSERIAL " 的當前值是 3)。 應用程序 1: INSERT INTO EMPLOYEE ( SERIALNUMBER, FIRSTNAME, LASTNAME, SALARY) VALUES(NEXTVAL FOR EMPSERIAL, 'Martin', 'Wong', 1000.00)從EMPSERIAL 生成的 " NEXTVAL " 是 4。 應用程序 2: INSERT INTO EMPLOYEE ( SERIALNUMBER, FIRSTNAME, LASTNAME, SALARY) VALUES(NEXTVAL FOR EMPSERIAL, 'Patrick', 'Chan', 99.99) 從EMPSERIAL 生成的 " NEXTVAL " 是 5。 應用程序 1: SELECT PREVVAL FOR EMPSERIAL FROM EMPLOYEE " PREVVAL " 將返回 4,而不是 5。 而且, PREVVAL 和NEXTVAL 的值不會受事務回滾的影響。 例如,假設 SEQUENCE " EMPSERIAL " 的當前值是 30。某個應用程序開始了一個事務: INSERT INTO EMPLOYEE ( SERIALNUMBER, FIRSTNAME, LASTNAME, SALARY) VALUES(NEXTVAL FOR EMPSERIAL, 'William', 'Chen', 99.99) 執行ROLLBACK 操作。 然後,如果運行: SELECT PREVVAL FOR EMPSERIAL FROM EMPLOYEE 則" PREVVAL " 將返回 31,而不是 30。 優點和問題SEQUENCE 是最近 DB2 UDB 為生成惟一值而實現的函數。它還有一個緩存函數,用於提高性能(要了解詳細信息,請參閱 IBM DB2 UDB SQL Reference)。該函數比 IDENTITY 函數更靈活,因為它是資料庫中的一個獨立對象。必要時候,可以通過運行 ALTER SEQUENCE 語句更改其設置。 如果系統只在 DB2 UDB 上運行,那麼 SEQUENCE 也許是最好的解決方案,因為它易於使用,而且不像鍵管理器那樣需要額外的代碼,並且可以隨需求的變化很輕易對其進行更改。回頁首結束語本文描述了實現作為主鍵的代理鍵的三種方法。文中主要討論了如何為代理鍵生成惟一的序列值。傳統方法適合於簡單的、單用戶(非並發)系統。對於實現對於大型系統和跨平台系統,鍵管理器是一個好選擇。但是,如果項目只在 DB2 UDB 上運行的話,可以考慮 DB2 UDB 提供的特性。IDENTITY 和 SEQUENCE 函數提供了一種容易的、靈活的解決方案。在創建 IDENTITY 列和 SEQUENCE 對象時,可以使用很多選擇。請參閱 IBM DB2 UDB Administration Guide和IBM DB2 UDB SQL Reference,以獲得完整的細節。 回頁首附錄 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class KeyManager { private static KeyManager singleton; private PreparedStatement getKeyStmt = null; private PreparedStatement updateKeyStmt = null; static final String db2Driver = "COM.ibm.db2.jdbc.app.DB2Driver"; static final String db2UrlPfx = "jdbc:db2:"; public KeyManager Singleton() throws ClassNotFoundException, SQLException{ if (singleton == null) { if (singleton == null) singleton = new KeyManager(); } return singleton; } private KeyManager() throws ClassNotFoundException, SQLException{ Class.forName(db2Driver); Connection connection = DriverManager.getConnection(db2UrlPfx+ "dbName", "userName", "password"); getKeyStmt = connection.prepareStatement("SELECT SURROGATEKEYVALUE FROM KEYS WHERE TABLENAME = ? AND COLUMNNAME = ?"); updateKeyStmt = connection.prepareStatement("UPDATE KEYS SET SURROGATEKEYVALUE = SURROGATEKEYVALUE + INCREMENT WHERE TABLENAME = ? AND COLUMNNAME = ?"); } public Long getSurrogateKey(String tableName, String columnName) throws SQLException{ Long keyValue = null; getKeyStmt.setString(1, tableName); getKeyStmt.setString(2, columnName); updateKeyStmt.setString(1, tableName); updateKeyStmt.setString(2, columnName); updateKeyStmt.execute(); ResultSet rs = getKeyStmt.executeQuery(); if (rs.next() == true) { keyValue = new Long(rs.getLong(1)); } return keyValue; } } 參考資料 您可以參閱本文在 developerWorks 全球站點上的 英文原文. IBM DB2 UDB Administration GuideIBM DB2 UDB SQL Reference關於作者Jason Zhang 是 IBM 加拿大多倫多的實驗室的一名軟體開發人員,從事電子商務開發已經有 5 年多的時間。他主要從事於電子商務後台解決方案的研究,例如 EJB、登台伺服器(staging server)和資料庫應用程序。關閉[x]關於報告濫用的幫助報告濫用謝謝! 此內容已經標識給管理員注意。關閉[x]關於報告濫用的幫助報告濫用報告濫用提交失敗。 請稍後重試。關閉[x]developerWorks:登錄IBM ID:需要一個 IBM ID?忘記IBM ID?密碼:忘記密碼?更改您的密碼 保持登錄。單擊提交則表示您同意developerWorks 的條款和條件。 使用條款 當您初次登錄到 developerWorks 時,將會為您創建一份概要信息。您在developerWorks 概要信息中選擇公開的信息將公開顯示給其他人,但您可以隨時修改這些信息的顯示狀態。您的姓名(除非選擇隱藏)和昵稱將和您在 developerWorks 發布的內容一同顯示。所有提交的信息確保安全。關閉[x]請選擇您的昵稱:當您初次登錄到 developerWorks 時,將會為您創建一份概要信息,您需要指定一個昵稱。您的昵稱將和您在 developerWorks 發布的內容顯示在一起。昵稱長度在 3 至 31 個字元之間。 您的昵稱在 developerWorks 社區中必須是唯一的,並且出於隱私保護的原因,不能是您的電子郵件地址。昵稱:(長度在 3 至 31 個字元之間)單擊提交則表示您同意developerWorks 的條款和條件。 使用條款. 所有提交的信息確保安全。為本文評分評論回頁首
E. 什麼是ETL這個職業怎麼樣前景如何
隨著信息技術爆炸性發展,智能終端,智能穿戴設備,無人駕駛汽車等等,都宣告大專數據的時代已經屬來臨!學習成長為一名處理數據的BI工程師是實現夢想的絕佳途徑!
如何入門呢?首先要有資料庫基礎,選擇一門主流的資料庫(ORACLE,DB2,SQLSERVER)學習基本的SQL開發,掌握存儲過程,函數,包,SQL調優等。其次就要會一個主流的BI工具,常見後台ETL工具如:DATASTAGE,INFORMATICA,KETTLE等,主流前台報表工具如BIEE,COGNOS,BO,當然也有國產的像潤乾等。之後就是要了解BI中常用的概念如:事實表,維表,切片,上鑽下取,緩慢變化維,代理鍵等。
要
熟練掌握這些工具,就要在項目中去大量的練習啦,只有通過項目的實踐才能深刻體會BI的這些概念及其精髓。之後有了幾年的經驗就可以向某個行業去深入學習
業務知識做ETL顧問,或者向數據挖掘方向深究!這個過程自學的話要很久,要想在很短的時間入門,找家有實力的機構去通過項目實踐就很有必要啦。國內專注
這塊的有深圳的融通學苑,北京的思數,你可根據自身情況作出選擇。
F. 什麼情況下使用代理鍵它是如何獲得鍵值
代理鍵是指在關系型資料庫設計中,當資料表中的候選鍵都不適合當主鍵內時,例如資料太長容,或是意義層面太多,就會用一個attribute來當代理主鍵,此主鍵可能是用流水號,來代替可辨識唯一值的主鍵。
在數據倉庫領域有一個概念叫Surrogate key,中文一般翻譯為「代理關鍵字」。代理關鍵字一般是指維度表中使用順序分配的整數值作為主鍵,也稱為「代理鍵」。代理關鍵字用於維度表和事實表的連接。
代理關鍵字的稱呼有surrogate keys,meaningless keys,integer keys,nonnatural keys,artificial keys,synthetic keys等。與之相對的自然關鍵字的稱呼有natural keys,smart keys等。
在Kimball的維度建模領域里,是強烈推薦使用代理關鍵字的。在維度表和事實表的每一個聯接中都應該使用代理關鍵字,而不應該使用自然關鍵字或者智能關鍵字(Smart Keys)。數據倉庫中的主鍵不應該是智能的,也就是說,要避免通過主鍵的值就可以了解一些業務信息。當然,退化維度作為事實表的復合主鍵之一時例外。
G. 為什麼我的win2000老出現「SNMP服務忽視擴展代理鍵...」這個錯誤
首先,在「開始」——「運行」裡面輸入,「regedit」,打開注冊表。
展開
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ SNMP \ Parameters \ ExtensionAgents
在右側找到並刪除
\ Microsoft \ IPXMibAgent \ CurrentVersion
然後重啟。試試看,應該能解決。
---
不過,在此之前,建議你先備份注冊表。
----------------------------
分析原因:
SNMP 僅可用於監視的 SQLServer 默認實例。 因此, 如果您沒有安裝默認 SQL Server 2000 實例 (只安裝命名實例), 安裝不創建下列 SNMP 注冊表層次:
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\SNMP
SNMP 服務啟動由於安裝正確插入值與 SQLServerSNMP 擴展代理注冊表項時創建一個問題:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents
H. 構建企業級數據倉庫的步驟是什麼
現如今,很多企業都開始重視數據倉庫的構建,其實構建數據倉庫不是一個難事,難的地方在於如何構建企業級的數據倉庫,這對於企業來說是一件十分困難又必須提上日程的事情。不過,不要灰心,雖然困難,但是我們也可以通過一些方法去構建企業數據倉庫,在這篇文章中我們就給大家介紹一下構建數據倉庫的步驟。
構建企業級的數據倉庫第一步就是要確定主題,其實確定主題就是確定數據分析或前端展現的主題。主題要體現出某一方面的各分析角度和統計數值型數據之間的關系,確定主題時要綜合考慮。這一點是非常重要的,大家一定要重視。
第二個步驟就是確定量度。當我們確定主題後,需要考慮分析的技術指標。一般來說,這些都是數據值型數據,其中有些度量值不可以匯總。有些是可以匯總起來,以便為分析者提供有用的信息。量度是要統計的指標,必須事先選擇恰當,基於不同的量度可以進行復雜關鍵性指標的設計和計算。
第三個步驟就是確定事實數據粒度。當我們確定量度之後,需要考慮該量度的匯總情況和不同維度下量度的聚合情況。如果我們按照「天」為單位來匯總數據的在ETL處理過程中,按天來匯總數據,些時數據倉庫中量度的粒度就是「天」。如果不能確認將來的分析需求中是否要精確的秒,那麼,我們要遵循」最小粒度原則」,在數據倉庫中的事實表中保留每一秒的數據,對數據提前進行匯總,保障產生分析結果的效率。
第四個步驟就是確定維度,其實維度是分析的各個角度。基於不同的維度,可以看到各個量度匯總的情況,也可以基於所有的維度進行交叉分析。
第五個步驟就是創建事實表。在確定好事實數據和維度後,將考慮載入事實表。業務系統的的一筆筆生產,交易記錄就是將要建立的事實表的原始數據。具體的做法是將原始表與維度表進行關聯,生成事實表。關聯時有為空的數據時,需要使用外連接,連接後將各維度的代理鍵取出放於事實表中,事實表除了各維度代理鍵外,還有各度量數據,不應該存在描述性信息。
在這篇文章中我們給大家介紹了構建企業級數據倉庫的相關步驟,相信大家看了這篇文章以後已經對數據倉庫有所了解了吧?大家在構建數據倉庫的時候一定要謹遵上面的步驟進行操作,這樣才能夠提高工作效率,少走彎路,更出色地完成工作任務。
I. key massger 什麼意思
key manager
密鑰管理器;
雙語例句
1
The key manager encapsulates the surrogate key generation function.
鍵管理器封裝了代理鍵生成函數。
2
If you are a manager, a few days before your departure call in each of your key people and once again inquire what they are planning to do ring your absence.
7.如果你是一個經理的話,你走之前幾天需要召集所有的重要員工,再問他們一次,在你離開的這段時間,他們要做些什麼。
J. mysql中怎麼創建代理鍵,命令行語法,不是圖形界面中的
budong