當前位置:首頁 » 操作系統 » 資料庫設計多對多

資料庫設計多對多

發布時間: 2023-05-29 14:57:40

❶ 用戶與標簽之間多對多關系怎麼設計資料庫

你用什麼資料庫?在資料庫里創建OLE對象,然後把你的文章用二進制寫入資料庫。

用以下方法來實鏈梁現:

首先我們先來熟悉一下將要使用的瞎納對象方法。我們用來獲取上一個頁面傳遞過來的數據一般是使用Request對象。同樣的,我們也可以使用Request對象來獲取上傳上來的文件數據,使用的方法是Request.BinaryRead()。而我們要從資料庫中讀出來圖片的數據顯示到網頁上面要用到的方法是:

Request.BinaryWrite()。在我們得到了圖片的數據,要保存到資料庫中的時候,不可以直接使用Insert語句對資料庫進行操作,而是要使用ADO的AppendChunk方法,同樣的,讀出資料庫中的圖片數據,要使用GetChunk方法。各個方法的具體語法如下:

*Request.BinaryRead語法:

variant=Request.BinaryRead(count)

參數

variant

返回值保存著從客戶端讀取到數據。

count

指明要從客戶端讀取的數據量大小,這個值小於或者等於使用方法Request.TotalBytes得到的數據量。

*Request.BinaryWrite語法:

Request.

參數

data

要寫入到客戶端瀏覽器中的數據包。

*Request.TotalBytes語法:

variant=Request.TotalBytes

參數

variant

返回從客戶端讀取到數據量的位元組數。

*AppendChunk語法

將數據追加到大型文本、二進制數據Field或Parameter對象。

object.

參數

objectField或Parameter對象

Data變體型,包含追加到對象中的數據。

說明

使用Field或Parameter對象的AppendChunk方法可將長二進制或字元數

據填寫到對象中。在系統內存有限的情況下,可以使用AppendChunk方法對長整型值進行部分而非全部的操作。

*GetChunk語法

返回大型文本或二進制數據Field對象的全部或部分內容。

variable=field.GetChunk(Size)

返回值

返回變體型。

參數

Size長整型表達式,等於所要檢索的位元組或字元數。

說明

使用Field對象的GetChunk方法檢索其部分或全部長二進制或字元數據。在系統內存有限的情況下,可使用GetChunk方法處理部分而非全部的長整型值。

GetChunk調用返回的數據將賦給「變數」。如果Size大於剩餘的數據,則

GetChunk僅返回剩餘的數據而無需用空白填充「變數」。如果欄位為空,則

GetChunk方法返回Null。

每個後續的GetChunk調用將檢索從前一次GetChunk調用停止處開始的數據。但是,如果從一個欄位檢索數據然後在當前記錄中設置或讀棚神運取另一個欄位的值,ADO將認為已從第一個欄位中檢索出數據。如果在第一個欄位上再次調用GetChunk方法,ADO將把調用解釋為新的GetChunk操作並從記錄的起始處開始讀取。如果其他Recordset對象不是首個Recordset對象的副本,則訪問其中的欄位不會破壞GetChunk操作。

如果Field對象的Attributes屬性中的adFldLong位設置為True,則可以對該欄位使用GetChunk方法。

如果在Field對象上使用Getchunk方法時沒有當前記錄,將產生錯誤3021(無當前記錄)。

接下來,我們就要來設計我們的資料庫了,作為測試我們的資料庫結構如下(aess2000):

欄位名稱 類型 描述

id 自動編號主鍵值

img OLE對象用來保存圖片數據

對於在中,對應的結構如下:

欄位名稱 類型 描述

id int(Identity) 主鍵值

img image 用來保存圖片數據

現在開始正式編寫我們的純ASP代碼上傳部分了,首先,我們有一個提供給用戶的上傳界面,可以讓用戶選擇要上傳的圖片。代碼如下

(upload.htm):


注意enctype="multipart/form-data",一定要在Form中有這個屬性,否則,將無法得到上傳上來的數據。接下來,我們要在process.asp中對從瀏覽器中獲取的數據進行必要的處理,因為我們在process.asp中獲取到的數據不僅僅包含了我們想要的上傳上來的圖片的數據,也包含了其他的無用的信息,我們需要剔除冗餘數據,並將處理過的圖片數據保存到資料庫中,這里我們以aess2000為例。具體代碼如下(process.asp):

<%

response.buffer=true

formsize=request.totalbytes

formdata=request.binaryread(formsize)

bncrlf=chrB(13)&chrB(10)

divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)

datastart=instrb(formdata,bncrlf&bncrlf)4

dataend=instrb(datastart1,formdata,divider)-datastart

mydata=midb(formdata,datastart,dataend)

set connGraph=server.("ADODB.connection")

』connGraph.="driver={(*.mdb)};DBQ="&server.MapPath("images.mdb")&";uid=;PWD=;"

connGraph.="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("images.mdb")

connGraph.Open

set rec=server.("ADODB.recordset")

rec.Open "SELECT * FROM images where id is null",connGraph,1,3

rec.addnew

rec("img").appendchunk mydata

rec.update

rec.close

set rec=nothing

set connGraph=nothing

%>

好了,這下我們就把上傳來的圖片保存到了名為images.mdb的資料庫中了,剩下的工作就是要將資料庫中的圖片數據顯示到網頁上面了。一般在HTML中,顯示圖片都是使用標簽,也就是,但是我們的圖片是保存到了資料庫中,「圖片路徑」是什麼呢?呵呵,其實這個SRC屬性除了指定路徑外,也可以這樣使用哦:

所以,我們所要做的就是在showimg.asp中從資料庫中讀出來符合條件的

數據,並返回到SRC屬性中就可以了,具體代碼如下(showimg.asp):

<%

=server.("ADODB.connection")

』connGraph.="driver={(*.mdb)};DBQ="&

server.MapPath("images.mdb")&";uid=;PWD=;"

connGraph.="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("images.mdb")

connGraph.Open

set rec=server.("ADODB.recordset")

strsql="="&trim(request("id"))

rec.open strsql,connGraph,1,1

Response.ContentType="image/*"

Response.BinaryWrite rec("img").getChunk(7500000)

rec.close

set rec=nothing

set connGraph=nothing

%>

注意在輸出到瀏覽器之前一定要指定Response.ContentType="image/*",

以便正常顯示圖片。

最後要注意的地方是,我的process.asp中作的處理沒有考慮到第一頁(upload.htm)中還有其他數據等等,如果有這些項目,你的process.asp就要注意處理掉不必要的數據。

❷ 資料庫怎麼設計多對多的數據表

1.資料庫中的多對多關聯關系一般需採用中間表的方式處理,將多對多轉化為兩個一對多。

2.通過表的關系,來幫助我們怎樣建表,建幾張表。

一對一

一張表的一條記錄一定只能與另外一張表的一條記錄進行對應,反之亦然。

學生表:姓名,性別,年齡,身高,體重,籍貫,家庭住址,緊急聯系人

其中姓名、性別、年齡、身高,體重屬於常用數據,但是籍貫、住址和聯系人為不常用數據

如果每次查詢都是查詢所有數據,不常用的數據就會影響效率,實際又不用

常用信息表:ID(P),姓名,性別,年齡,身高,體重

不常用信息表:ID(P),籍貫,家庭住址,緊急聯系人

解決方案:將常用的檔清和不常用的信息分享存儲,分成兩張表

不常用信息表和常用信息表,保證不常用信息表與常用信息表能夠對應上:找一個具有唯一性的

欄位來共同連接兩張表。

一個常用表中的一條記錄永遠只能在一張不常用表中匹配一條記錄,反之亦然。

一對多

一張表中有一條記錄可以對應另外一張表中的多條記錄;但是反過來,另外一張表的一條記錄

只能對應第一張表的一條記錄,這種關系就是一對多或多對一

母親與孩子的關系:母親,孩子兩個局蠢液實體

母親表:ID(P),名字,年齡,性別

孩子表:ID(P),名字,年齡,性別

以上關系:一個媽媽可以在孩子表中找到多條記錄(也可能是一條),但是一個孩子只能找到一個媽媽

是一種典型的一對多的關系。

但是桐物以上設計:解決了實體的設計表問題,但是沒有解決關系問題,孩子找不到母親,母親也找不到孩子

解決方案:在某一張表中增加一個欄位,能夠找到另外一張表中的記錄:在孩子表中增加一個欄位

指向母親表,因為孩子表的記錄只能匹配到一條母親表的記錄。

母親表:ID(P),名字,年齡,性別

孩子表:ID(P),名字,年齡,性別,母親表ID(母親表主鍵)

多對多

一對表中(A)的一條記錄能夠對應另外一張表(B)中的多條記錄;同時B表中的一條記錄

也能對應A表中的多條記錄

老師和學生

老師表T_ID(P),姓名,性別

學生表S_ID(P),姓名,性別

以上設計方案:實現了實體的設計,但是沒有維護實體的關系

一個老師教過多個學生,一個學生也被多個老師教過

解決方案:增加一張中間關系表

老師與學生的關系表:ID(P),T_ID,S_ID

老師表與中間表形成一對多的關系,而中間表是多表;維護了能夠唯一找到一表的關系;

同樣的學生表與中間表也是一個一對多的關系;

學生找老師:找出學生ID--->中間表尋找匹配記錄(多條)--->老師表匹配(一條)

老師找學生:找出老師ID--->中間表尋找匹配記錄(多條)--->學生表匹配(一條)

❸ 用PD設計資料庫的時候,怎麼畫多對多關系

1.在access所有對象中,選則瞎中一個想要建立關系的數據表,右鍵單擊,在右鍵菜單中枝蔽,選擇設計視圖。 2.接著在菜單欄點擊 資料庫工具。 3.在資料庫工具中,點擊關系。 4.在關系面板中,在空白的位置,右鍵單擊,猛盯州選擇顯示表。 5.在現實表的對話框中,。

❹ 資料庫表設計,一張表和多張表有關系,並且是多對多關系

單表的就不詳細枯橘橋說了
列舉一個吧,就比如班級表
class_id(主鍵)
class_name
class_studentnumber
//老師表和學生表也是一伍褲樣
在此基礎上,再添加下表
老師班級表
teacher_id
class_id
student_id
teacher_name
teacher_sex
其中主鍵為:teacher_id和class_id
雙主鍵,就可以實現多對沒猛多關系

❺ 資料庫 多對多

實體有三個 公交車 、 公交線族兆旁路 和 車站,那麼就應該設計三張表分別記錄這三個實體的數據,然後根據需要記錄的數據拆分出屬性。猜輪然後三個實體之間的關系是:公交車和兆橡公交線是多對一的;公交線和車站是一對多的;車站和公交車沒有直接聯系。

❻ 如何在資料庫中表示多對多的關系

多對多:新建一個關系表,將兩張表關系起來。關系表中是兩張表的主鍵。

如:有多個學生,每個學生可以選修多門課程,每個課程可以被多個學生選修。

注意:多對多中,不能說配亂在一個表中加個欄位,cid是另一張表的主鍵,不能寫兩個數據。

(6)資料庫設計多對多擴展閱讀

一個好的表結構設計,可以減少一些不必要的表或欄位等慧畢。數據表之間的關聯關系分為三種:一對一、一對多、多對多前賣芹。

1、一對一,是將數據表「垂直切分」,就是A表的一條記錄對應B表的一條記錄。

優點:

(1)便於管理、可提高一定的查詢速度。

(2)減輕CPU的IO讀寫,提高存取效率。

(3)符合資料庫設計的三大範式。

(4)符合關系性資料庫的特性。

缺點:增加一定的復雜程度,程序中的讀寫難度加大。

2、一對多,就是A表的一條記錄,對應B表的多條記錄,且A的主鍵作為B表的外鍵。

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

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

熱點內容
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:978
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:866
伺服器的描述是什麼 發布:2024-04-26 03:08:32 瀏覽:394
個人加密 發布:2024-04-26 03:01:23 瀏覽:519
linuxusbgadget 發布:2024-04-26 02:52:54 瀏覽:303
我的世界空島世界伺服器地址 發布:2024-04-26 01:39:08 瀏覽:248
尼爾機械紀元加密 發布:2024-04-26 01:37:11 瀏覽:867
在控制台輸出sql語句 發布:2024-04-26 01:08:12 瀏覽:432
動畫java 發布:2024-04-26 01:02:40 瀏覽:12
得力文件夾5302 發布:2024-04-26 00:21:32 瀏覽:91