當前位置:首頁 » 編程語言 » sql建表多對一
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql建表多對一

發布時間: 2023-02-19 00:40:07

⑴ SQL一對多建表問題

學生課程應該是多對多關系,一般轉換成兩個一對多來處理,結構如下:
student
sid name
1 張三
2 李四
3 王五
course
cid cname
1 語文
2 數學
3 英語
score
sid cid score
1 1 90
1 2 99
2 1 99
2 3 55
。。。。。

⑵ 請問資料庫在創建表的時候如何設計表關系,一對一,一對多,多對多 請高手舉例說明。謝謝!!!

多對多關系至少需要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,或者一條一條的添加。
例如:下載站點的文件,(文件表-關系表-文件表)可以被軟體工具打開,軟體工具本身也是一種文件,可以被下載。用戶的好友,也是用戶(用戶表-好友關系表-用戶表)
增加關系:同版主任命型。
刪除關系:同版主任命型

⑶ 建立資料庫時,既然SQL語言可以實現多表連接,那為什麼還要建立表間的一對一,一對多這些關系呢

這些關系是表的約束,可以強制實現數據的一致性。SQL語言實現多表連接,但是無法保證數據的一致性。

⑷ 在SQL中怎麼創建一個多對多的表,分析實體,找出關系模式,並定義它們之間的關系

兩個實體之間的關系是多對多得話,那麼在建表的時候就要建立三張表。比如說學生和課程,他們之間是多對多的關系,一個學生可以選多門課程,一門科目被多個學生選修,這個時候需要通過學生選課表來體現學生與科目的關系。例如下表
學生表:student_id(pk),student_name,student_sex,student_name
科目表:subject_id(pk),subject_name,subject_teacher
學生選課表:[student_id,subject_id](聯合主鍵),score(成績)

⑸ 在SQL中怎麼創建一個多對多的表,分析實體,找出關系模式,並定義它們之間的關系

首先建立兩個表
分別對應兩個實體
然後建立第三張表作為中間表
將之前建好的兩個表的主鍵在中間表中做聯合主鍵
這樣就將兩張表的多對多關系聯系起來了
我舉個例子
一條微博可能屬於多個話題
一個話題中也包含多條微博
--------------
話題表------
create
table
topic
(
topicid
int
primary
key,
keyword
nvarchar2(50)
not
null,
topictype
nvarchar2(50)
not
null
check(topictype
in
('生活','情感','娛樂','電影','電視','體壇','財經','科技','文化','媒體沙龍')),
);
-----、微博表——————
create
table
weibo(
weiboid
int
primary
key,
userID
int
,
text
nvarchar2(140)not
null,
);
---------、話題微博表
create
table
topicWeibo
(
topicweiboid
int
primary
key,
weiboid
int
references
weibo(weiboid),
topicid
int
references
topic(topicid)
);

⑹ SQL包含關系如何建表

一個用戶表User,一個小組表Group,再加一個用戶所屬關系表UserGroupRelation。
UserGroupRelation(UserId,GroupId);這樣就可以了

否則是無法實現多對多關系的。只能多對一或一對多。