1.數(shù)據(jù)庫中的多對多關(guān)聯(lián)關(guān)系一般需采用中間表的方式處理,將多對多轉(zhuǎn)化為兩個一對多。
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比松桃網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式松桃網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋松桃地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
2.通過表的關(guān)系,來幫助我們怎樣建表,建幾張表。
一對一
一張表的一條記錄一定只能與另外一張表的一條記錄進(jìn)行對應(yīng),反之亦然。
學(xué)生表:姓名,性別,年齡,身高,體重,籍貫,家庭住址,緊急聯(lián)系人
其中姓名、性別、年齡、身高,體重屬于常用數(shù)據(jù),但是籍貫、住址和聯(lián)系人為不常用數(shù)據(jù)
如果每次查詢都是查詢所有數(shù)據(jù),不常用的數(shù)據(jù)就會影響效率,實際又不用
常用信息表:ID(P),姓名,性別,年齡,身高,體重
不常用信息表:ID(P),籍貫,家庭住址,緊急聯(lián)系人
解決方案:將常用的和不常用的信息分享存儲,分成兩張表
不常用信息表和常用信息表,保證不常用信息表與常用信息表能夠?qū)?yīng)上:找一個具有唯一性的
字段來共同連接兩張表。
一個常用表中的一條記錄永遠(yuǎn)只能在一張不常用表中匹配一條記錄,反之亦然。
一對多
一張表中有一條記錄可以對應(yīng)另外一張表中的多條記錄;但是反過來,另外一張表的一條記錄
只能對應(yīng)第一張表的一條記錄,這種關(guān)系就是一對多或多對一
母親與孩子的關(guān)系:母親,孩子兩個實體
母親表:ID(P),名字,年齡,性別
孩子表:ID(P),名字,年齡,性別
以上關(guān)系:一個媽媽可以在孩子表中找到多條記錄(也可能是一條),但是一個孩子只能找到一個媽媽
是一種典型的一對多的關(guān)系。
但是以上設(shè)計:解決了實體的設(shè)計表問題,但是沒有解決關(guān)系問題,孩子找不到母親,母親也找不到孩子
解決方案:在某一張表中增加一個字段,能夠找到另外一張表中的記錄:在孩子表中增加一個字段
指向母親表,因為孩子表的記錄只能匹配到一條母親表的記錄。
母親表:ID(P),名字,年齡,性別
孩子表:ID(P),名字,年齡,性別,母親表ID(母親表主鍵)
多對多
一對表中(A)的一條記錄能夠?qū)?yīng)另外一張表(B)中的多條記錄;同時B表中的一條記錄
也能對應(yīng)A表中的多條記錄
老師和學(xué)生
老師表 T_ID(P),姓名,性別
學(xué)生表 S_ID(P),姓名,性別
以上設(shè)計方案:實現(xiàn)了實體的設(shè)計,但是沒有維護實體的關(guān)系
一個老師教過多個學(xué)生,一個學(xué)生也被多個老師教過
解決方案:增加一張中間關(guān)系表
老師與學(xué)生的關(guān)系表:ID(P),T_ID,S_ID
老師表與中間表形成一對多的關(guān)系,而中間表是多表;維護了能夠唯一找到一表的關(guān)系;
同樣的學(xué)生表與中間表也是一個一對多的關(guān)系;
學(xué)生找老師:找出學(xué)生ID---中間表尋找匹配記錄(多條)---老師表匹配(一條)
老師找學(xué)生:找出老師ID---中間表尋找匹配記錄(多條)---學(xué)生表匹配(一條)
單表一億?還是全庫1億?
1.首先可以考慮業(yè)務(wù)層面優(yōu)化,即垂直分表。
垂直分表就是把一個數(shù)據(jù)量很大的表,可以按某個字段的屬性或使用頻繁程度分類,拆分為多個表。
如有多種業(yè)務(wù)類型,每種業(yè)務(wù)類型入不同的表,table1,table2,table3.
如果日常業(yè)務(wù)不需要使用所有數(shù)據(jù),可以按時間分表,比如說月表。每個表只存一個月記錄。
2.架構(gòu)上的優(yōu)化,即水平分表。
水平分表就是根據(jù)一列或多列數(shù)據(jù)的值把數(shù)據(jù)行放到多個獨立的表里,這里不具備業(yè)務(wù)意義。
如按照id分表,末尾是0-9的數(shù)據(jù)分別插入到10個表里面。
可能你要問,這樣看起來和剛才說的垂直分表沒什么區(qū)別。只不過是否具備業(yè)務(wù)意義的差異,都是按字段的值來分表。
實際上,水平分表現(xiàn)在最流行的實現(xiàn)方式,是通過水平分庫來實現(xiàn)的。即剛才所說的10個表,分布在10個mysql數(shù)據(jù)庫上。這樣可以通過多個低配置主機整合起來,實現(xiàn)高性能。
最常見的解決方案是cobar,這個帖子介紹的比較完善,可以看看。
cobar的邏輯層次圖:
不過這種分庫方式也是有一定局限性的,需要應(yīng)用程序做相應(yīng)的配合,比如說分庫的情況下,雖然可以實現(xiàn)跨庫查詢,但是不能進(jìn)行相關(guān)的group?by計算。
另外,之前關(guān)于水平分表的實現(xiàn)方式,也可以通過表分區(qū)來實現(xiàn)。
mysql優(yōu)化的方式有很多,選擇上主要還是要考慮個人的實際情況,如代碼不可控的情況下,就不適合選擇按字段屬性分表的情況,這樣可能會帶來大量的重構(gòu)以及很多不可預(yù)期的風(fēng)險。
而架構(gòu)的優(yōu)化,雖然對應(yīng)用是透明的,但對sql的寫法有很多局限性,比如說不能使用聚合函數(shù)等等,同時也需要有充足的硬件資源,只有一臺服務(wù)器的情況下是沒有意義的。
相比起來,代價最低的是按時間分表或分區(qū),這兩種辦法對應(yīng)用來說都是透明的。
分區(qū)只需要一次本地數(shù)據(jù)遷移的操作。
而通過分表把現(xiàn)網(wǎng)數(shù)據(jù)和歷史數(shù)據(jù)分離,唯一的代價是定期的數(shù)據(jù)維護。
一般如果表里面有1億數(shù)據(jù)的情況下,索引的問題應(yīng)該是常識了,這方面我就不說了。
另外如果覺得答的不錯多給點分。
選中某個表,然后右鍵點擊,選擇“設(shè)計表”即可。
也可以左鍵點擊某個表(即選中某表),在上面輔助菜單欄里有“打開表”、“設(shè)計表”、“新建表”等按鈕可點擊,點擊“設(shè)計表”按鈕即可。
進(jìn)入后,會彈出新的操作窗口,新窗口的菜單欄里有常用的修改表結(jié)構(gòu)的按鈕,右鍵點擊某列字段也可以彈出相應(yīng)的修改表的操作按鈕。
其它摸索著看提示操作即可,還是很簡單的。
修改好表后點擊菜單欄上的“保存”按鈕即可。
注:若要查看修改表的sql語句,必須在“保存”之前點擊“SQL預(yù)覽”按鈕。
文章標(biāo)題:mysql配置表怎么設(shè)計,mysql的配置
網(wǎng)站路徑:http://jinyejixie.com/article34/dssehpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、企業(yè)建站、定制開發(fā)、品牌網(wǎng)站制作、商城網(wǎng)站、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)