當前位置:首頁 » 操作系統 » 資料庫子類

資料庫子類

發布時間: 2022-04-29 08:55:58

資料庫設計中 子類需要單獨建一張表嗎

不需要單獨建表。比如人類表Human,Man和Woman繼承Human,只需要在humans表加一個type欄位,如果是Man.new,type就存儲Man,Woman.new,type就存儲Human

⑵ 資料庫ISA聯系的定義

用E-R方法構建一個項目的模型時,經常會遇到某些實體型是某個實體型的子類型。例如,研究生和本科生是學生的子類型,學生是父類型。這種父類-子類聯系稱為ISA聯系,表示「is a」的語義。例如,下圖中研究生is a學生,本科生is a學生。ISA聯系用三角形來表示。

ISA聯系一個重要的性質是子類繼承了父類的所有屬性,當然子類也可以有自己的屬性。例如,本科生和研究生是學生實體的子類型,他們具有學生實體的全部屬性,研究生子實體型還有「導師姓名」和「研究方向」兩個自己的屬性。

ISA聯系描述了對一個實體型中實體的一種分類方法,下面對分類方法做進一步說明。

(2)資料庫子類擴展閱讀

①分類屬性

根據分類屬性的值把父實體型中的實體分派到子實體型中。例如上圖中,在ISA聯系符號三角形的右邊加了一個分類屬性「學生類別」,它說明一個學生是研究生還是本科生由「學生類別」這個分類屬性的值決定。

②不相交約束與可重疊約束

不相交約束描述父類中的一個實體不能同時屬於多個子類中的實體集,即一個父類中的實體最多屬於一個子類實體集,用ISA聯系三角形符號內加一個叉號「X」來表示。

例如,下圖表明一個學生不能既是本科生又是研究生。如果父類中的一個實體能同時屬於多個子類中的實體集,則稱為可重疊約束,子類符號中沒有叉號表示是可重疊的。

③完備性約束

完備性約束描述父類中的一個實體是否必須是某一個子類中的實體,如果是,則叫做完全特化(total specialization),否則叫做部分特化(partial specialization)。

完全特化用父類到子類的雙線連接來表示,單線連接則表示部分特化。假設學生只有兩類,要麼是本科生,要麼是研究生,二者必居其一,這就是完全特化的例子,如圖所示。

⑶ 資料庫ER圖怎樣畫超類型和子類型的聯系

⑷ 資料庫設計技巧

就我個人的經驗來說,資料庫雖然在設計上確實需要有一定的經驗,但是它並不是最難的。
對於數據的設計其實是對於現實中業務的一種抽象。
就我的習慣的話,我會先對於現實中的業務場景、業務的角色進行分析。
就拿一般的進銷存系統來舉例吧。
我有一個對於物料管理的倉庫,我需要對我的物料的進銷存進行管理。
那麼我們就需要分析,沒有系統的時候,人與人之間的業務是怎麼流轉的,他們都是通過哪些表單來進行流轉的,上下級之間的消息傳遞和反饋都是怎麼進行的。
當知道了業務以後,我們的資料庫無非就是對於現實中的業務的一種具現。
對於業務的設計完成以後,就是針對角色的了。
例如:業務的傳遞都是在業務人員之間的,我們已經整理表單的傳遞,那角色其實就已經在這些傳遞中存在了。
但是,業務的角色是業務的角色,我們還要包括財務的角色,那對於財務來說,他需要在哪些環節看到這些業務的單據?並且需要怎麼處理?財務的處理結果又包括哪些?不同的處理結果對於下一步的操作又有什麼影響。
當我們把這一切的邏輯整理完成後,我們對於資料庫的功能上就已經滿足了。
接下來的就是抽象數據的分類了。
例如:我們需要對不同的表進行一個分類,我個人喜歡把表分成三種,一種是基礎數據表,一種是過程表,一種是結果表。
怎麼解釋呢?
基礎數據表:顧名思義,就是對於基礎數據的維護,哪些可以成為基礎數據呢?就是我們的業務發生的各個過程中,這些數據都是可以參與其中的,這就是基礎數據。
例如:貨物的信息,客戶的信息。
過程表:就是僅僅在一個過程中使用的表,當這個過程結束了,這個表就沒用了。
例如:訂單表,付款單表。他們表示的僅僅是訂單從下單到最後關閉的這個過程,關閉以後,這個訂單表其實我們就不會再去使用它了。
結果表:這個表的數據有一個特點,只允許添加,不允許刪除和修改,這個表的數據本身就是對於一種最終結果的表現。
例如:日誌表、賬單表。
那我們在進行資料庫設計的時候,就需要將這些使用情況考慮進去,將不同功能的表進行分離,盡量降低耦合,讓相互表的修改不會影響使用。
例如:收款單,我們需要收一筆款的時候,就會生成這個收款單,當款收到後,這個收款單的功能就結束了。
但現實的情況中,可能財務收到了這筆錢,結束了收款單流程後,他發現填錯了,本來應該收100,結果收款單寫的110。
但是,收款單表示的是過程,當這個過程結束了,我們就不會再需要上一個收款單了,所以,按照我們業務的處理流程,我們應該先生成一筆沖抵的收款單,例如收到-110,然後再生成新的100的收款單。
我們每個月還會有財務統計報表,財務報表因為和現實中的財務賬有關,是絕對不允許變動的,因此,這個財務報表就是一個結果表,我們會按月通過批處理程序,將收款單的明細和統計數據放到另一張表中,感覺好像比較冗餘,但是這個確實非常必要的。
因為我曾經就遇到過一個情況,我們直接用過程表來進行數據的統計,然後11月30日有一筆收款已經完成了,結果發現收錯了,就重新做了個收款單,結果本來已經出了11月結果的賬單發生了變化,導致財務實際的處理出現了問題。
因此,數據的冗餘有時候是有必要的,我們需要根據不同表的類型進行一些冗餘的設計。
對於資料庫設計的考慮點還有很多,可能一時半會兒也說不完,大家如果有什麼好的思路,也可以在下方評論或關注我給我留言。

⑸ 樹形資料庫怎麼獲取子類

sql">withAas(selectid,CAST(名字asvarchar(200))名字,父親名字from表名where父親名字=0
unionall
selectB.id,cast(A.名字+''+B.名字asvarchar(200)),B.父親名字
fromAjoin表名BonA.id=B.父親名字)
select*
fromA
orderby2

將上述語句中的兩個「表名」改為你自己的表名即可

⑹ 如何從資料庫中查詢出子類

例如:父類ID為FATHER_ID、子類ID為SUB_ID。語句如下
SELECT SUB_ID FROM TABLE_NAME WHERE FATHER_ID='';
例如:兩張表,父類表為F_TAB、子類表為S_TAB。那麼子類表中必定有父類ID的欄位,關聯查詢就好。語句如下
SELECT F.FATHER_NAME,S.SUB_NAME FROM S_TAB S,F_TAB F WHERE S.FATHER_ID=F.FATHER_ID

⑺ 如何重構資料庫設計滿足超類/子類層次結構需求

既然超類子類都設計完了,數據結構和屬性Bean之類的應該都有了把。
可以使用Hibernate反射數據表。重建資料庫。

⑻ 在面向對象的資料庫中,一個父類包含其所有子類的屬性和方法。這句話正確嗎

顯然不對,子類可以繼承父類的屬性和方法,但子類功能也進行了擴展,這可能是父類所沒有的

⑼ 子類怎樣繼承父類資料庫連接和關閉


SQLConnection1.Params.clear
然後再添上你自己修改的值
SQLConnection1.Params.Values['ServerName'] := '192.168.0.112';
SQLConnection1.Params.Values['Database'] := 'trackData';
SQLConnection1.Params.Values['User_Name'] := 'sa';
SQLConnection1.Params.Values['Password'] := '123456';
SQLConnection1.Open;

⑽ 資料庫設計中,實體可以有子類,那麼聯系可以有子類嗎謝謝~

子過程是用來處理或解決特定功能的一個小模塊
在程序中,我們經常需要多次用到某一特定功能,所以,為了方便,可以將這個功能寫到某個過程中,在需要的時候,再調用,這樣既簡化了代碼,也提高了程序的可讀性及可調試性.
調用子過程,有兩種方法:
一種是用Call來調用
語法:
Call 過程名(實參列表)

另一種是直接調用
語法 :
過程名 實參列表

熱點內容
為什麼堆配置打不過蘋果 發布:2024-10-05 01:22:11 瀏覽:623
垃圾緩存的英文 發布:2024-10-05 01:13:34 瀏覽:947
md5加密c實現 發布:2024-10-05 01:13:31 瀏覽:299
updatesql兩個表 發布:2024-10-05 01:13:30 瀏覽:4
趙南起韓國訪問 發布:2024-10-05 01:04:00 瀏覽:985
基於pid演算法 發布:2024-10-05 00:41:22 瀏覽:925
有什麼手機配置低的還好玩 發布:2024-10-05 00:40:23 瀏覽:669
redis資料庫查詢 發布:2024-10-05 00:27:43 瀏覽:946
如何消除安卓的彈窗 發布:2024-10-05 00:26:59 瀏覽:427
wget下載文件夾 發布:2024-10-05 00:26:22 瀏覽:44