在概念模型中主要有以下幾個操作和設定的物件:實體(entity)、實體屬性(attribute)、實體標識(identifiers)、關係(relationship)、繼承(inheritance)、關聯(association)、關聯連線(association link)。
實體
實體就是我們抽象出的物件,比如:乙個選課系統中,學生、教師、班級、課程等等都是實體。實體屬性就是乙個實體中所包含的簡單屬性,比如學生實體,具有學號、姓名、生日、性別等屬性。另外實體還有個標識用於唯一的標識出每個實體例項,比如學生實體中就可用將學生的學號作為該實體的標識。標識可用是乙個實體屬性也可以是多個屬性的結合。在pd中新建乙個新的概念模型,系統將出現乙個工具欄如下,用於在設計面板中設計模型。
單擊entity圖示,然後在設計主面板中單擊一次便可新增乙個實體。再單擊滑鼠圖示,即可切換回一般滑鼠的模式。雙擊已經新增的實體,彈出實體屬性設定對話方塊,在general中可以設定實體的name和code等屬性,如圖所示:
切換到attributes選項卡可以設定實體的屬性name、code、datatype等,右邊還有3個核取方塊,m表示不能為空,p表示是標識屬性,d表示在模型圖中是否顯示,如果在設定屬性時直接選中studentid的p核取方塊,系統將會自動生成該student實體的乙個identifier。
如果不希望系統自動生成而是手動設定的話,那麼切換到identifiers選項卡,新增一行identifier,然後單擊左上角的「屬性」按鈕,然後彈出的標識屬性設定對話方塊中單擊「新增行」按鈕,選擇該標識中使用的屬性。例如將學號設定為學生實體的標識,具體操作如圖所示:
整個設定好的實體如圖所示:
關係
關係用於表示乙個實體與另外乙個實體之間的對應關係,分為一對一(1:1),一對多(1:n),多對一(n:1),多對多(m:n)4種對應關係,一對多和多對一其實就是方向相反,所以實際上就是一對
一、一對多和多對多。
最最常用的就是一對多,比如班級實體和學生實體就是一對多關係,乙個班級有多個學生,乙個學生只會屬於乙個班級。在設計面板中新增乙個class實體,然後單擊工具欄的relationship按鈕,然後在class實體上單擊一下,再到student上單擊一下,就可以在class和student之間建立一對多關係,如圖:
系統缺省會給該關係乙個命名relationship_1,切換到滑鼠指標模式,雙擊relationship_1,即可開啟關係的屬性視窗,可以在general選項卡中修改該關係的name、code等,如圖:
切換到cardinalities選項卡,上面可以修改是一對多還是多對多之類的關係,下面的role name沒有多大的意義,就是在模型中顯示文字,多的一方有0,n和1,n兩種,也就是說乙個班級可以對應多個學生,那麼乙個班級中最少是沒有學生還是要至少存在乙個學生,同樣的一的一方有0,1和1,1兩種,就是說乙個學生是可以不屬於任何班級呢還是必須屬於某乙個存在的班級,這裡我們都選至少是1,所以最終的設定介面如圖:
繼承
在概念模型中的繼承與在oo模型中的繼承是一回事,就是要抽象出乙個實體,其他實體繼承該實體後就擁有該實體的屬性。
同樣以選課系統為例,現在有學生實體,有教師實體,其他他們都是人,具有人的屬性,所以我們可以抽象出乙個人的實體,人具有性別、生日、名字等屬性,教師具有職稱、工號等屬性這是學生沒有的,所以不能放在人實體中,學生具有學號屬性是教師沒有的。
這裡只是概念模型,在dbms中是沒有繼承這種說法的,所以在接下來的邏輯模型和物理模型中,系統就會將繼承轉換為實際的實體和表。這裡只是概念模型,所以才有繼承的說法。
關聯(association)我也不知道這個翻譯成中文用哪個詞比較好,就暫且用「關聯」吧。
association也是一種實體間的連線,在merise模型方法學理論中,association是一種用於連線分別代表明確定義的物件的不同實體,這種連線僅僅通過另乙個實體不能很明確地表達,而通過「事件(event)」連線來表示。
也就是說,實體和實體之間存在著關係(多對多),但是這種關係還存在其他的屬性,這些屬性如果如果作為乙個明確的實體的實體來表示又不是很合適,所以就使用了association來表達,這種關係之間一般是乙個「事件」虛實體,也就是說是乙個動詞對應的實體。
前面說的可能還是太抽象,以實際的例子來說明:現在有了學生實體,有課程實體,乙個學生可以選擇多門課程,一門課程有多個學生來上課,所以之間就存在乙個「選課」的association,其中記錄了學生選課的時間、選課的狀態:
乙個學生會對應多個選課結果選擇多門課程,乙個課程對應多個選課學生選課,所以學生實體和課程實體與選課的關係都是一對多,新增關聯連線,一門課程可能太枯燥了,沒有學生來選,所以課程對應選課可能是0,n,乙個學生可能學分夠了這學期一門課都不選,所以學生對應選課也可能是0,n的關係,所以我們最終形成的概念模型如圖所示:
這就是乙個完整的概念模型。接下來就是要根據概念模型生成邏輯模型或者物理模型。
在PowerDesigner中設計概念模型
在概念模型中主要有以下幾個操作和設定的物件 實體 entity 實體屬性 attribute 實體標識 identifiers 關係 relationship 繼承 inheritance 關聯 association 關聯連線 association link 實體 實體就是我們抽象出的物件,比如...
在PowerDesigner中設計概念模型
在概念模型中主要有以下幾個操作和設定的物件 實體 entity 實體屬性 attribute 實體標識 identifiers 關係 relationship 繼承 inheritance 關聯 association 關聯連線 association link 實體 實體就是我們抽象出的物件,比如...
PowerDesigner中的問題
1.id使用inerger然後設為主鍵後,生成sql不能夠自動編號。解決 生成sql自增id列的方法是,把cmd圖的id列的字段型別選擇為serial,但是他生成的是number的自增列,沒有辦法生成int的自增列,如果有人知道,請告訴我,不勝感謝。2.按照書上的生成的字元型的字段是varchar,...