計算機系為什麼要學資料庫原理和設計?

時間 2021-05-08 17:50:01

1樓:菠蘿莓

關係模式的表示方法是為了資料庫邏輯結構設計,關係代數,笛卡兒積是為了更好更深刻理解SQL,至於後期的故障恢復與併發控制,也很複雜。你說的表,增刪改查只是怎麼用而已。

2樓:

你們學的課叫 「資料庫設計」, 而不是 「資料庫使用」, 換句話說, 難道你認為你只要學會了 SQL 語句就能設計出某個專案資料庫的表, 並保證合理麼? 總不能 「我學不會/不想學的東西就當成沒用的東西」 來想問題吧.

PS. 笛卡爾積難道不是在離散數學裡就學過...

3樓:

個人覺得是因為這個課程的設計有問題,學relational algebra,canonicalisation,cardinality, Cartesian product之類的內容對做程式設計師的確沒有太多幫助。

我認為應該學的一些東西包括,SQL DB和NoSQL DB之間的區別以及一些常見的新式database種類以及優勢和壞處。

Neo4j: 圖資料庫,如果想要側重於表現資料和資料之間的關係,例如說乙個社交網路

RedisDB: In memory data store,可以理解為乙個高階的雜湊表。相比於memcachd的優點在於支援一些更複雜的資料結構,例如說set和list

InfluxDB: 適合儲存需要頻繁寫入的Time Series Data,主要用在物聯網上,如果是主要為了讀取time series表現不一定會比傳統的關係型資料庫更好

LevelDB: Jeff Dean和Sanjay Ghemawat的作品,乙個用了Log Structure Merge Tree的DB。

KSQLDB: 乙個可以用SQL來對Kafka中儲存的資料進行操作的DB,適合與Kafka一起使用。

另外學習資料庫引擎會需要用到的兩個資料結構:Log Structure Merge Tree (LSM Tree, LevelDB)和B Tree(PostgreSQL)也可以很好的加深對資料庫的理解。

4樓:張良

可以反過來問一下,為什麼不學資料庫原理和設計?

此類問題可以隨意改變,最後可以變成為什麼要學計算機。

這不學那不學,到底要學啥?

5樓:TheBadZhang

區別於工程師,程式設計師,碼農

工程師需要你對理論詳細掌握

程式設計師需要你對理論有些了解

碼農只需要你會ctrl c&v就好了

6樓:

防止像我的前男友一樣,因為自己擅長程式設計,所以即使沒有計算機BS也覺得自己武功蓋世。曾經在我面前顯擺自己會用mysql給個人主頁當後台,從而證明世界上沒有自己做不了的職業(原話),並讓我意識到自己的trivial(我是做dbms的)

但是只要你有cs學位、學過資料庫,就知道做dbms和調資料庫是兩碼事 ,以及調資料庫不考慮任何performance和應用場景是本科大作業的基本操作而已。

乙個程式設計師要想走的遠,還是需要os、dbms、計算機系體結構的知識。無論是在學校學還是自學的。 當然我的前男友也鄙視一切engineer,覺得我們都是stupid + useless(原話)

7樓:undefined

因為我們專業的名字,叫「電腦科學」。

關係代數不僅是關係型資料庫的理論模型,同時也是一種非常有用的數學模型,是電腦科學的一部分,而且這種數學模型不僅僅侷限於關係型資料庫中。

而且有部分同學在接觸關係代數之前對「關係」並不熟悉,題主大概會是其中之一,因為題主好像並不熟悉笛卡爾積。關係這一概念本身是相當重要的數學概念,在電腦科學和數學中可以說隨處可見,講解關係代數對理解關係會有一定幫助。

至於正規化,1nf和2nf可能過於平凡,但是3nf,bcnf和4nf,尤其是3nf,是設計關係型資料庫(也就是題主所說的如何設計構建表)的重要參考。雖然說常見的模型大多並不複雜,正規化是平凡的,但是對於少量比較複雜的關係模型,正規化具有很高的參考價值。

而資料依賴則是資料庫設計很重要的依據,資料依賴的概念可能比正規化更重要,但是題主甚至沒有提到。

關於正規化還有很重要的兩個概念是無損連線(lossless join)和依賴保護(dependency preserving),這兩個性質對於資料庫非常重要,同時也是第三正規化為什麼重要的原因。題主同樣沒有提及。

至於資料庫管理系統的實現這一部分,我傾向於認為這部分內容應該僅要求有興趣或者專業方向相關的同學掌握,因為的確使用者不需要了解實現。

居然覺得關係代數難,題主八成沒學過離散吧......

其實我覺得離散數學應該被列為cs所有課程的先修,畢竟這是「電腦科學所需要的數學知識」。

8樓:

關鍵在於:很多在校生沒有清晰的技術職業規劃,還沒想好自己以後從事的方向,老師自己也不是很清楚。所以學校就先無差別教學灌輸。

同是計算機系畢業生,以後從事的方向可能有很大差別。對於一些方向需要掌握的重點知識,在另乙個方向中可能一直都不會用到。學校先無差別教學灌輸,總會命中一些你以後職業方向需要重點掌握的知識。

有些學生日後剛好從事相關方向,比如開發資料密集型應用軟體,就感慨當年為啥沒好好學這門課,然後勸誡在校學弟學妹好好學好某門課;有些學生日後從事的方向無此相關性小,比如網路工程師或單板嵌入式開發等,就抨擊學校課程無用論。

不只資料庫原理,還有很多課,很多在校生在學習時,並不知道為什麼需要學習這門課,需要重點學習哪門課,哪些課了解即可。比如,有些學生經常疑問:

我為什麼要學習線性代數和數理概率?我為什麼要學習微機原理?我為什麼要學習編譯原理?

課程這麼多,哪門是重點?比如,對於AI演算法方向,線性代數和數理概率很重要。但對於大部分應用軟體開發者,即使不學這部分知識,影響也不大。

對於資料庫原理和設計,比如你以後想做網路工程師或單板嵌入式開發等,一般只需要腦中有個相關概念即可。

老師可能也不知道為什麼要學生學這些,畢竟很多老師一輩子都在校園裡。計算機專業學生的自學能力大部分是很強的,讓他深刻知道學習這門課程的原因和必要性重要性,遠比第一節課一上來就盲目灌輸強多了。這是國內計算機教育的缺陷。

計算機系的課程不應該由一輩子都在校園裡的老師教,應該由40歲左右擁有10幾年開發經驗的老程式設計師來教,老程式設計師更知道知識的適用場景。

9樓:avoidant

歷史原因而已。

看一下計算機專業要學其原理的幾個主要軟體:

作業系統

編譯器資料庫管理系統

如果說前兩位(的原理)那是真重要,最後這位爺,就是出現得早而已,在高等教育裡為自己佔了個坑,算是搭上尾班車了。

資料庫管理系統很重要,是重要的基礎軟體之一。但資料庫管理系統原理,卻是很雞肋的一門課。

為啥說它雞肋?因為:

你不學它就沒辦法用資料庫嗎?顯然不是。你學了它就能用好資料庫嗎?好像也不能。

其實現在有一大堆重要的系統軟體的原理都比資料庫管理系統的原理更值得學習,比如:

web伺服器

瀏覽器高階語言虛擬機器

為啥這麼說?因為掌握這些東西的原理,對於用好這些軟體特別有幫助。

而學好資料庫管理系統原理,對於日常的資料庫使用,提公升並沒有那麼明顯。或許是資料庫管理系統都實現得太好了的緣故——有效地向使用者遮蔽了其內部複雜性。

相比作業系統原理、編譯原理這種學跟不學對理解系統影響極大的課,資料庫管理系統原理學跟不學,就顯得沒那麼大區別了。

有掰扯關係資料理論那功夫,還不如好好翻翻某個具體資料庫管理系統的手冊。

資料庫管理系統很重要,但資料庫管理系統原理這門課,並不重要。除非你要做乙個資料庫管理系統的實現者。如果只是使用者的話,還真不用在理論上花那麼大功夫。

10樓:吳垚

資料庫原理和設計是資料庫的基礎,需要經過看山是山看山不是山看山還是山的階段看看理解。

本科學習時,小白一枚,資料庫=sql增刪改查,其他知識一塌糊塗,也不知道幹什麼用。

研究生時,抱了導師大腿,深入學習了資料庫原理和實踐,就是資料模型,關係代數,代價估算,故障恢復等理論知識以及四人小組開發資料庫的實踐,認識到資料庫的理論非常重要,不過實踐能幫助理解這些。

後來留學,和老美院士混了一年,那種紮實的工程能力,豐富的理論知識,有見解的體系架構和哲學設計理念,讓我從更巨集觀的角度了解了資料庫。

現在工作了,要實打實的開發商業資料庫,才發現乙個更廣闊的天地,才意識到學生時大腿應該再抱得緊一些日子應該混的再多一些還有多好啊,書到用時方恨少。不過,工作中,也幫我打通了這些知識。

資料庫,可以幫你成為乙個全zhan工程師。往下走,你需要大型系統軟體開發的經驗,你需要優化作業系統來提公升效能,你還可能直接和新硬體打交道,往上走,你得做得了sql優化,搞得了應用開發,說不定還得手撕客戶,說多了都是淚,誰讓你搞資料庫呢!

再回頭看資料庫原理與設計,這是九陽真經啊!

有人問,為什麼要學資料庫?答:程式設計的森林裡分出兩條小路,我選擇了人跡罕至的一條,從此決定了一生的道路:)

11樓:

於是,不負他老人家所望,我不僅忘了資料庫的原理,連計算複雜度也忘了,現如今取資料靠hive,處理資料靠pandas,計算複雜度靠直覺,怪不得我是個loser。

12樓:氵靈

資料庫學習,我推薦一下這個,這門課堪稱DBMS設計神課,我們後續也會將它的研究生階段課程15-721一併翻譯並呈現

【2023年秋季版 CMU資料庫15-445/645中文翻譯版】_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibili

一起加油學習呀~

13樓:

這個很簡單

就是讓你懂得資料結構和網路資料是如何在端和端之間工作的譬如讓你從乙個城市北邊到南邊你得了解城市的地圖, 坐幾路車能到坐什麼車最快最方便

大概就是在開發時候別做出超出資料庫原理和負擔的設定至於那些笛卡爾之類的純粹理論很明顯

是讓老師上課有東西可講

emmm

不然老師領不到工資

老師領不到錢就養不起家庭

養不起家庭就生不起孩子

生不起孩子中國就會少乙個人丁少乙個人丁

綜合國力就會削弱

國力削弱 gdp就會減少你說老師的笛卡爾是不是很重要?

14樓:非著名程式設計師

不學資料庫設計和原理,不學關係型資料庫。

同學,你想乙個大型系統,你只建乙個資料庫表麼?你感覺能裝下麼?

簡單的資料庫操作,增刪改查還用學麼?

資料庫是一門大學問。

資料結構,計算機網路,資料庫,計算機組成原理,作業系統有哪些好的網課值得推薦

進擊的steve 普林斯頓大學 Algorithms I II 剛好最近在聽這門課,這課程由淺入深把資料結構與演算法知識剖得很細,但是課程內容還是比較有難度的,作業很難 覺得太難可以無視作業 這門課Coursera上是免費的,但也不髮結課證 這是我課程筆記 普林斯頓大學演算法I II 加州大學伯克利...

為什麼數學專業要學計算機?

Yanx 應該不怎麼涉及硬體 只有軟體層面吧 程式設計是一種思想,一種嚴謹的富有邏輯性的思想和數學是相輔相成的 而且很多問題都要用到計算機輔助啊 求乙個微分方程到數值解 迭代五六次還能手算 五六十次的呢 對於本科階段 用計算機去印證所學所想,對學習更有幫助 更何況作為理工科的學生 C語言很難嗎 私以...

為什麼大學計算機專業要學高數?

心臟跳動 數學對計算機意義重大 計算機計算功能本質原理是數學,沒有數學知識就沒有計算機。作為計算機普通使用者來講,一直享受軟體應用帶來的方便,但一般沒有去思考如何實現。計算機所形成的生態系統中數學起到了相當大的作用,比如應用中使用到的非對稱加密,理論基礎是數論的知識,計算機網路中拓撲學有很大幫助,生...