資料庫一對多設計
⑴ 資料庫一對多怎麼建立主外鍵的區別是什麼
一對多,其實並不一定要做約束,我更傾向於業務上的一對多。x0dx0a一對多的基本概念是。子表依賴於主表的主鍵。每條主表的記錄,會對應子表上一到多條記錄。x0dx0ax0dx0a主鍵是基於本表欄位的約束,是唯一約束。x0dx0a外鍵是子表基於主表主鍵的約束,不是唯一約束,但要求必須主表有相應的記錄,子表才可以插入數據。
⑵ 請問資料庫在創建表的時候如何設計表關系,一對一,一對多,多對多 請高手舉例說明。謝謝!!!
多對多關系至少需要3個表,我們把一個表叫做主表,一個叫做關系表,另外一個叫做字典表或者副表(字典表是紀錄比較少,而且基本穩定的,例如:版塊名稱;副表是內容比較多,內容變化的,例如)。
按照資料庫的增刪查改操作,多對多關系的查找都可以用inner join或者
select * from 主表 where id in (select 主表id from 關系表)
1,角色任命型
特點:關系表兩外鍵組合無重復紀錄,關系表一般不需要時間欄位和主鍵,有一個表是字典類型的表。
界面特點:顯示主表,用checkbox或多選select設置多選關系。
例如:任命版主(用戶表-關系表-版塊名稱表),角色許可權控制等,用戶是5個版塊版主,只要關系表5行紀錄就可以確立,關系表的兩個外鍵具有聯合主鍵性質。
增加關系:如果沒有組合紀錄,insert之。
刪除關系:如果有組合紀錄,刪除之。
2,集合分組型
特點:同角色任命型類似,關系表兩外鍵組合無重復紀錄,關系表一般不需要時間欄位和主鍵。區別是主副表都不是字典表,可能都很大不固定。
界面特點:顯示主表,用搜索代替簡單的checkbox或多選select,或者一條一條的添加。
例如:歌曲專集(專集表-關系表-歌曲表)。手機分組(分組表-關系表-手機表)。用戶圈子(圈子表-關系表-用戶表)。文章標簽(文章表-關系表-標簽表)
增加關系:同版主任命型。
刪除關系:同版主任命型。
3,明細帳型
特點:關系表可以有重復紀錄,關系表一般有時間欄位,有主鍵,可能還有文字型的欄位用來說明每次發生關系的原因(消費)。
界面特點:顯示關系表,用radio或下拉設置單選關系。
例如:現金消費明細帳或訂單(用戶表-訂單表-消費原因表),用戶可能多次在同一事情上重復消費。積分變化紀錄也屬於這類。
增加關系:不管有沒有組合紀錄,insert之,紀錄時間。
刪除關系:根據關系表PK刪除。
4,評論回復型
特點:同明細帳型關系表一般有時間欄位,有主鍵,區別是重點在文字型的欄位用來說明每次發生關系的內容(評論回復)。
界面特點:回復文本框。
例如:論壇回復(用戶表-回復表-帖子表),用戶可能多次在不同帖子上評論回復費。
增加關系:不管有沒有組合紀錄,insert之,紀錄時間和文字。
刪除關系:根據關系表(回復表)PK刪除。
5,站內簡訊型
特點:主副表是同一個,關系表一般有時間欄位,有主鍵,重點在關系表文字型的欄位用來說明每次發生關系的內容(消息)或者其他標記位來表示文字已讀狀態時間等。
界面特點:回復文本框。
例如:站內簡訊(用戶表-簡訊表-用戶表),用戶可能給用戶群發或者單發,有標記位來表示文字已讀狀態時間等。
增加關系:不管有沒有組合紀錄,insert之,紀錄時間和文字。
刪除關系:根據關系表(回復表)PK刪除。
6,用戶好友型
特點:主副表是同一個,同集合分組型,關系表兩外鍵組合無重復紀錄,關系表一般不需要時間欄位和主鍵。
界面特點:同集合分組型,顯示主表,用搜索代替簡單的checkbox或多選select,或者一條一條的添加。
例如:下載站點的文件,(文件表-關系表-文件表)可以被軟體工具打開,軟體工具本身也是一種文件,可以被下載。用戶的好友,也是用戶(用戶表-好友關系表-用戶表)
增加關系:同版主任命型。
刪除關系:同版主任命型
⑶ 怎樣在資料庫中實現一對多的關系
怎樣在資料庫中實現一對多的關系
良好的資料庫設計都是要符合第三範式或者更加嚴格一些,所以多對多是一種比較不好的設計方案,會對系統的開發和維護造成很大困難,特別是代碼上,要重復的比較各個鍵值,因此都是採用引入關系表的方法,將兩個表的主鍵提取作為關系表的欄位,然後關系表中設置游動主鍵,這樣就將多對多的關系解耦成1對多的關系
⑷ 在資料庫設計器中,建立兩個表之間的「一對多關系」應滿足的條件是什麼
在資料庫的兩個表間建立永久聯系時,要求兩個表的索引中至少有一個是主索引。必須先選擇父表的主索引,而子表中的索引類型決定了要建立的永久聯系的類型。如果子表中的索引類型是主索引或候選索引,則建立起來的就是一對一關系。如果子表中的索引類型是普通索引,則建立起來的就是一對多關系。
⑸ 資料庫中的一對多怎麼設計表
//老公
class Husband implements java.io.Serializable{
private Integer id;
private String name;
private Set<Wife> wifes;//一個老公能擁有多個老婆
}
//老婆
class Wife implements java.io.Serializable{
private Integer id;
private String name;
}
/**
* create table Husband{
* id int primary key,
* name varchar
* }
* create table Wife{
* id int primary key,
* name varchar ,
* h_id int 外鍵
* }
*
* */
⑹ 資料庫中怎麼設計一對多的問題
主外鍵關聯法
比如:
貨物類別表A和貨物類B的關系是:一個類別下有多個貨物
A表結構:
類別ID(A表主鍵)
類別名稱
B表結構:
貨物ID(B表主鍵)
貨物類別ID(外鍵,references
A(類別ID))
貨物名稱
⑺ 簡述VISUAL FOXPRO資料庫中創建表間一對多(1:N關聯步驟
1。
將兩個表加到同一個資料庫中。
2。
「一方」的表按關鍵字建立主索引或候選索引,「多方」的表按此欄位建立普通索引。
3。
打開資料庫設計器,按住滑鼠左鍵,從主表的此索引欄位拖動到被關聯表的此索引欄位,此時會出現一條黑線,至此,一對多關系創建完畢。
⑻ 資料庫問題求解:設計資料庫時出現一對多的情況該如何解決還有出現多對多呢
出現一對多的情況是資料庫表的基本關系,按一對多關系處理。如果出現多對多的情況,那需要再建一張聯接表,兩張表與聯連表形成一對多的關系,這才符合資料庫設計的要求。
⑼ 資料庫設計:主鍵和外鍵設計問題,如何設計一對一和一對多關系
如果A表有ID欄位為PK,B表有ID欄位也為PK,設定一對一就是A的ID和B的ID對應?
是的,可以這么理解.
設定A和B一對多的關系,就是A的PK映射到B里,但是名字和B的ID沖突,如何處理?
一般處理方式,是在 B 表裡面, 加一個列名為 AID, 設置為外鍵引用。
⑽ 關於資料庫一對多,多對一,多對多的問題
您好:
你可以把你自己當成各個角色:
1.顧客。對於圖書來說,當然是1對多嘍~一個人可以買好多書~
2.顧客。對於訂單來說,當然是1對1嘍~一個人買了好多東西,每次產生的訂單,只能自己用,而且訂單是唯一的~~
3管理員和圖書的關系管理員可以管理很多圖書,一本圖書可以被很多管理管理啦~,
4管理員和訂單的關系,管理員可以處理好多的訂單~