學(xué)會(huì)sql數(shù)據(jù)庫(kù)關(guān)系圖(Petshop)
很久以前就知道微軟的Petshop的很經(jīng)典,昨天抽出時(shí)間去學(xué)習(xí),一開始還真的不適應(yīng),什么成員資格,還真的看不太懂,運(yùn)行petshop想從登陸學(xué)起,但是用戶名和密碼都不知道,后來(lái)發(fā)現(xiàn)有更注冊(cè)的頁(yè)面,自己注冊(cè)了一個(gè)頁(yè)面,才發(fā)現(xiàn)還得從數(shù)據(jù)庫(kù)出發(fā)。花了這么多時(shí)間最終還是回到了數(shù)據(jù)庫(kù),但是數(shù)據(jù)庫(kù)中一張一張的表格找不到腳本,也不是自己設(shè)計(jì)的數(shù)據(jù)庫(kù),完全沒有一點(diǎn)頭緒,后來(lái)突然想起來(lái)sql有個(gè)數(shù)據(jù)庫(kù)關(guān)系圖,可以很快的適合數(shù)據(jù)庫(kù)程序員很快的掌握數(shù)據(jù)庫(kù)表之間的關(guān)系。于是開始了我的百度之旅,關(guān)于數(shù)據(jù)庫(kù)的關(guān)系圖的文章還真的很少,于是我開始根據(jù)petshop,然后建立數(shù)據(jù)庫(kù)關(guān)系圖,開始掌握數(shù)據(jù)庫(kù)關(guān)系圖。我點(diǎn)擊MSPetShop4Services這個(gè)數(shù)據(jù)庫(kù),存放著用戶的信息。但是原版的是沒有數(shù)據(jù)庫(kù)關(guān)系圖。
首先我們自己動(dòng)手來(lái)新建一張數(shù)據(jù)庫(kù)關(guān)系圖吧,找到相應(yīng)的數(shù)據(jù)庫(kù)(圖1),在第一行中有個(gè)數(shù)據(jù)庫(kù)關(guān)系圖,我們右擊選擇新建數(shù)據(jù)庫(kù)關(guān)系圖(N),如圖2:
(圖1) ?。▓D2)
這個(gè)時(shí)候會(huì)跳出一個(gè)添加表對(duì)話框,這里我們可以選擇我們想要的表,如果想要全部選中,則這樣操作,先鼠標(biāo)點(diǎn)重第一個(gè)然后按住shift+鼠標(biāo)點(diǎn)重最后一個(gè),來(lái)完成操作。最后表格位子整理一下,然后ctrl+s保存一下,數(shù)據(jù)關(guān)系圖的名字,那么數(shù)據(jù)庫(kù)關(guān)系圖基本建立好了。接下來(lái)就是分析了。
?。ㄌ砑颖韺?duì)話框圖) (選中表對(duì)話框圖)
整個(gè)MSPetShop4Services數(shù)據(jù)庫(kù)的關(guān)系圖。整個(gè)這幅圖,是不是看著一張一張的表格了解表之間的關(guān)系舒服多了,當(dāng)然我們還是要看懂整個(gè)表的意思,首先最上面的是表名,下面的都是字段,有些字段左邊有個(gè)鑰匙,那是主鍵的意思。在表之間有個(gè)線連著就說(shuō)明這兩個(gè)表之間存在主鍵和外鍵的關(guān)系,其中一半都有鑰匙的指的是主鍵,一個(gè)無(wú)窮大的符號(hào)表示的外鍵。但是不知道細(xì)心的朋友有沒有發(fā)現(xiàn)一個(gè)問(wèn)題,比如說(shuō)aspnet_Paths和aspnet_PersonalizationAllUsers表之間的線的兩端都是鑰匙的,我也找了很久資料沒有找到,于是自己寫代碼測(cè)試了,到底是什么意思。
通過(guò)自己的代碼了解圖中線的含義:
我自己定義是一個(gè)學(xué)生選課的關(guān)系圖:
sql腳本代碼如下:
CREATE TABLE Student
(
[Sid] INT NOT NULL PRIMARY KEY, --學(xué)生編號(hào)
SNAme VARCHAR(10) NOT NULL --學(xué)生姓名
)
CREATE TABLE Course(
[Cid] INT NOT NULL PRIMARY KEY, --課程編號(hào)
CName VARCHAR(10) NOT NULL --課程名
)
CREATE TABLE SC(
[Sid] INT NOT NULL,
[Cid] INT NOT NULL,
Grade INT NOT NULL, --成績(jī)
FOREIGN KEY([SID]) REFERENCES Student2([Sid]),
FOREIGN KEY([CID]) REFERENCES Course2([Cid])
)
這個(gè)數(shù)據(jù)圖是我們知道的主鍵外鍵的關(guān)系,也是符合我們思維的。
接著我在代碼里面改了一行代碼,圖就變調(diào)了,代碼如下:
CREATE TABLE Student2
(
[Sid] INT NOT NULL PRIMARY KEY, --學(xué)生編號(hào)
SNAme VARCHAR(10) NOT NULL --學(xué)生姓名
)
CREATE TABLE Course2(
[Cid] INT NOT NULL PRIMARY KEY, --課程編號(hào)
CName VARCHAR(10) NOT NULL --課程名
)
CREATE TABLE SC2(
[Sid] INT NOT NULL PRIMARY KEY,
[Cid] INT NOT NULL,
Grade INT NOT NULL, --成績(jī)
FOREIGN KEY([SID]) REFERENCES Student2([Sid]),
FOREIGN KEY([CID]) REFERENCES Course2([Cid])
)
對(duì)應(yīng)的關(guān)系圖如下:
我相信你們看到了吧,兩個(gè)鑰匙的線段。好了那我們應(yīng)該了解了吧,我們可以得出這樣的結(jié)論,如果一個(gè)表中是主鍵,而另一個(gè)表中卻是普通的字段,那顯示的效果是一個(gè)鑰匙一個(gè)無(wú)窮大,鑰匙指向主鍵,無(wú)窮大指向外鍵,但是當(dāng)外鍵在另一張表中也作為主鍵,那此時(shí)無(wú)窮大也變?yōu)榱髓€匙。此時(shí)我們不能看線了。那要怎么分析主鍵和外鍵呢?別急往下看。這里介紹兩個(gè)方法,第一個(gè)比較簡(jiǎn)答,我們把鼠標(biāo)放到這個(gè)線上面,他會(huì)跳出一行提示,在前面的表名是主鍵,后面的是外鍵,最后的是關(guān)系的名字(這個(gè)是我自己看表得出的結(jié)論),還有一個(gè)方法,但是我們事先也要用這個(gè)方法,知道這個(gè)關(guān)系的名字,然后點(diǎn)擊兩個(gè)表中隨便的哪一張表,右擊選擇關(guān)系,找到相應(yīng)的關(guān)系名,然后選擇右邊的表和列規(guī)范,里面就寫明了主外鍵的關(guān)系了。好了就寫到這里了。
總結(jié):
遇到難的我們先不要怕,從最基本的做起,也可以自己建立測(cè)試數(shù)據(jù)來(lái)驗(yàn)證遇到的新的知識(shí)。
相關(guān)文章
SQL設(shè)置SQL Server最大連接數(shù)及查詢語(yǔ)句
今天遇到了關(guān)于Sql Server最大連接數(shù)(Max Pool Size)的問(wèn)題,后來(lái)通過(guò)查找一些資料解決了,所以想著總結(jié)下關(guān)于SQL Server最大連接數(shù)的內(nèi)容,所以這篇文章主要介紹了SQL設(shè)置SQL Server最大連接數(shù)與查詢語(yǔ)句,有需要的朋友們可以參考借鑒。2016-12-12MSSQL 監(jiān)控?cái)?shù)據(jù)/日志文件增長(zhǎng)實(shí)現(xiàn)方法
今天就想實(shí)現(xiàn)這么一個(gè)功能,每天(頻率可以調(diào)整)去收集一下數(shù)據(jù)文件的信息,放到一個(gè)表里面,這樣方便我們分析數(shù)據(jù)文件的增長(zhǎng)演變例程,甚至你可以將數(shù)據(jù)文件的增長(zhǎng)幅度和業(yè)務(wù)變化關(guān)聯(lián)起來(lái)分析2013-08-08SQL Server中使用判斷語(yǔ)句(IF ELSE/CASE WHEN )案例
這篇文章主要介紹了SQL Server中使用判斷語(yǔ)句(IF ELSE/CASE WHEN )案例,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07sqlserver數(shù)據(jù)庫(kù)優(yōu)化解析(圖文剖析)
這篇文章主要介紹了sql數(shù)據(jù)庫(kù)查詢數(shù)據(jù)慢,針對(duì)如何優(yōu)化sqlserver數(shù)據(jù)庫(kù)做介紹,需要的朋友可以參考下2015-07-07SQL Server 總結(jié)復(fù)習(xí) (二)
SQL Server 總結(jié)復(fù)習(xí),學(xué)習(xí)sqlserver的朋友可以參考下2012-08-08sql server數(shù)據(jù)庫(kù)中raiserror函數(shù)用法的詳細(xì)介紹
這篇文章主要介紹了sql server數(shù)據(jù)庫(kù)中raiserror函數(shù)用法的詳細(xì)介紹,raiserror用于拋出一個(gè)異?;蝈e(cuò)誤,讓這個(gè)錯(cuò)誤可以被程序捕捉到。對(duì)此感興趣的可以了解一下2020-07-07SQL?Server刪除重復(fù)數(shù)據(jù)只保留一條的實(shí)現(xiàn)步驟
在進(jìn)行數(shù)據(jù)處理和數(shù)據(jù)分析的過(guò)程中,我們經(jīng)常會(huì)遇到重復(fù)記錄的問(wèn)題,重復(fù)記錄可能會(huì)導(dǎo)致數(shù)據(jù)不準(zhǔn)確,也會(huì)增加數(shù)據(jù)處理的工作量,這篇文章主要給大家介紹了關(guān)于SQL?Server刪除重復(fù)數(shù)據(jù)只保留一條的實(shí)現(xiàn)步驟,需要的朋友可以參考下2024-01-01sqlserver 函數(shù)、存儲(chǔ)過(guò)程、游標(biāo)與事務(wù)模板
SQL 函數(shù)、存儲(chǔ)過(guò)程、游標(biāo)與事務(wù)模板,學(xué)習(xí)sqlserver的朋友很多情況下都需要用得到。2010-08-08