我有3個表A(A1,A2,A3),B和C.(A1-A3是表A的屬性)。 A1是一個多路複用器。如果A1爲1,A2將索引表B,如果A1爲0,則A3將索引表C.如何在UML中描述表格拓撲?
我們可以用UML描述這種拓撲嗎?如果沒有,我可以用什麼其他工具來描述拓撲?
謝謝!
我有3個表A(A1,A2,A3),B和C.(A1-A3是表A的屬性)。 A1是一個多路複用器。如果A1爲1,A2將索引表B,如果A1爲0,則A3將索引表C.如何在UML中描述表格拓撲?
我們可以用UML描述這種拓撲嗎?如果沒有,我可以用什麼其他工具來描述拓撲?
謝謝!
爲此,您可以使用事件驅動的流程鏈(en.wikipedia.org/wiki/Event-driven_process_chain)。此圖是爲建模過程製作的。否則,你可以看看狀態圖(en.wikipedia.org/wiki/State_diagram_(UML)),但我不認爲,這是你需要的。事件驅動的流程鏈應完全適合您的需求。
這不是數據庫。這就像一個編程序列。當我們獲得表A的條目時,我們查看該條目的字段A1/A2/A3。如果A1是1,我們將使用A2作爲索引來查找表B中的相應條目。如果A1是0,我們將使用A3作爲索引來查找表C中的條目。我們有很多表。所以我想找一個好的方式來描述它。 – user3084213
我編輯了答案。 – rulebot
謝謝!有沒有一種工具可以生成事件驅動的流程鏈?生成的文件可以用於進一步處理嗎? (例如,使用腳本處理生成的文件) – user3084213
您有一個泛化專業化關係,在一個類圖中,它被稱爲實體關係模型中的「IS-A」關係。
..............................................
............................+------------+....
........................+---+ B |....
........................|...+------------+....
..................../|..|.....................
..+------------+.../.|..|...+------------+....
..| A +--<..+--+---+ C |....
..+------------+...\.|..|...+------------+....
....................\|..|.....................
........................|...+------------+....
........................+---+ D |....
............................+------------+....
..............................................
請注意,我並沒有把圖中的領域,因爲「如果A1是1種使用B表...」不能直接在U.M.L.描述圖。我會在後面的圖表中圍繞一下。
這可以用圖表來模擬。這些表格可以在數據庫中創建。但是,對輔助表的訪問通常由程序來實現(編碼)。我認爲,有些數據庫支持它,而無需編程。
之前,呈現出小碼,同場相同的圖中,可以是:
..................................................
..........................{0,1}.+------------+....
........................+-------+ B |....
........................|.......+------------+....
........................|.......| [+] A2 |....
........................|.......+------------+....
........................|.......| ... |....
........................|.......+------------+....
........................|.........................
........................|.........................
................1.../|..|.........................
..+------------+.../.|..|.{0,1}.+------------+....
..| A +--<..+--+-------+ C |....
..+------------+...\.|..|.......+------------+....
..| [+] A1 |....\|..|.......| [+] A3 |....
..| [+] A2 |........|.......+------------+....
..| [+] A3 |........|.......| ... |....
..| [+] A4 |........|.......+------------+....
..+------------+........|.........................
..| ... |........|.........................
..+-------+----+........|.........................
..........|.............|.{0,1}.+------------+....
..........|.............+-------+ D |....
..+-------+------\-+............+------------+....
..| [When A1=1 \|............| [+] A4 |....
..| A2 references \............+------------+....
..| table B] |............| ... |....
..+----------------+............+------------+....
..................................................
注意,一個U.M.L. 「評論」或U.M.L. 「約束」可以間接指示, 你試圖實現。
因爲,這個論壇的更多相關的節目,不僅僅是圖,相關的C風格的程序就應該像這樣
struct A
{
int A1;
int A2;
int A3;
int A4;
char FirstName[150];
char LastName[150];
// other fields
};
struct B
{
int A2;
// other fields
};
struct C
{
int A3;
// other fields
};
struct D
{
int A4;
// other fields
};
int main(...)
{
int ErrorCode = 0;
A* RecordA = NULL;
B* RecordB = NULL;
C* RecordC = NULL;
D* RecordD = NULL;
RecordA = ReadAFromTable();
switch (RecordA->A1)
{
case 1:
RecordB = ReadBFromTable(RecordA->A2);
break;
case 2:
RecordC = ReadCFromTable(RecordA->A3);
break;
case 3:
RecordD = ReadDFromTable(RecordA->A3);
break;
}
// do other stuff
return ErrorCode;
}
注意,有這樣幾個變化,包括建模&編程,例如對於所有記錄具有相同的關鍵字段(A1),而不是具有相同類型的不同標識符。
乾杯。
謝謝!是否有工具來生成第二個圖形? – user3084213
@ user3084213「http://www.asciiflow.com/#Draw」有時我會用手編輯altought。您可能需要將我的回覆標記爲確定,然後點擊箭頭;-) – umlcat
這個問題似乎是脫離主題,因爲它屬於[programmers.se] –