文 | 太陽雪
python
來源:Python 技術「ID: pythonall」數據庫
程序是什麼?app
簡單說,程序是處理數據的計算機代碼ide
幾乎全部的程序均可以分爲三部分工具
輸入--> 處理 --> 輸出學習
程序能夠理解成一個加工處理數據的過程,或者工具spa
那麼被加工的數據又是什麼呢?設計
數據有多種形式,如文本、圖像、音頻、視頻等等3d
不管數據形式如何,都表明的是某種信息code
大部分信息,能夠通過數字化處理,變爲計算機裏的數據
那麼信息又是什麼呢?
信息就是對某個事物、事情、現象的一種描述
既然是描述,就意味着,其中包含了一些概念
概念是咱們思考、認識、交流的重要的元素
若是理解了信息是由一些概念組成的,那麼就能理解:
程序處理的其實是 概念
再進一步,就能理解:
計算機是人類大腦的延伸
咱們思考、認識、交流都是基於某些概念的,並且教育的主要就是關於抽象概念的
概念表示某種具體或者抽象的事物
任何一個事物,都具備某種特性或者屬性
好比一我的,具備性別、年齡、膚色、國籍等一系列屬性
再好比一個課程,具備名稱、級別、課時、授課老師等一系列屬性
再好比一張圖片,具備大小、尺寸、名稱、存放位置等一系列屬性
看到了嗎,對這些概念的進一步分析,獲取到其中的各類屬性,就能獲得這個概念在程序裏的表示形式
一個概念在程序裏的表現形式就是實體
實體,就就是創建現實世界和計算機世界之間的聯繫的
現實世界裏,各個東西都是概念,計算機世界裏各類東西都是實體
概念和實體之間是能夠相互表示的
前面咱們知道了,程序處理的就是概念,那麼將概念表示爲實體,就能夠編寫爲程序了
概念之間是有聯繫的,一樣,實體之間也是有聯繫的
相對概念之間的聯繫,實體之間的聯繫更爲簡單
只有一對一
,一對多
,和多對多
的聯繫
是否是感受有點熟悉了,這不就是數據庫表之間的聯繫嗎?
沒錯,數據庫表其實是用來存放概念的,好比存放人員信息,課程信息,圖片信息
即它實際上存放的就是實體
平常大多數程序,並不須要和數據庫打交道
但並不意味着不和實體大交道
數據庫只是存放實體的一種形式,而且實現了實體之間的一對一
和一對多
的關係
一對一,意味着,兩個實體之間是一一對應的,好比每一個人只有一個身份證(正常狀況下),
一對多,意味着,兩種實體之間具備包含的關係,好比一個家庭,由多個我的組成,或者一個學生能夠同時選擇多們課程
這種關聯關係,在程序中會被處理成順序處理,和循環處理
程序設計,須要像建築圖紙同樣表示出來
對於實體,應該如何表示呢
經過參考各類資料,特別是學習了 《系統分析與設計方法》,並結合工做實踐,我總結了一套表示實體的方法
在不一樣的設計階段,須要用到不一樣的表示方式
通常分爲 概要實體
和 詳細實體
區別在於,概要實體不用關注實體的熟悉,而詳細實體,須要關注實體的屬性
今天咱們只討論概要實體
概要實體用一個方框表示:
實體方框裏面寫實體的名稱
實體之間的關係,用連接它們的線條表示
實體關係線條兩端,須要特別注意,靠近外面的表示一或者多
一
是一個小短線,多
是三分叉
靠近裏面的小圈,表示 0
便可以不存在,小短線表示 1
即表示必須存在
例如第一條線左端,讀做:有且有一個,右端讀做:有且有一個或者多個
第二條線左端,讀做:沒有或僅有一個,右端讀做:沒有或者能夠有多個
第三第四咋讀,你能夠試試吧,歡迎留言討論
下面咱們看一個實際的例子
實體關係這幅圖,描繪了一個學校系統的基本結構,經過圖示,咱們就能輕鬆的讀取它所傳遞的信息
好比學校必須有一個或者多個班級,班級必須屬於一個學校,
一個班級裏能夠沒有學生或者有多個學生
一個學生能夠不選或者選擇多個課程
一個課程可能沒有學生選擇或者有多個學生選擇
……
若是進一步展開,這些關係裏實際上包含着業務規則,好比一個班級沒有任何學生的狀態多是在開學前,還沒學生報名的時間點
以及 不能存在一個沒有班級的學校 等等
而不一樣的業務場景下,規則是不同的,全部實體圖,體現當前的業務場景,並不存在適應全部場景的實體圖
這就是實體關係圖,經過它不只能夠方便地記業務信息,並且還能夠方便地交流
今天咱們梳理了程序設計中的實體部分,從程序處理的是什麼開始,一直引導到程序處理的是概念這個觀點,概念不只是咱們認識世界的工具,也是咱們作程序設計的基礎,抓住了實體,就像抓住了程序的綱。
比心!
下次,會討論一下程序設計的另外一個神器:數據流