欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

mysql怎么存放一對(duì)多 mysql多對(duì)一查詢

聊聊mysql的單列多值存儲(chǔ)

本文主要研究一下mysql如何用一個(gè)列來存儲(chǔ)多個(gè)值

創(chuàng)新互聯(lián)建站長(zhǎng)期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為黔西南州企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、成都做網(wǎng)站,黔西南州網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

mysql用單列存儲(chǔ)多值通常用于一對(duì)多的反范式處理,具體可以用bit、int/bigint、varchar、set類型來實(shí)現(xiàn),缺點(diǎn)是不支持索引。

數(shù)據(jù)庫如何建立表間一對(duì)多關(guān)系

MySQL里面有如下的表

user:id username

photo:id name

photo_favour(圖片收藏關(guān)系表):photo_id user_id

假設(shè)這幾個(gè)表都相當(dāng)大,需要進(jìn)行分表。我的分表規(guī)則是:

user表按照id取模,這樣user相關(guān)的表都可以按照這個(gè)取模后的結(jié)果來分表;

photo表按照id取模,同樣與photo相關(guān)的表都可以按該規(guī)則分表;

至于photo_favour是一個(gè)多對(duì)多的關(guān)系表,我現(xiàn)在的想法是該表復(fù)制多一份,一份以photo_id來分表,一份以u(píng)ser_id分表,分別建立不同的索引,這樣就變?yōu)閮蓚€(gè)一對(duì)多的關(guān)系。

我有兩個(gè)問題:

1、這樣的分表可行嗎,有更好的分表方法嗎?

2、一對(duì)多的關(guān)系在進(jìn)行分表時(shí)候,例如user表和user_favour表都按照user_id來取模得到序號(hào)x來確定分表。如果1個(gè)用戶會(huì)有100條收藏記錄,那么user_x有100W條記錄時(shí)候user_favour_x分表就有1000W記錄,這時(shí)候user_favour_x又需要分表了,怎么解決這種情況?

這種情況我會(huì)放棄多對(duì)多的形式,弄兩個(gè)表

user_to_photos: user_id, photo_id_list

photo_to_users: photo_id, user_id_list

1個(gè)user喜歡的photo id全塞到photo_id_list

1個(gè)photo被哪些用戶喜歡了,也全塞到user_id_list

這樣的讀取就高效了很多,,寫的時(shí)候注意并發(fā)臟寫。。。同樣你根據(jù)user_id愛怎么分表就怎么分。

===

如果收藏量太大,還是不能滿足,就要考慮切分記錄,1個(gè)user可以擁有多條記錄,每條記錄都可記錄多個(gè)photo id

user_to_photos: user_id, num, photo_id_list

num字段可有可無,如果你需要精確定位user 222 收藏的 photo 333在哪條記錄,就需要安排好算法,找到對(duì)應(yīng)的num

大概是這樣,重點(diǎn)是算法邏輯

數(shù)據(jù)庫中建表時(shí)經(jīng)常所說一對(duì)一、一對(duì)多、多對(duì)多等等關(guān)系究竟是什么意思?分別在什么情況下要用到一對(duì)一或一對(duì)式,而又在什么情況下又要用到多對(duì)多?在這里我們?cè)敿?xì)分析,并且用實(shí)例來講解各種關(guān)系的實(shí)際運(yùn)用!

關(guān)聯(lián)映射:一對(duì)多/多對(duì)一存在最普遍的映射關(guān)系,簡(jiǎn)單來講就如球員與球隊(duì)的關(guān)系;一對(duì)多:從球隊(duì)角度來說一個(gè)球隊(duì)擁有多個(gè)球員 即為一對(duì)多多對(duì)一:從球員角度來說多個(gè)球員屬于一個(gè)球隊(duì) 即為多對(duì)一數(shù)據(jù)表間一對(duì)多關(guān)系如下圖:

關(guān)聯(lián)映射:一對(duì)一關(guān)系就如球隊(duì)與球隊(duì)所在地址之間的關(guān)系,一支球隊(duì)僅有一個(gè)地址,而一個(gè)地址區(qū)也僅有一支球隊(duì)。數(shù)據(jù)表間一對(duì)一關(guān)系的表現(xiàn)有兩種,一種是外鍵關(guān)聯(lián),一種是主鍵關(guān)聯(lián)。圖示如下:

一對(duì)一外鍵關(guān)聯(lián):

----------------------------------------------------------------------------------------------------------

前言:多對(duì)多關(guān)系至少需要3個(gè)表,我們把一個(gè)表叫做主表,一個(gè)叫做關(guān)系表,另外一個(gè)叫做字典表或者副表(字典表是紀(jì)錄比較少,而且基本穩(wěn)定的,例如:版塊名稱;副表是內(nèi)容比較多,內(nèi)容變化的,例如)。

按照數(shù)據(jù)庫的增刪查改操作,多對(duì)多關(guān)系的查找都可以用inner join或者

select * from 主表 where id in (select 主表id from 關(guān)系表)

1,角色任命型

特點(diǎn):關(guān)系表兩外鍵組合無重復(fù)紀(jì)錄,關(guān)系表一般不需要時(shí)間字段和主鍵,有一個(gè)表是字典類型的表。

界面特點(diǎn):顯示主表,用checkbox或多選select設(shè)置多選關(guān)系。

例如:任命版主(用戶表-關(guān)系表-版塊名稱表),角色權(quán)限控制等,用戶是5個(gè)版塊版主,只要關(guān)系表5行紀(jì)錄就可以確立,關(guān)系表的兩個(gè)外鍵具有聯(lián)合主鍵性質(zhì)。

增加關(guān)系:如果沒有組合紀(jì)錄,insert之。

刪除關(guān)系:如果有組合紀(jì)錄,刪除之。

2,集合分組型

特點(diǎn):同角色任命型類似,關(guān)系表兩外鍵組合無重復(fù)紀(jì)錄,關(guān)系表一般不需要時(shí)間字段和主鍵。區(qū)別是主副表都不是字典表,可能都很大不固定。

界面特點(diǎn):顯示主表,用搜索代替簡(jiǎn)單的checkbox或多選select,或者一條一條的添加。

例如:歌曲專集(專集表-關(guān)系表-歌曲表)。手機(jī)分組(分組表-關(guān)系表-手機(jī)表)。用戶圈子(圈子表-關(guān)系表-用戶表)。文章標(biāo)簽(文章表-關(guān)系表-標(biāo)簽表)

增加關(guān)系:同版主任命型。

刪除關(guān)系:同版主任命型。

3,明細(xì)帳型

特點(diǎn):關(guān)系表可以有重復(fù)紀(jì)錄,關(guān)系表一般有時(shí)間字段,有主鍵,可能還有文字型的字段用來說明每次發(fā)生關(guān)系的原因(消費(fèi))。

界面特點(diǎn):顯示關(guān)系表,用radio或下拉設(shè)置單選關(guān)系。

例如:現(xiàn)金消費(fèi)明細(xì)帳或訂單(用戶表-訂單表-消費(fèi)原因表),用戶可能多次在同一事情上重復(fù)消費(fèi)。積分變化紀(jì)錄也屬于這類。

增加關(guān)系:不管有沒有組合紀(jì)錄,insert之,紀(jì)錄時(shí)間。

刪除關(guān)系:根據(jù)關(guān)系表PK刪除。

4,評(píng)論回復(fù)型

特點(diǎn):同明細(xì)帳型關(guān)系表一般有時(shí)間字段,有主鍵,區(qū)別是重點(diǎn)在文字型的字段用來說明每次發(fā)生關(guān)系的內(nèi)容(評(píng)論回復(fù))。

界面特點(diǎn):回復(fù)文本框。

例如:論壇回復(fù)(用戶表-回復(fù)表-帖子表),用戶可能多次在不同帖子上評(píng)論回復(fù)費(fèi)。

增加關(guān)系:不管有沒有組合紀(jì)錄,insert之,紀(jì)錄時(shí)間和文字。

刪除關(guān)系:根據(jù)關(guān)系表(回復(fù)表)PK刪除。

5,站內(nèi)短信型

特點(diǎn):主副表是同一個(gè),關(guān)系表一般有時(shí)間字段,有主鍵,重點(diǎn)在關(guān)系表文字型的字段用來說明每次發(fā)生關(guān)系的內(nèi)容(消息)或者其他標(biāo)記位來表示文字已讀狀態(tài)時(shí)間等。

界面特點(diǎn):回復(fù)文本框。

例如:站內(nèi)短信(用戶表-短信表-用戶表),用戶可能給用戶群發(fā)或者單發(fā),有標(biāo)記位來表示文字已讀狀態(tài)時(shí)間等。

增加關(guān)系:不管有沒有組合紀(jì)錄,insert之,紀(jì)錄時(shí)間和文字。

刪除關(guān)系:根據(jù)關(guān)系表(回復(fù)表)PK刪除。

6,用戶好友型

特點(diǎn):主副表是同一個(gè),同集合分組型,關(guān)系表兩外鍵組合無重復(fù)紀(jì)錄,關(guān)系表一般不需要時(shí)間字段和主鍵。

界面特點(diǎn):同集合分組型,顯示主表,用搜索代替簡(jiǎn)單的checkbox或多選select,或者一條一條的添加。

例如:下載站點(diǎn)的文件,(文件表-關(guān)系表-文件表)可以被軟件工具打開,軟件工具本身也是一種文件,可以被下載。用戶的好友,也是用戶(用戶表-好友關(guān)系表-用戶表)

增加關(guān)系:同版主任命型。

刪除關(guān)系:同版主任命型。

7,未知屬性型

特點(diǎn):在設(shè)計(jì)初期,主表的某些字段類型和名稱是不確定的時(shí)候,關(guān)系表實(shí)際上是主表的可擴(kuò)展字段,

一個(gè)[主表](ID),

一個(gè)[屬性名稱表](屬性ID.屬性名稱),

一個(gè)[屬性值表],包括3個(gè)字段:

屬性值(屬性Value varchar(500))

主表ID

屬性ID

這樣可以作到最小冗余度。

(和常見的多對(duì)多關(guān)系不同的是:值統(tǒng)一用varchar來存儲(chǔ),因?yàn)檫@類型的值一般不會(huì)用來計(jì)算)。

比如:

軍隊(duì)的數(shù)據(jù)庫設(shè)計(jì)中有種物資叫做“戰(zhàn)繳物資”,就是打仗的時(shí)候繳獲的,軍隊(duì)自己都不知道這些物資有什么屬性。

比如繳獲的化學(xué)品有化學(xué)名,通用名,是否有輻射,計(jì)量單位,包裝規(guī)格,數(shù)量等等,或者不是化學(xué)品是其他任何未知的東西。

這樣?xùn)|西就可以

某奇怪東西.屬性集合["某某奇怪屬性名"]="某某奇怪值";

某變態(tài)東西.屬性集合["某某變態(tài)屬性名"]="某某變態(tài)值";

這樣存儲(chǔ)。

再比如:

手機(jī)型號(hào)有幾千種,除了共同屬性外還有不同屬性有幾百個(gè),屬性名和值類型都不一樣,有的手機(jī)有這屬性,有的沒有。

對(duì)于這樣的“多態(tài)”,我們就采用上面的設(shè)計(jì)結(jié)構(gòu)。

其效果相當(dāng)于:

某奇怪手機(jī).屬性集合["某某奇怪屬性名"]="某某奇怪值";

某變態(tài)手機(jī).屬性集合["某某變態(tài)屬性名"]="某某變態(tài)值";

界面特點(diǎn):設(shè)置主表一行紀(jì)錄的屬性時(shí)候,要列出所有可能的屬性名稱,每個(gè)對(duì)應(yīng)一個(gè)文本框。

mysql數(shù)據(jù)庫中如何用一對(duì)多表示多對(duì)多

拿用戶角色來說

用戶? ←多對(duì)多→ 角色

概念模型如下:

生成物理模型就成了2個(gè)1對(duì)多:

箭頭指向多的一方

mysql怎么設(shè)計(jì)一對(duì)多的好友關(guān)系

在多的一方增加 一 的一方的id,例如 A 有 n 個(gè)好友,則在好友表(friends)中,增加一個(gè)字段用于存放A的id,則可以通過下列語句查詢到A的所有好友:

select * from friends where Aid = ?

分享標(biāo)題:mysql怎么存放一對(duì)多 mysql多對(duì)一查詢
網(wǎng)頁URL:http://aaarwkj.com/article44/doodihe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、搜索引擎優(yōu)化ChatGPT、品牌網(wǎng)站設(shè)計(jì)外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
成人爱爱在线视频免费观看| 国产性做爰片免费视频| 欧美日韩国产激情另类| 女人裸体网站无遮挡午夜| 人妻一区二区三区中文字幕| 欧美高清一区二区在线播放| 免费人成网站视频在线观看不卡| 欧美精品国产精品久久| 粉嫩av一区二区三区四区| 国产中文字幕精品在线| 久久精品噜噜噜成人av农村| 中文字幕在线日韩av| 日韩在线啊啊啊的视频| 中文字幕人妻在线播放| 久久夜色一区二区三区| 亚洲中文字幕激情中午字幕| 熟女少妇精品一区二区三区| 国内一级片内射免费视频观看| 人妻日韩精品综合一二三四| 久久99国产综合精品女同| 日本人妻丰满熟妇久久| 变态另类日韩欧美高清| 国产av蜜臀一区二区三区| 日本亚洲精品在线观看| 亚洲女同中文字幕在线| 青青草日韩视频在线观看| 成人在线免费黄色小说| 国产特级黄色片免费看| 亚洲av精二区三区四区| 中文字幕av在线有码| 国产在线精品91国自产拍| 色播五月麻豆激情综合网 | 亚州欧美制服另类国产| 亚洲精品国产熟女av| 欧美欧美欧美欧美在线 | 国产黄片大秀在线观看| 国产又粗又长又大又长| 日韩黄色免费在线观看| 午夜美女精品福利视频| 91青青草原免费观看| 午夜麻豆影网在线观看|