主頁 >  其他 > 資料庫范式

資料庫范式

2020-10-04 01:29:47 其他

文章目錄

    • 什么是范式?
    • 第一范式(1NF)
    • 第二范式(2NF)
        • 函式依賴
        • 完全函式依賴
        • 部分函式依賴
        • 傳遞函式依賴
        • 超關鍵字/超鍵/超碼/碼
        • 候選碼/候選鍵
        • 主鍵
        • 主屬性
        • 非主屬性
    • 第三范式(3NF)
    • BC范式(BCNF)
    • 總結

今天剛好回憶下范式,參考這篇 如何理解關系型資料庫的常見設計范式? 文章,我在此文章進一步改進,

什么是范式?

教材書這樣定義:符合某一種級別的關系模式的集合,表示一個關系內部各屬性之間的聯系的合理化程度,

實話實說,真不懂!!然后看了博主的文章解釋的很好,也就可以理解為:一張資料表的表結構所符合的某種設計標準的級別,就比如王者榮耀的VIP,有VIP1,VIP2,VIP3等等,VPI2是基于VIP1而來的,而不是直接跳過VIP1直到VIP2,所以VIP1的獎勵也可以領取,那么資料庫范式也分為1NF,2NF,3NF,4NF,5NF,還有一種是BCNF,對于3NF進一步改進,

一般而已,對于資料庫的設計,滿足第三范式或者BC范式就足夠了,

第一范式(1NF)

第一范式是對關系模型的最基本的要求,其定義就是資料庫表的每一列都是不可再分割的

舉正例可能看不清楚,舉個反例:

在這里插入圖片描述

如上圖,學生、系、課程這些列還可以再分,所以上表不滿足第一范式,只要不滿足第一范式的表都不是關系型資料庫表,

正確的做法是:(順便插入幾條記錄)

在這里插入圖片描述

僅僅滿足第一范式還是存在很多問題,比如資料冗余過大,插入例外,洗掉問題,修改冗余的問題,

  • 資料冗余過大:一張表中,每個學生的學號,姓名,還有系名,系主任重復出現,
  • 插入例外:假設新建一個系,那么這個系的資訊在還沒學生前不能提前錄入表中,因為沒有主鍵,

注1:根據三種關系完整性約束中物體完整性的要求,關系中的碼(注2)所包含的任意一個屬性都不能為空,所有屬性的組合也不能重復,為了滿足此要求,圖中的表,只能將學號與課名的組合作為碼,否則就無法唯一地區分每一條記錄,

注2:碼:關系中的某個屬性或者某幾個屬性的組合,用于區分每個元組(可以把“元組”理解為一張表中的每條記錄,也就是每一行)

  • 洗掉問題:假設某個系的學生都沒有了,洗掉后那么該系的資訊也都沒有了,實際上,雖然沒有學生了,但不代表這個系不存在,
  • 修改冗余:假設某個學生轉系,那么就得修改他的系資訊,而且還得修改多次,比如上面的小山轉系,那么得修改2次,

所以為了解決這些問題,出現了第二范式,

注:屬性是否真的不可拆分,根據你的設計目標而定,比如說姓名,是否還得繼續拆為性和名呢?看自己,

第二范式(2NF)

要了解第二范式,需要一些前置知識:

函式依賴

定義:若在一張表中,在屬性(或屬性組)X 的值確定的情況下,必定能確定 屬性Y 的值,那么就可以說:Y函式依賴于X,記作 X -> Y

比如上面的表,通過學號就可以確定姓名(一條記錄),那么說明:姓名 依賴于 學號;而通過姓名不一定能確定學號(多條記錄),因為可能有同名,說明:學號 不依賴于 姓名,

大白話:知道某屬性值就可以唯一確定另一屬性的值

完全函式依賴

定義:如果非主屬性B函式依賴于構成某個候選關鍵字的一組主屬性A,而且A的任何一個真子集不能被B函式依賴,則稱B完全函式依賴于A如果已經確定就一個主屬性,那么可以肯定其他屬性完全依賴于該主屬性

比如上面的表,通過學號和課程名就可以確定成績(僅學號或者課程名不能查出成績),所以成績完全函式依賴于學號和課程名,

大白話:通過一個屬性值,能唯一確定某值,如果是屬性組,那么該屬性組中必須所有屬性組合在一起才能確定某屬性值,

部分函式依賴

定義跟上面相反了,定義:若B函式能依賴于A的真子集,則稱B部分函式依賴于A

比如上面的表,通過學號和課程名可以確定姓名,但是單單通過學號也可以確定姓名,所以姓名部分依賴于學號和課程名,

大白話:僅對于屬性組來說,如果屬性組中不需要所有屬性組合在一起就能確定某值

傳遞函式依賴

定義:在 Y 不包含于 Z 且 Y 不函式依賴于 X,假設 Z函式依賴于Y,且Y函式依賴于X,那么就稱Z傳遞函式依賴X

比如上面的表,通過學號可以查出系名,通過系名可以查出系主任,所以通過學號可以查出系主任,所以稱系主任傳遞函式依賴于學號,

超關鍵字/超鍵/超碼/碼

定義:能夠唯一標識一條記錄的屬性或屬性集,

比如上面的表,通過學號可以查出系名,通過學號和姓名也可以查出系名類似這樣的,可以說包含該學號的任意屬性組合都是超鍵,

候選碼/候選鍵

定于:若關系中的一個屬性或屬性組的值能夠唯一地標識一個元組(就是一條記錄),且他的真子集不能唯一的標識一個元組(完全函式依賴),則稱這個屬性或屬性組做候選碼,或者說:能夠唯一標識一條記錄的最小屬性組

比如上面的表,可以通過學號確定某個屬性的值,但是對于成績,僅僅使用學號不夠,還得有課程名才可能獲取成績,其實對于課程名單單使用學號也無法確定,所以對于 學號 和 課程名 這個屬性組就是候選碼,而通過學號和姓名可以確定系名,但是單單通過學號也可以確定,而姓名是多余的,所以姓名不是候選碼,

主鍵

當有多個候選碼時,可以從候選碼中選取一個/或一組作為主鍵,

比如上面的的表,要唯一確定一條記錄,那么得知道 學號 和 課程名,而這兩個都得作為主鍵,

主屬性

在候選碼中挑選,比如候選碼為:(A,B),(A,C),那么主屬性為A,B,C,

非主屬性

包含在任何一個候選碼中的屬性成為主屬性,那么非主屬性也就知道了,

比如上面的表,已經確定 學號 和 課程名 這個屬性組就是候選碼,那么 學號 和 課程名 都是主屬性,那么其他屬性就都是非主屬性,


那么第二范式的定義是:在滿足第一范式的前提下,是否存在非主屬性對于候選碼的部分函式依賴或者說對于所有的非主屬性是完全函式依賴于候選碼,若存在,則資料表最高只符合1NF的要求,若不存在,則符合2NF的要求,(大白話:找主鍵,能夠確定某列的值,但是如果有多個主鍵,看看這些主鍵還要不要拆分,判斷條件:這些主鍵能夠確定某列A的值并且不存在這些主鍵中其中一個就能確定某列A值

判斷的方法是:

  • 第一步:找出資料表中所有的候選碼
  • 第二步:根據第一步所得到的碼,找出所有的主屬性
  • 第三步:資料表中,除去所有的主屬性,剩下的就都是非主屬性了,
  • 第四步:查看是否存在非主屬性對候選碼的部分函式依賴

例子:

  • 第一步:
    • 查看所有每一單個屬性,當它的值確定了,是否剩下的所有屬性值都能確定,
    • 查看所有包含有兩個屬性的屬性組,當它的值確定了,是否剩下的所有屬性值都能確定,
    • ……
    • 查看所有包含了六個屬性,也就是所有屬性的屬性組,當它的值確定了,是否剩下的所有屬性值都能確定,
    • 有一個訣竅(參考的答主說的):如果A是候選碼,那么所有包含A的屬性組就不是碼了,因為碼要求除碼之外的所有屬性都完全函式依賴于碼,但是上面的表,通過學號可以查詢姓名,也可以通過學號和系名查詢姓名或者學號和系主任查詢姓名,那么很明顯,系名或者系主任并不是碼,而學號是碼,這符合答主說的,但是單單使用學號,不能查出課程名和成績,所以除了學號作為碼,還得需要課程名作為碼,通過學號和課程名屬性組作為碼才可以查出成績,所以我認為答主的說法太絕對了,應該這樣說:如果A是碼,并且包含A的屬性組都可以查詢某屬性值,那么說明該包含A的屬性組不是碼,但是如果包含A的屬性組能夠確定單單A查詢不到的某列值,那么說明包含A的屬性組也是碼,(不知道這樣理解對不對…)
  • 第二步:第一步已經分析出候選碼:學號、課程名,那么它們都是主屬性,
  • 第三步:知道了主屬性,那么剩下的都是非主屬性:姓名,系名,系主任,成績,
  • 第四步:
    • (學號,課程名)-> 姓名,但 學號 -> 姓名,所以存在非主屬性對于候選碼的部分函式依賴,
    • (學號,課程名)-> 系名,但 學號 -> 系名,所以存在非主屬性對于候選碼的部分函式依賴,
    • (學號,課程名)-> 系主任,但 學號 -> 系主任,所以存在非主屬性對于候選碼的部分函式依賴,
    • (學號,課程名)-> 成績,非主屬性對于候選碼的完全函式依賴,

所以上表不滿足第二范式,那么需要對表進行拆分,根據上面的分析,可以拆分為:

  • 成績表(學號,課程名,成績)
  • 學生表(學號,姓名,系名,系主任)

現在重新分析這樣是否滿足第二范式:

  • 成績表:學號和課程名是候選鍵,也就是主屬性,成績是非主屬性,單單通過學號或者課程名都查不出成績,所以可以發現不存在非主屬性對于候選碼的部分函式依賴,滿足第二范式,
  • 學生表:學號是候選鍵,也是主屬性,姓名、系名、系主任是非主屬性,因為候選碼只有一個,所以可以確定不存在非主屬性對于候選碼的部分函式依賴,滿足第二范式,

在這里插入圖片描述

現在來看看第一范式存在的問題是否解決:

  • 資料冗余過大:有所改進,但是比如還有多個計算機系的學生,那么系名和系主任兩個列還是重復出現,

  • 插入例外:假設新建一個系,那么這個系的資訊在還沒學生前不能提前錄入表中,因為沒有主鍵,還存在該問題

  • 洗掉問題:假設某個系的學生都沒有了,洗掉后那么該系的資訊也都沒有了,實際上,雖然沒有學生了,但不代表這個系不存在,還存在該問題,

  • 修改冗余:假設某個學生轉系,那么就得修改他的系資訊,而且還得修改多次,比如上面的小山轉系,那么得修改2次,已經解決,因為可以保證學生表中每位學生只出現一次,所以轉系時只需要改一次,

所以在第二范式的基礎上,提出了第三范式來解決這些問題,

第三范式(3NF)

定義:在第二范式的基礎上,消除了非主屬性對于候選碼的傳遞函式依賴,也就是說:要求資料庫表中不包含其他表的非關鍵字資訊(消除冗余的列,或者說非主鍵外的所有欄位必須互不依賴),

分析上面的倆張表:

  • 成績表:主屬性為學號和課程名,非主屬性為成績,不存在非主屬性對候選碼的傳遞函式依賴,滿足第三范式,
  • 學生表:主屬性為學號,非主屬性為姓名、系名和系主任,通過學號可以查出系主任,通過系名可以查出系主任,存在非主屬性對候選碼的傳遞函式依賴,不滿足第三范式,

改進學生表:把學校資訊和系資訊拆分成兩張表:

  • 系表(系名,系主任)
  • 學生表(學號,姓名,系名)

不分析了,很容易看得出滿足第三范式,

在這里插入圖片描述

現在來看看之前的問題是否解決:

  • 資料冗余過大:已經解決,每位學生肯定還得對于一個系名,但至少系主任不會重復出現,

  • 插入例外:假設新建一個系,可以直接錄入系表,已經解決,

  • 洗掉問題:假設某個系的學生都沒有了,洗掉后,該系的資訊還可以存在,除非真要洗掉該系資訊,已經解決,

BC范式(BCNF)

定義:在滿足第三范式的基礎上,消除主屬性對于候選碼的部分與傳遞函式依賴,(大白話:在多個主屬性中,消除多余主屬性

是對于第三范式的改進,上面的第三范式都沒問題的,為什么還得改進?來看看特殊情況:

  1. 某公司有若干個倉庫;
  2. 每個倉庫只能有一名管理員,一名管理員只能在一個倉庫中作業;
  3. 一個倉庫中可以存放多種物品,一種物品也可以存放在不同的倉庫中,每種物品在每個倉庫中都有對應的數量,

那么關系模式 倉庫(倉庫名,管理員,物品名,數量) 屬于哪一級范式?分析一波:

  • 已知函式依賴集:倉庫名 -> 管理員,管理員 -> 倉庫名,(倉庫名,物品名)-> 數量
  • 候選碼:倉庫名、管理員、物品名
  • 非主屬性:數量

可以發現滿足第一范式,并且不存在非主屬性部分函式依賴和傳遞函式依賴于候選碼,所以滿足第三范式,

在這里插入圖片描述

雖然滿足第三范式,但看看有什么問題存在:

  • 假設要為一個倉庫換管理員,那么在上表中可能得修改多次,出現資料冗余,
  • 如果新增一個倉庫,但尚未放入物品,是否可以指派管理員?不可以,因為物品名也是主屬性,得遵守物體完整性約束,
  • 如果一個倉庫被清空后,需要洗掉所有與該倉庫有關的物品存放記錄,那么倉庫本身和管理員也會隨著洗掉,

所有雖然滿足了第三范式,但該表不是一個很好,主要的原因在于:存在著主屬性對于候選碼的部分函式依賴與傳遞函式依賴,也就是:倉庫名 對于 管理員、物品名 存在部分函式依賴與傳遞函式依賴:

  • 部分函式依賴:通過管理員和物品名可以確定倉庫名,通過管理員可以確定倉庫名 或者 通過倉庫名和物品名可以確定管理員,通過倉庫名可以確定管理員,
  • 傳遞函式依賴:倉庫名和物品名可以確定數量,而倉庫名可以確定管理員,那么管理員和物品名也可以確定數量,(多余主屬性)

如何解決?拆表:

  • 倉庫表(倉庫名,管理員)
  • 存庫表(倉庫名,物品名,數量)

可以發現上面存在的問題可以解決,

總結

第一范式:資料庫表中的屬性(或者欄位或者列)不可再分割,

第二范式:在滿足第一范式的前提下,找主鍵,能夠確定某列的值,但是如果有多個主鍵,看看這些主鍵還要不要拆分,判斷條件:這些主鍵能夠確定某列A的值并且不存在這些主鍵中其中一個就能確定某列A值

第三范式:在滿足第二范式的前提下,消除冗余的列,或者說非主鍵外的所有欄位必須互不依賴,

BC范式:在滿足第三范式的前提下,在多個主屬性中,消除多余主屬性,

最好理解范式中出現的問題,并且范式并不是需要絕對遵守的準則,就像姓名這個欄位,可能不需要繼續拆分,可能需要拆為性和名兩個欄位,

有錯請指出

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/153016.html

標籤:其他

上一篇:Unity學習筆記:sqlite資料庫

下一篇:【MySQL必知必會(十七)】【更新和洗掉資料】

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more