A. 何謂全息信息模型如何建模
摘要 全息信息又叫多維信息或立體信息,這種信息是多渠道、多視角、多側面收集、編寫而成的。全息信息模型,顧名思義,是指包含了系統所有信息的模型。具體體現為系統中的數據不僅僅有各設備的工作狀態信息、數據傳遞信息、系統交互信息,更包含了影響系統運行的數據,如系統所處的自然、社會環境信息等。
B. 誰能告訴我SQL資料庫如何建模
先建概念模型,可用ER或者EER表達,
再建立邏輯模型,是ER或者EER的衍生,(概念模型和邏輯模型有時可以一步到位)
最後再用軟體轉為物理模型,然後資料庫就自動生成了。
C. 怎樣用python數據建模
最近,我從孫子(指《孫子兵法》——譯者注)那裡學到了一些策略:速度和准備
「兵之情主速,乘人之不及,由不虞之道,攻其所不戒也。」(《孫子兵法•九地篇》)無備為戰之大患,有備無患,其乃至德也。(哈哈,譯者自己寫了這句,想必大家能明白。)
這與數據科學博客有什麼關系呢?這是你贏得競爭和編程馬拉松的關鍵。如果你比競爭對手准備得更充分,你學習、迭代執行的速度越快,那麼你就取得更好的名次,帶來更好的結果。
由於近幾年來,Python用戶數量上漲及其本身的簡潔性,使得這個工具包對數據科學世界的Python專家們變得有意義。本文將幫助你更快更好地建立第一個預測模型。絕大多數優秀的數據科學家和kagglers建立自己的第一個有效模型並快速提交。這不僅僅有助於他們領先於排行榜,而且提供了問題的基準解決方案。
預測模型的分解過程
我總是集中於投入有質量的時間在建模的初始階段,比如,假設生成、頭腦風暴、討論或理解可能的結果范圍。所有這些活動都有助於我解決問題,並最終讓我設計出更強大的商業解決方案。為什麼你要在前面花費這段時間,這有充分的理由:
你有足夠的時間投入並且你是無經驗的(這是有影響的)
你不帶有其它數據觀點或想法的偏見(我總是建議,在深入研究數據之前做假設生成)
在後面的階段,你會急於完成該項目而沒有能力投入有質量的時間了。
這個階段需要投入高質量時間,因此我沒有提及時間表,不過我建議你把它作為標準的做法。這有助於你建立建立更好地預測模型,在後面的階段的只需較少的迭代工作。讓我們來看看建立第一個模型的剩餘階段的時間表:
數據描述性分析——50%的時間
數據預處理(缺失值和異常值修復)——40%的時間
數據建模——4%的時間
性能預測——6%的時間
讓我們一步一步完成每個過程(每一步投入預測的時間):
階段1:描述性分析/數據探索
在我剛開始成為數據科學家的時候,數據探索占據了我大量的時間。不過,隨著時間的推移,我已經把大量的數據操作自動化了。由於數據准備占據建立第一個模型工作量的50%,自動化的好處是顯而易見的。
這是我們的第一個基準模型,我們去掉任何特徵設計。因此,描述分析所需的時間僅限於了解缺失值和直接可見的大的特徵。在我的方法體系中,你將需要2分鍾來完成這一步(假設,100000個觀測數據集)。
我的第一個模型執行的操作:
確定ID,輸入特徵和目標特徵
確定分類和數值特徵
識別缺失值所在列
階段2:數據預處理(缺失值處理)
有許多方法可以解決這個問題。對於我們的第一個模型,我們將專注於智能和快速技術來建立第一個有效模型。
為缺失值創建假標志:有用,有時缺失值本身就攜帶了大量的信息。
用均值、中位數或其它簡單方法填補缺失值:均值和中位數填補都表現良好,大多數人喜歡用均值填補但是在有偏分布的情況下我建議使用中位數。其它智能的方法與均值和中位數填補類似,使用其它相關特徵填補或建立模型。比如,在Titanic生存挑戰中,你可以使用乘客名字的稱呼,比如:「Mr.」, 「Miss.」,」Mrs.」,」Master」,來填補年齡的缺失值,這對模型性能有很好的影響。
填補缺失的分類變數:創建一個新的等級來填補分類變數,讓所有的缺失值編碼為一個單一值比如,「New_Cat」,或者,你可以看看頻率組合,使用高頻率的分類變數來填補缺失值。
由於數據處理方法如此簡單,你可以只需要3到4分鍾來處理數據。
階段3:數據建模
根據不同的業務問題,我推薦使用GBM或RandomForest技術的任意一種。這兩個技術可以極其有效地創建基準解決方案。我已經看到數據科學家通常把這兩個方法作為他們的第一個模型同時也作為最後一個模型。這最多用去4到5分鍾。
D. 數據建模方式中正確的有哪些
常用正確的建模方法有實體建模法、維度建模法和範式建模法三種數據建模方法,不管哪種數據建模方法都是使信息結構清晰、易於存儲和讀取。
E. 怎麼使用MySQL Workbench做數據建模
方法/步驟
打開MySQL Workbench,並連接資料庫。圖中顯示連接資料庫對話框
成功連接後,點擊如圖所示紅色按鈕,「create new Schema」,填寫資料庫名稱如「new_schema」,點擊「應用」,如圖
在彈出的的確認對話框中點擊「應用」,如圖
OK,成功創建,如圖
如圖操作,我們開始創建表
需要填寫表名(new_table),列名」id、date「和選擇列的類型,以及列屬性(主鍵),點擊」應用「
7
如圖所示,成功創建表,點擊右鍵,選擇「select rows」可以編輯表內容
F. 數據建模中比較常用的工具有哪些
隨著科技的日新月異,人們對數據的依賴穩步上升中,尤其在商業等領域,對於企業而言正確且連貫的數據流,是他們做出快速、精準的決策的重要依據之一。因此,建立正確的數據流和數據結構才能保證最好的結果,這個過程就是大家耳聞能詳的數據建模。
下面為大家推薦一些數據建模中常見的幾種工具。
1、SQL資料庫建模器
該軟體使企業可以參與逆向工程和正向工程。利用已經存在的資料庫並完善它們。然後,使用正向工程技術來了解它們如何隨時間的推移而增長。該平台的更多獨特功能包括創建多個主題區域的能力以及非常友好的用戶界面。使用此工具的一些企業包括福特、聯想、Wayfair和德勤等公司。
2、PowerDesigner
PowerDesigner是目前數據建模業界的領頭羊。功能包括:完整的集成模型,和面向包含IT為中心的、非IT為中心的差異化建模訴求。支持非常強大的元數據信息庫和各種不同格式的輸出。PowerDesigner擁有一個優雅且人性化的界面,非常易懂的幫助文檔,快速幫助用戶解決專業問題。
3、CA ERwin
ERwin 也是業界領先的數據建模解決方案,能夠為用戶提供一個簡單而優雅的界面同時處理復雜的數據環境問題。Erwin的解決方案提提供敏捷模型,同時元數據可以放在普通的資料庫中進行處理,這樣就能夠保證數據的一致性和安全性。Erwin支持高度自定義的數據類型、APIs,允許自動執行宏語言等等。Erwin還建有一個很活躍的用戶討論社區,使得用戶之間可以分享知識和各種經驗。
4、SQL Power Architect
SQL Power Architect 是一個Java開發的資料庫建模工具,特別適合做數據倉庫和數據集市的應用建模,它允許設計人員同時打開多個數據源連接,並直接從資料庫中獲取模型定義。
5、dbdiagram.io
dbdiagram.io是一個快速上手的資料庫設計器,專注於繪制資料庫關系圖,專為開發人員,DBA,數據分析師而設計,在線保存和共享圖表可幫助您使用其自己的特定於域的語言(DSL:Domain-specific language)繪制資料庫圖。它們的定義語言非常簡單,使用鍵盤即可輕松進行編輯/復制,UI簡潔,並包含有漂亮的圖表。
為了避免錯誤並加快進度,建議大家可以使用這些更加專業的工具(軟體),來幫助我們建立數據模型,且能夠更快捷的生成報告來描述這個數據模型,為大家帶來實利。
G. 數據建模的如何進行
概念建模
數據建模大致分為三個階段,概念建模階段,邏輯建模階段和物理建模階段。其中概念建模和邏輯建模階段與資料庫廠商毫無關系,換言之,與MySQL,SQL Server,Oracle沒有關系。物理建模階段和資料庫廠商存在很大的聯系,因為不同廠商對同一功能的支持方式不同,如高可用性,讀寫分離,甚至是索引,分區等。
概念建模階段
實際工作中,在概念建模階段,主要做三件事:
1. 客戶交流
2. 理解需求
3. 形成實體
這也是一個迭代,如果先有需求,盡量去理解需求,明白當前項目或者軟體需要完成什麼,不明白或者不確定的地方和客戶及時交流,和客戶double confirm過的需求,落實到實體(Package);但是好多時候我們需要通過先和客戶交流,進而將交流結果落實到需求,之後進一步具體到實體;本文可能會涉及到一些來自於EA(Enterprise Architect 7.1)建模術語,(EA中將每個實體視為一個Package)。這里並不對各種建模工具進行比較,如Visio,EA,PowerDesigner, ERWin等;其實作為員工的我們選擇性很少,公司有哪個產品的Licence,我們就用哪個吧。
舉例說明:在一個B2C電子商務網站中,這樣的需求再普通不過了:客戶可以在該網站上自由進行購物!我們就以這個簡單例子,對其進行細分,來講解整個數據建模的過程,通過上面這句話,我們可以得出三個實體:客戶,網站,商品;就像Scrum(敏捷開發框架的一種)中倡導的一樣每個Sprint,都要產出確確實實的東西,OK,概念建模階段,我們就要產出實體。客戶和商品(我們將網站這個實體扔掉,不需要它。)
在創建這兩個實體(Package)的時候,我們記得要講對需求的理解,以及業務規則,作為Notes添加到Package中,這些信息將來會成為數據字典中非常重要的一部分,也就是所謂的元數據。BTW,EA或者其他建模工具應該都可以自動生成數據字典,只不過最終生成的格式可能不太一樣。如在Customer這個Package的Notes上,我們可以這樣寫,用戶都要通過填寫個人基本信息以及一個郵箱來注冊賬戶,之後使用這個郵箱作為登錄帳號登錄系統進行交易。
在概念建模階段,我們只需要關注實體即可,不用關注任何實現細節。很多人都希望在這個階段把具體表結構,索引,約束,甚至是存儲過程都想好,沒必要!!因為這些東西使我們在物理建模階段需要考慮的東西,這個時候考慮還為時尚早。可能有的人在這個階段擔心會不會丟掉或者漏掉一些實體?也不用擔心,2013年好多公司都在採用Scrum的開發模式,只要你當前抽象出來的實體滿足當前的User Story,或者當前的User Story裡面的實體,你都抽象出來了,就可以了!如果你再說,我們User Story太大,實體太多,不容易抽象,那就真沒辦法了,建議你們的團隊重新開Sprint 計劃會議。
邏輯建模
邏輯建模階段
對實體進行細化,細化成具體的表,同時豐富表結構。這個階段的產物是,可以在資料庫中生成的具體表及其他資料庫對象(包括,主鍵,外鍵,屬性列,索引,約束甚至是視圖以及存儲過程)。我在實際項目中,除了主外鍵之外,其他的資料庫對象我都實在物理建模階段建立,因為其他資料庫對象更貼近於開發,需要結合開發一起進行。如約束,我們可以在web page上做JavaScript約束,也可以在業務邏輯層做,也可以在資料庫中做,在哪裡做,要結合實際需求,性能以及安全性而定。
針對Customer這個實體以及我們對需求的理解,我們可以得出以下幾個表的結構,用戶基本信息表(User),登錄賬戶表(Account),評論表(Commnets,用戶可能會對產品進行評價),當然這個案例中我們還會有更多的表,如用戶需要自己上傳頭像(圖片),我們要有Picture表。
針對產品實體,我們需要構建產品基本信息表(Proct),通常情況下,我們產品會有自己的產品大類(ProctCategory)甚至產品小類(ProctSubCategory),某些產品會因為節假日等原因進行打折,因為為了得到更好的Performance我們會創建相應ProctDiscount表,一個產品會有多張圖片,因此產品圖片表(ProctPicture)以及產品圖片關系表(ProctPictureRelationship),(當然我們也可以只設計一張Picture表,用來存放所有圖片,用戶,產品以及其他)有人說產品和圖片是一對多的關系,不需要創建一個關系表啊?是的,我認為只要不是一對一的關系,我都希望創建一個關系表來關聯兩個實體。這樣帶來的好處,一是可讀性更好,實現了實體和表一一對應的關系,二是易於維護,我們只需要維護一個關系表即可,只有兩列(ProctID和PictureID),而不是去維護一個Picture表。
客戶進行交易,即要和商品發生關系,我們需要Transaction表,一個客戶會買一個或者多個商品,因為一筆Transaction會涉及一個或多個Procts,因此一個Transaction和ProctDiscount之間的關系(ProctDiscount和Proct是一一對應的關系)需要創建,我們稱其為Item表,裡面保存TransactionID以及這筆涉及到的ProctDiscountID(s),這里插一句,好多系統都需要有審計功能,如某個產品歷年來的打折情況以及與之對應的銷售情況,我們這里暫不考慮審計方面的東西。
就這樣,我們根據需求我們確定下來具體需要哪些表,進一步豐富每一個表屬性(Column),當然這裡面會涉及主鍵的選取,或者是使用代理鍵(Surrogate Key),外鍵的關聯,約束的設置等細節,這里筆者認為只要能把每個實體屬性(Column)落實下來就是很不錯了,因為隨著項目的開展,很多表的Column都會有相應的改動。至於其他細節,不同資料庫廠商,具體實現細節不盡相同。關於主鍵的選取多說一句,有的人喜歡所有的表都用自增長ID作為主鍵,而有的人希望找到唯一能標識當前記錄的一個屬性或者多個屬性作為主鍵;自增長ID作為代理主鍵,對於將來以多個類似當前Transaction System作為數據源,構建數據倉庫的時候,這些自增長ID主鍵會是一個麻煩(多個系統中,相同表存在大量主鍵重復);使用一個屬性或多個屬性作為作為主鍵,不管主鍵是可編輯的,讀寫效率是我們必須考慮得。所以並沒有一個放之四海而皆準的原則,筆者只是給大家推薦一些考慮的因素。
物理建模
物理建模階段
EA可以將在邏輯建模階段創建的各種資料庫對象生成為相應的SQL代碼,運行來創建相應具體資料庫對象(大多數建模工具都可以自動生成DDL SQL代碼)。但是這個階段我們不僅僅創建資料庫對象,針對業務需求,我們也可能做如數據拆分(水平或垂直拆分),如B2B網站,我們可以將商家和一般用戶放在同一張表中,但是針對PERFORMANCE考慮,我們可以將其分為兩張表;隨業務量的上升,Transaction表越來越大,整個系統越來越慢,這個時候我們可以考慮數據拆分,甚至是讀寫分離(即實現MASTER-SLAVE模式,MYSQL/SQLSERVER可以使用Replication,當然不同存儲引擎採用不同的方案),這個階段也會涉及到集群的事情,如果你是架構師或者數據建模師,這個時候你可以跟DBA說,Alright,I am done with it,now is your show time.
相信大家都知道範式,更有好多人把3NF奉為經典,3NF確實很好,但是3NF是幾十年前提出來的,那個時候的數據量以及訪問頻率和2012年完全不是一個數量級的;因此我們絕對不能一味地遵守3NF;在整個數據建模過程中,在保證數據結構清晰的前提下,盡量提高性能才是我們關注的要點,因此筆者大力倡導數據適當冗餘!
上面筆者是結合一些實際例子表達自己對數據建模的觀點,希望對讀著有用。在數據建模過程中,不要希望一步到位將資料庫設計完整,筆者不管是針對data warehouse還是Transactional Database設計,從來沒有過一次成功的經歷。隨著項目的進行,客戶和開發團隊對業務知識與日增長,因此原來的設計也在不斷完善中。畢竟,數據建模或者設計資料庫不是我們的最終目的,我們需要的是一個健壯,性能優越,易擴展,易使用的軟體!
H. 數據實體如何建模
數據建模:軟體開發中非常重要的部分,是概要設計階段必須完成的工作。
數據建模要能夠分析出項目中使用的實體、確定多個實體之間的關系。
I. 如何進行數據建模
如何進行數據建模
正確完成建模
在過去的幾十年裡,數據建模的努力通常集中在關系數據建模或可擴展標記語言(XML)的建模上。只要數據存儲在關系資料庫中,關系數據建模就會很好,但除此之外,它很少會有其他的用途。而且XML也不能被可靠地稱為建模語言。XML是序列化數據的規范--即定義了如何將數據寫入文件。XML為構造數據的序列化提供了一種格式,但它不是一個真正的模型。
我所說的「模型」指的是以數學為基礎的形式規范。實際上,這意味著是可以使用形式化方法進行驗證的東西。通俗地說,這意味著我們可以用數學運算來證明它是正確的,並且我們可以使驗證過程自動化。而在XML模式中捕獲數據不符合此定義下的模型。但可以肯定的是,我們可以使用軟體來驗證該XML格式是否良好,是否符合一些XML模式的文檔。但這還不足以真正地對數據進行建模。
無論是計算機還是人,如果不同時理解數據的語法(結構)和語義(含義),就無法理解數據。XML可以捕獲語法,但它不能天生捕獲語義。語義可以用XML格式編寫,但是這些語義必須首先在一些更正式的建模方案中被捕獲。換句話說,企業需要一個正式的本體。這種建模方案大多基於形式邏輯,通常是公共邏輯或描述邏輯。
迄今為止,最常用的語義建模語言是基於描述邏輯的網路本體語言(OWL)。這意味著我們不僅可以正式驗證模型及其包含的數據,還可以通過對數據的推理來推斷新的事實,並且我們可以證明這些推斷的正確性。因為OWL是本體建模的事實上的標准,所以我將把剩下的內容限制在OWL上。
但是等等!所有這些都不意味著你需要將你的數據存儲為OWL。在你過於擔心如何將存儲格式強加給不情願的開發人員之前,先聽我說完。
J. 常用的輸入數據建模方法有哪些他們的應用特點是什麼
目前最常用的三種數據模型為層次模型、網狀模型和關系模型。
一、層次模型
層次模型將數據組織成一對多關系的結構,層次結構採用關鍵字來訪問其中每一層次的每一部分。
層次模型發展最早,它以樹結構為基本結構,典型代表是IMS模型。
優點是存取方便且速度快;結構清晰,容易理解;數據修改和資料庫擴展容易實現;檢索關鍵屬性十分方便。
二、網狀模型
網狀模型用連接指令或指針來確定數據間的顯式連接關系,是具有多對多類型的數據組織方式。
網狀數據模型通過網狀結構表示數據間聯系,開發較早且有一定優點,目前使用仍較多,典型代表是 DBTG模型。
優點是能明確而方便地表示數據間的復雜關系。