A表 和 B表
A表中一條記錄 對應 B表中一條記錄
B表中一條記錄 對應 A表中一條記錄
A表中一條記錄 對應 B表中另一條記錄
B表中一條記錄 對應 A表中只有唯一條記錄
A表中一條記錄 與 B表中對應關係 有2條
B表中一條記錄 與 A表中對應關係 只有1條
A表與B表是1對2關係
B表與A表是1對1或者是2對一關係
對於A表的中那一條記錄 它有兩個對應關係 不確定是對應對象數目
對於B表中 以A表的那條記錄為主題對象 有兩條記錄和它對應
在A表與B表中 關於A表中的某一實體 有N條對應關係 在N條對應關係中 A只有一個實體 B有N個實體
所以在A表和B表中,關於A表中的某實體的所有對應關係中,A為一個實體,B為不確定的多個實體,所以關係為一對多
反過來是多對一
再看B表中的某一實體資訊
在A表與B表中,關於B表中的某一實體,只有一條對應關係,關係對應A表中只有一個實體,對應B表中也只有一個實體
所以可以說是一對一
但是沒有完
A表與B表中任一實體
A表中的某一實體或者B表中的某一實體
如果在兩表之間有一個對應關係,那麼關係對應的所有實體如果沒有更多的對應關係則為一對一,如果有更多的對應關係
如果所有的對應關係對應某一表只有一個實體對應另一個表有多個實體,則為一對多或者多對一關聯性
如果所有對應關係對應兩個表都有多個實體,則為多對多關係
那麼表之間的關係在資料庫中如何表示
約束>主外鍵約束>主表和從表
兩張表,一張是主表,另一表是從表。主表受到兩表之間的約束限制,但是主表中沒有從表的相關的記錄;
從表也受到兩表之間的約束,並且從表中有一個外鍵欄位,對應主表的主鍵欄位。約束表現為,主表中的實體
如果有從表與之關聯,則主表不能刪除,主鍵不能修改;在從表中表現為,在增加一條新的實體時,外鍵欄位如果不為空白
則必段對應為主表中的主鍵欄位,修改時如不為空白,則也必段是主表中的主鍵欄位,刪除可以。
查詢時,在主表中查詢不到對應從表的資訊,在映射成對象實體時,查詢到的是儲存有從表中與之對應的所有實體的集合
在從表中每一個記錄均可查詢到與之對應主表主鍵資訊,在映射成對象時,查詢到的是對應的主表實體的一個對象。
可以這樣理解,無論是查主表實體對從表實體資訊,還是查從表實體對應的主表資訊,都只能在從表中查詢。
如果查詢對應的主表記錄,則查詢這條記錄對應的外鍵欄位資訊,再根據外鍵查詢對應的主表記錄
如果查詢對應的從表記錄,則查詢這條記錄的主鍵資訊在從表中對應的所有外鍵的記錄。
一個是根據記錄查詢到外鍵資訊,一個是根據外鍵資訊查詢到實體記錄
在映射成關聯時,對關聯實體的查詢有LAZY和非LAZY之分,非lazy則是查詢某一實體的時候,所關聯的對象也查詢出來
而lazy則在暫不查詢。這個是很容易出錯的地方,沒有確認驗證,大概主表的一方,也就是一的一方,關聯的引用為空白,因為
主表中並沒有從表的資訊,得到資訊必段執行查詢;而在從表的一方,也就是多的一方,關聯的對象ID有值,其它屬則為空白
因為從表的外鍵就是主表主鍵的值,不需要查詢主表就可以得到。