請高人指點 我的資料庫表規範化設計有沒有問題?

2025-01-27 01:55:18 字數 3981 閱讀 6772

1樓:網友

增刪改異常和資料庫設計沒什麼關係,只是你的資料庫設計有點亂,我建議一下:

車輛(車牌號、名稱、行車本號、發動機號、車廠日期、保險有效期、車檢有效期、養路費有效期)

-賣主表、客戶表可以合為乙個,類別用來儲存「賣主」和「客戶」

使用者(賣主編號、姓名、**、手機、住址、身份證號,類別)

修理廠(廠編號、廠名、廠址、**)

採購入庫(廠牌號、付款方式、採購日期、採購價、油費、過橋費、雜費、維修保養費,合計)

維修保養(專案編號、專案名稱、維修保養費用、專案日期、車牌號、修理廠編號)

銷售(車牌號、客戶編號、售價、收款方式、銷售日期)

辦公用品(用品編號、用品名稱、金額、購買日期)

禮品(禮品編號、名稱、金額)

-你的經營費設計極為不合理,應該這麼設計:

類別用於存放:職工工資、房租、辦公用品費、禮品費、招待費。

合計一般用來統計就行了,沒必要設計在表裡面,可以用檢視來統計,這樣就當作乙個統計檢視來獲取合計。

經營費用(日期 費用 類別)

同理,採購入庫 這個表裡面的費用,也可以參照經營費用,不過不知道你這些費用是否也是按照日期來發生的。

2樓:網友

當你的表滿足資料庫中第二正規化就可以消除增刪改異常。而且一般設計資料庫的時候滿足第三正規化就ok了,再高了雖然更好,但是意義不大。

要判斷你的各個表是否滿足第二正規化,可以根據:資料庫表中不存在非關鍵欄位對任一候選關鍵欄位的部分函式依賴(部分函式依賴指的是存在組合關鍵字中的某些欄位決定非關鍵欄位的情況),也即所有非關鍵欄位都完全依賴於任意一組候選關鍵字。 滿足此條件的是滿足第二正規化的。

好像比較難懂。跟你分析幾個吧。

例如你的車輛表:

車牌號應該是主鍵,那麼其他的屬性,例如名稱,車號,發動機號等等所有其他的屬性都應該由車牌號唯一確定。我不知道你的名稱代表著什麼,假如名稱也能唯一確定車的其他屬性的話,那麼就不符合第二正規化。如果不能確定車的其他屬性,那麼就符合第二正規化。

第二個表明顯有問題。賣主編號和身份證號都能唯一確定乙個賣主,存在兩個主鍵,不符合第二正規化。當你增刪的時候會出現問題。

同理,第三個也一樣會出現問題。

第四個沒有問題。

採購入庫相當於乙個過渡的表,這個沒必要太在乎。

後面的你自己依照前面的例子分辨下。

注:第二正規化的意思其實就是的意思是主鍵且只有主鍵才能唯一確定其他的屬性。

注:主鍵是唯一可以確定其他屬性的屬性或者屬性組。

資料庫設計需要遵守的設計規範?

3樓:北大青鳥志遠科技

資料庫的開發對於後臺程式設計程式設計師來說是必備能力之一了,而今天我們就一起來了解一下,關於資料庫開發的設計規範都有哪些型別,北京北大青鳥希望通過對本文的閱讀,大家對於資料庫開發有更多的瞭解。

一、資料庫命令規範。

所有資料庫物件名稱必須使用小寫字母並用下劃線分割。

所有資料庫物件名稱禁止使用mysql保留關鍵字(如果表名中包含關鍵字查詢時,需要將其用單引號括起來)

資料庫物件的命名要能做到見名識意,並且後不要超過32個字元。

臨時庫表必須以tmp_為字首並以日期為字尾,備份表必須以bak_為字首並以日期(時間戳)為字尾。

所有儲存相同資料的列名和列型別必須一致(一般作為關聯列,如果查詢時關聯列型別不一致會自動進行資料型別隱式轉換,會造成列上的索引失效,導致查詢效率降低)

二、資料庫基本設計規範。

1、所有表必須使用innodb儲存引擎。

沒有特殊要求(即innodb無法滿足的功能如:列儲存,儲存空間資料等)的情況下,所有表必須使用innodb儲存引擎(之前預設使用myisam,以後預設的為innodb)innodb支援事務,支援行級鎖,更好的恢復性,高悄態判併發下效能更好。

2、資料庫和表的字符集統一使用utf8

相容性更好,統一字符集可以避免由於字符集轉換產生的亂碼,不同的字符集進行比較前需要進行轉換會造成索引失效。

3、所有表和欄位都需要新增註釋。

使用comment從句新增表和列的備註從一開始就進行資料字典的維護。

4、儘量控制單表資料量的大小,建議控制在500萬以內。

500萬並不是mysql資料庫的限制,過大會造成修改表結構,備份,恢復都會有很大的問題。

可以用歷史資料歸檔(應用於日誌資料),分庫分表(應用於業務資料)等手段來控制資料量大小。

5、謹慎使用mysql分割槽表。

分割槽表在物理上表現為多個檔案,在邏輯上表現為乙個表謹慎選擇分割槽鍵閉團,跨分割槽查詢效率可能更低建議採用物理分表的方式管理大資料。

6、儘量做到冷熱資料分離,減小表的寬度。

mysql限制每個表多儲存4096列,並且每一行資料的大小不能超過65535位元組減少磁碟io,保證熱資料的記憶體快取命中率(表越寬,把表裝載進記憶體緩衝池時所佔用的記憶體啟改也就越大,也會消耗更多的io)更有效的利用快取,避免讀入無用的冷資料經常一起使用的列放到乙個表中(避免更多的關聯操作)

理解什麼是資料庫規範化

4樓:網友

規範化是對資料庫資料進行有效組織的過程。規範化過程的兩個主要目的是:消內除冗餘資料(如把相容同的資料儲存在超過乙個表裡)和確保資料的依賴性處於有效狀態(相關資料只儲存在乙個表裡)。

這兩個目標的實現很有意義,因為能夠減少資料庫和表的空間消耗,並確保資料儲存的一致性和邏輯性。

正規化國際資料庫界制定了一系列構建資料庫必須遵循的特殊規則,以確保資料庫的規範化。在關聯式資料庫裡,這種規則就是正規化,在資料庫的世界裡用數字來定義不同級別的正規化,從低到高共分為五種:第一正規化(簡稱1nf)、第二正規化(2nf)、第三正規化(3nf)、第四正規化(4nf)和第五正規化(5nf)。

第一正規化需要滿足的要求最低,第二正規化在第一正規化的基礎上增加了更多的要求,以此類推。在實際應用當中,最常見的是第一正規化、第二正規化和第三正規化。

理解什麼是資料庫規範化

5樓:網友

理解資料庫規範化的意義塌早此。

techtarget中國原創】資料庫規範化是由edgar frank codd提出的,他是ibm公司的一位電腦科學家,他在自己的**《20世紀70年代大型共享資料銀行資料關係模型》中首次提出這種說法。資料庫規範化是乙個過程,這個過程中需要對現存表結構進行修改,把錶轉化使遵循一系列先進的正規化。

它著重於消除開發人員和他們專案的「電子**綜合症」。電子**綜合症是指開發人員傾向於在儘可能少的表中擠下儘可能多的資訊。

早些時候,由於受電子**的概念以及在電子**中管理資料思路的影響,開發人員們一直採用與涉及電子**相同的思路設計mysql資料庫。現在,再用這種方法設計mysql資料庫被認為是不明智的做法,因為這團迅種電子**綜合症設計的表在每次資料庫有很小的改變時,都要持續不斷地進睜毀行重新設計。

在mysql中實現資料庫規範化的好處。

通過智慧型資料分類,降低儲存空間使用量是對mysql實現資料庫規範化的眾多好處之一。它幫助實現了更好,更快,更強的搜尋功能,因為它與早期基於混合實體的搜尋方式相比,需要掃瞄更少的實體。通過資料庫規範化,資料完整性也得以改善,因為它把所有資料分成單獨的實體,並用關聯資料在實體間建立強連線。

mike hillyer是之前mysql ab的一位技術作家,他解釋說:「資料庫規範化的目標是確保每個表中所有非鍵列都直接依賴於主鍵:整個都是鍵,除了鍵沒有其它。

有了這個目標,隨之而來還有一些好處,我們降低了冗餘,減少了異常,提高了效率。」

資料規範化很容易做到。

下面的例子將說明資料庫規範化如何幫助實現mysql中的良好設計。下面的表展示了需要在資料庫中捕獲的資料。

chad russell is a programmer and system administrator who owns his own internet hosting company. jon stephens is a member of the mysql ab documentation team.

在上面展示的例子中,如果任意乙個條件作為識別主鍵的話,會有大量的儲存空間被浪費掉。因此,資料庫規範化是必不可少的。這是乙個循序漸進的過程,不能隨意進行。

請高人指點我的生辰是什麼,請高人指點我的生辰八字是什麼?

官 殺 日 傷e69da5e6ba9062616964757a686964616f31333330336364 四柱八字 乙丑 甲申 戊戌 辛酉 坤造 辰巳空亡 癸辛己 庚壬戊 辛丁戊 辛 財傷劫 食才比 傷印比 傷 寄生旺衰 養 病 墓 死 納音五行 海中金 泉中水 平地木 石榴木 四柱神煞 天德...

設定資料庫表之間的關係有什麼用資料庫建立表間關聯有什麼作用

主鍵用來唯一標識表中的記錄 唯一鍵類似於主鍵,在整個表中只包含唯一值的欄位上建立唯一鍵 唯一鍵可確保整個表中的唯一性。主鍵總是唯一的,或者至少是唯一鍵 然而,主鍵也用於定義表之間的關係,唯一鍵不用於定義表之間的關係。外來鍵是在子表中建立的主鍵的副本,用於組成表間關係的連結的對立面 建立關聯式資料庫關...

vf建立資料庫資料表和表間的永久關係

你先建立一bai個ss.dbc的資料庫,會彈出du這個資料庫的設zhi計器。在這個資料庫設dao計器上單版擊右鍵,選擇 新權建表 建立xs.dbf表,在表設計器中按 營業員編號 欄位建立索引,最好是主索引,輸入資料。同樣再建立ry.dbf表,也按 營業員編號 建立索引,這個是普通索引就可以了。在資料...