一、數(shù)據(jù)庫的三大范式
第一范式(1NF):數(shù)據(jù)表中的每一列(每個字段)必須是不可拆分的最小單元,也就是確保每一列的原子性;
如:一張表里的地址、電話。
第二范式(2NF):滿足1NF后,要求表中的所有列,都必須依賴于主鍵,而不能有任何一列與主鍵沒有關系,也就是說一個表只描述一件事情;
如:訂單表只描述訂單相關的信息,所以所有字段都必須與訂單id相關;產(chǎn)品表只描述產(chǎn)品相關的信息,所以所有字段都必須與產(chǎn)品id相關;因此不能在一張表中同時出現(xiàn)訂單信息與產(chǎn)品信息;
第三范式(3NF):必須先滿足第二范式(2NF),要求:表中的每一列只與主鍵直接相關而不是間接相關,(表中的每一列只能依賴于主鍵);
例如:訂單表中需要有客戶相關信息,在分離出客戶表之后,訂單表中只需要有一個用戶id即可,而不能有其他的客戶信息。因為其他的客戶信息直接關聯(lián)于用戶id,而不是直接與訂單id直接相關。
二、mybatis的聯(lián)合查詢結果集處理
在實體類中的外鍵放入另一個實體類對象,在xml中的結果集中配置resultMap并指向resultMap標簽中的id,
配置中配置id主屬性,其他屬性如果實體類的名稱和字段的名稱相同可以省略,配置association 配置屬性對應實體類中的名字,列對應數(shù)據(jù)庫字段,select對應配置的另一個查詢映射的namespace加id。