1.建立用戶信息表

創(chuàng)新互聯(lián)公司是一家專業(yè)提供友誼企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都做網(wǎng)站、H5場景定制、小程序制作等業(yè)務(wù)。10年已為友誼眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
create table userinfo(id int(4) not null primary key, name varchar(20) not null unique key)engine=innodb default charset=utf8;
2.建立好友關(guān)系表
create table friend(uid int(4) not null, foreign key(uid) references
userinfo(id),fid int(4) not null, foreign key(fid) references
userinfo(id),unique key(uid,fid))engine=innodb default charset=utf8;
3.追加測試數(shù)據(jù)(滿足uidfid條件)
insert userinfo values(1111---9999,'namea---namei’);
insert friend values(1111,4444---6666);
insert friend values(5555,6666---9999);
4.查詢好友(5555的好友)
select * from friend where uid=5555 or fid=5555;
+-------+------+
| uid | fid |
+-------+------+
| 1111 | 5555 |
| 5555 | 6666 |
| 5555 | 7777 |
| 5555 | 8888 |
| 5555 | 9999 |
+-------+--------+
5.問題:
5.1.userinfo中的id和name不為null,且不可重復(fù):table設(shè)計可以做到
5.2.friend中的uid和fid均不為null,且都來自于userinfo的id:table設(shè)計可以實現(xiàn)
5.3.(uid,fid)組合不可重復(fù):table設(shè)計可以完成
5.4.好友關(guān)系的表達(dá)時,(1111,5555)和(5555,1111)有冗余,也會出現(xiàn)(1111,1111)這樣的數(shù)據(jù):這個在table設(shè)計實現(xiàn)比較麻煩,需要在程序?qū)用鎸崿F(xiàn),也即增加限制條件uidfid即可
6.結(jié)果:
table設(shè)計達(dá)不到要求,或者較難達(dá)到要求時,可以在程序?qū)用嬗枰詮浹a(bǔ)。
2張表,一張用戶表,一張好友表。好友表里面放用戶表的ID就行了。
主鍵:唯一標(biāo)識一條記錄,不能有重復(fù)。作用:用來保證數(shù)據(jù)的完整性。 外鍵:表的外鍵是另一表的主鍵。可以是重復(fù)的,可以是空值,用來和其他表建立聯(lián)系,一個表可以有多個外鍵。
你分別給“評論表”(表A)和“文章表”(表B)建立了一個主鍵,數(shù)據(jù)表是存儲多條記錄,而主鍵是區(qū)分記錄的唯一性的,你將 表A 的主鍵id放到 表B 中作為外鍵(aid),你就已經(jīng)將兩表通過 B表(aid) 建立了一種關(guān)系,就好像母子兩人,因為有血緣關(guān)系,就可以知道一人是另一個人的母親,兩個表有關(guān)系了就可以互相知道了;
B表里有了aid必須是A表中存在的,就像兒子肯定有母親的,所有一文章記錄有評論(aid),那aid就能在A表中找到,找到的這條評論就是這篇文章的評論;
因為文章和評論是一對多的關(guān)系,像LZ那樣文章表冗余就會比較多;個人覺得將文章的主鍵作為評論表的外鍵比較好;
打開MySQL Workbench,并連接數(shù)據(jù)庫。圖中顯示連接數(shù)據(jù)庫對話框
成功連接后,點(diǎn)擊如圖所示紅色按鈕,“create new Schema”,填寫數(shù)據(jù)庫名稱如“new_schema”,點(diǎn)擊“應(yīng)用”,如圖
在彈出的的確認(rèn)對話框中點(diǎn)擊“應(yīng)用”,如圖
OK,成功創(chuàng)建,如圖
如圖操作,我們開始創(chuàng)建表
需要填寫表名(new_table),列名”id、date“和選擇列的類型,以及列屬性(主鍵),點(diǎn)擊”應(yīng)用“
如圖所示,成功創(chuàng)建表,點(diǎn)擊右鍵,選擇“select rows”可以編輯表內(nèi)容
MySQL創(chuàng)建關(guān)聯(lián)表可以理解為是兩個表之間有個外鍵關(guān)系,但這兩個表必須滿足三個條件
1.兩個表必須是InnoDB數(shù)據(jù)引擎
2.使用在外鍵關(guān)系的域必須為索引型(Index)
3.使用在外鍵關(guān)系的域必須與數(shù)據(jù)類型相似
下面分別建兩個表來說明一下:
Create TABLE IF NOT EXISTS `books` (
`book_id` smallint(6) NOT NULL auto_increment COMMENT ‘書籍編號',
`book_name` char(20) NOT NULL COMMENT ’書名‘,
`book_pic` varchar(200) NOT NULL COMMENT ’封面‘,
`book_author` char(20) NOT NULL COMMENT ’作者‘,
`book_pub` char(40) NOT NULL COMMENT ’出版社‘,
`book_sort` char(6) NOT NULL COMMENT ’分類‘,
`book_owner` char(6) default NULL COMMENT ’所有者‘,
`book_borrower` char(7) default NULL COMMENT ’借閱者‘,
`book_borrower_time` date default NULL COMMENT ’借閱時間‘,
PRIMARY KEY (`book_id`),
INDEX (book_borrower))
ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=5 ;
Create TABLE IF NOT EXISTS `parts` (
`part_id` smallint(6) NOT NULL COMMENT ’成員編號‘,
`part_name` varchar(6) NOT NULL COMMENT ’成員名‘,
`part_mail` varchar(50) NOT NULL COMMENT ’郵箱‘,
`part_pass` varchar(20) NOT NULL COMMENT ’密碼‘,
PRIMARY KEY (`part_id`),
FOREIGN KEY(part_name) REFERENCES books(book_borrower) on delete cascade on update cascade)
分析一下books表和parts表,創(chuàng)建他們的關(guān)聯(lián),我用了books表的book_borrower字段 創(chuàng)建表時索引并選擇InnoDB為表引擎。而parts表即part_name字段為外鍵,關(guān)聯(lián)到books表的book_borrower字段。注意兩 個字段分別是char和varchar都是字符串類型。on delete cascade意思為當(dāng)books表有相關(guān)記錄刪除時,那parts表也會跟著刪除相關(guān)聯(lián)的記錄。
文章標(biāo)題:mysql怎么創(chuàng)建關(guān)系表 sql數(shù)據(jù)庫怎么創(chuàng)建表
文章源于:http://chinadenli.net/article4/hppgoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、動態(tài)網(wǎng)站、小程序開發(fā)、營銷型網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)