當前位置:首頁 » 操作系統 » 資料庫建模

資料庫建模

發布時間: 2022-01-10 04:46:52

⑴ 如何進行數據建模

如何進行數據建模
正確完成建模

在過去的幾十年裡,數據建模的努力通常集中在關系數據建模或可擴展標記語言(XML)的建模上。只要數據存儲在關系資料庫中,關系數據建模就會很好,但除此之外,它很少會有其他的用途。而且XML也不能被可靠地稱為建模語言。XML是序列化數據的規范--即定義了如何將數據寫入文件。XML為構造數據的序列化提供了一種格式,但它不是一個真正的模型。

我所說的「模型」指的是以數學為基礎的形式規范。實際上,這意味著是可以使用形式化方法進行驗證的東西。通俗地說,這意味著我們可以用數學運算來證明它是正確的,並且我們可以使驗證過程自動化。而在XML模式中捕獲數據不符合此定義下的模型。但可以肯定的是,我們可以使用軟體來驗證該XML格式是否良好,是否符合一些XML模式的文檔。但這還不足以真正地對數據進行建模。

無論是計算機還是人,如果不同時理解數據的語法(結構)和語義(含義),就無法理解數據。XML可以捕獲語法,但它不能天生捕獲語義。語義可以用XML格式編寫,但是這些語義必須首先在一些更正式的建模方案中被捕獲。換句話說,企業需要一個正式的本體。這種建模方案大多基於形式邏輯,通常是公共邏輯或描述邏輯。

迄今為止,最常用的語義建模語言是基於描述邏輯的網路本體語言(OWL)。這意味著我們不僅可以正式驗證模型及其包含的數據,還可以通過對數據的推理來推斷新的事實,並且我們可以證明這些推斷的正確性。因為OWL是本體建模的事實上的標准,所以我將把剩下的內容限制在OWL上。

但是等等!所有這些都不意味著你需要將你的數據存儲為OWL。在你過於擔心如何將存儲格式強加給不情願的開發人員之前,先聽我說完。

⑵ 資料庫建模工具是什麼東西

你說的使用過程和建模工具還真差不多。

所謂建模就是把現實世界的東西模型化到軟體中的過程。

資料庫建模指的是把現實中沒有使用計算機的情況下需要存儲、處理的數據模型化到資料庫中。
關系資料庫一般是以表(table)來存儲數據的,對應現實中來說一個表的信息就是一類事物的信息。比如現實中的學生信息、課程信息,模型化到資料庫中就是一個職工信息表、一個課程信息表。

所謂建模工具就是幫助我們把現實中的事物模型化成資料庫對象的工具。
比如powerdesigner就是一個資料庫建模工具,rational rose也可以進行資料庫建模。

在這些工具中我們一般先以漢字的形式定義現實中的各個事物及其屬性(比如學生),然後定義各個對象之間的關系,比如一個學生可以學習多門課程,一門課程可以被多個學生學,那麼他們之間就是多對多的關系,然後我們再將漢字信息轉換成英文,最後工具根據我們定義的事物(資料庫對象)及其關系生成相應的資料庫腳本(不同資料庫腳本語法可能不同),並執行腳本,這樣就通過工具完成現實事物到資料庫對象的建模了。

我是做信息系統的,跟資料庫打交道很多年了。記得選我的答案做推薦答案哦!

⑶ 什麼是數據建模

數據建模是一個用於定義和分析在組織的信息系統范圍內支持商業流程所需的數據要求的過程。簡單來說,數據建模是基於對業務數據的理解和數據分析的需要,將各類數據進行整合和關聯,使得數據可以最終以可視化的方式呈現,讓使用者能夠快速地、高效地獲取到數據中有價值的信息,從而做出准確有效的決策。

之所以數據建模會變得復雜且難度大,是因為在建模過程中會引入數學公式或模型,用於確定數據實體之間的關聯關系。不同的業務邏輯和商業需求需要選擇不同的數學公式或模型,而且,一個好的數據模型需要通過多次的測試和優化迭代來完成,這就使得數據建模的難度變得很高。但是,數據分析中的建模並沒有想像中的那麼高深莫測,人人都可以做出適合自己的模型。

數據建模總歸是為了分析數據從而解決商業問題。如下圖數據建模的流程圖,數據建模核心部分是變數處理和模型搭建。

  • 變數處理

  • 在建模之前,首先要決定選擇哪些變數進行建模,主要從業務邏輯和數據邏輯兩方面來考慮。業務邏輯需要了解數據來源的背景,通過了解業務知識來判斷哪些變數在業務上很有價值的,哪些變數是可以選擇的。數據邏輯則是從數據的完整性,集中度,是否與其他變數強相關等角度來考慮。

    除了選擇變數,對於一些變數的重構也是需要在建模前進行。例如客戶的滿意度有「滿意」「不滿意」,可以將其重構成數字「0」和「1」,便於後續建模使用。除此以外,還有將變數單獨計算(取平均值)和組合計算(如A*B)也是常用的重構方法,例如,缺失值以數據取平均值的方式替換。

  • 模型搭建

  • 在模型搭建時,會經歷選擇演算法、設定參數、載入演算法、測試結果四個過程。在這個過程中,測試結果會引導調整之前設定的參數,載入演算法會對應調整之前選擇的演算法,而選擇演算法時會考慮到已定的變數,如果變數不滿足演算法要求,還需回到選擇/重構變數,直至得到最合適的模型。

    在優化模型的過程中,模型的解釋能力和實用性會不斷地提升。在結果輸出之後,還需接收業務人員的反饋,看看模型是否解決了他們的問題,如果沒有,還需進一步修改和調整。

    MicroStrategy在數據領域深挖企業需求,經過多年的研究和沉澱,結合眾多復雜的應用場景,不斷更新體驗,深入開發各種數據輔助功能,使客戶可以一站式鏈接各類型數據資源,完成數據導入和數據建模。在MicroStrategy 平台中,既支持傳統方式數據建模,即通過Project Schema 來進行建模,又支持自助式數據導入的建模方式。

⑷ 誰能告訴我SQL資料庫如何建模

先建概念模型,可用ER或者EER表達,
再建立邏輯模型,是ER或者EER的衍生,(概念模型和邏輯模型有時可以一步到位)
最後再用軟體轉為物理模型,然後資料庫就自動生成了。

⑸ 資料庫建模設計用什麼軟體比較好

資料庫建模比較流行的是用powerdesigner

⑹ 數據模型的含義是什麼為什麼要建立數據模型

數據模型(Data Model)是數據特徵的抽象。數據(Data)是描述事物的符號記錄,模型(Model)是現實世界的抽象。數據模型從抽象層次上描述了系統的靜態特徵、動態行為和約束條件,為資料庫系統的信息表示與操作提供了一個抽象的框架。數據模型所描述的內容有三部分:數據結構、數據操作和數據約束。


(6)資料庫建模擴展閱讀:

數據模型所描述的內容包括三個部分:數據結構、數據操作、數據約束。

1、數據結構:數據模型中的數據結構主要描述數據的類型、內容、性質以及數據間的聯系等。數據結構是數據模型的基礎,數據操作和約束都建立在數據結構上。不同的數據結構具有不同的操作和約束。

2、數據操作:數據模型中數據操作主要描述在相應的數據結構上的操作類型和操作方式。

3、數據約束:數據模型中的數據約束主要描述數據結構內數據間的語法、詞義聯系、他們之間的制約和依存關系,以及數據動態變化的規則,以保證數據的正確、有效和相容。

⑺ 資料庫建模有哪些比較好的書籍可以推薦

理論的話可以看看<<資料庫設計與關系理論>>,實際操作可看看<<powerdrsigner系統分析與建模>>

⑻ 什麼是資料庫建模,為什麼要資料庫建模,有什麼好處

你說的答案不對,我們經理說資料庫建模是指把實際業務邏輯抽離出來,從而變成與資料庫表對應的表結構!所以不能給你分,我自己拿回來了。

⑼ 數據建模的如何進行

概念建模
數據建模大致分為三個階段,概念建模階段,邏輯建模階段和物理建模階段。其中概念建模和邏輯建模階段與資料庫廠商毫無關系,換言之,與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設計,從來沒有過一次成功的經歷。隨著項目的進行,客戶和開發團隊對業務知識與日增長,因此原來的設計也在不斷完善中。畢竟,數據建模或者設計資料庫不是我們的最終目的,我們需要的是一個健壯,性能優越,易擴展,易使用的軟體!

⑽ 資料庫建模的介紹

在設計資料庫時,對現實世界進行分析、抽象、並從中找出內在聯系,進而確定資料庫的結構,這一過程就稱為資料庫建模。它主要包括兩部分內容:確定最基本的數據結構;對約束建模。

熱點內容
pythonfuture 發布:2024-12-25 01:46:47 瀏覽:586
如何提升交換機配置能力 發布:2024-12-25 01:41:53 瀏覽:669
安卓系統怎麼刪除主屏 發布:2024-12-25 01:41:45 瀏覽:493
微信小程序客戶端是如何訪問伺服器的 發布:2024-12-25 01:39:26 瀏覽:508
python逗號split 發布:2024-12-25 01:24:06 瀏覽:155
sqlwithas效率 發布:2024-12-25 01:21:25 瀏覽:484
pcielinux 發布:2024-12-25 01:12:02 瀏覽:644
展示迷宮演算法 發布:2024-12-25 00:58:25 瀏覽:438
手機酷我音樂上傳歌詞 發布:2024-12-25 00:58:14 瀏覽:797
路由器哪裡改密碼 發布:2024-12-25 00:53:18 瀏覽:659