1. 程式人生 > >資料庫冗餘欄位的理解。

資料庫冗餘欄位的理解。

       最近在做一個新的小功能,設計了幾個表,在業務的進行中,由於框架的限制,連表查資料需要自己寫sql,單表則不需要,於是引發了我是否在表中寫冗餘欄位來簡化我的程式碼的問題。

       1.冗餘欄位是否就是不能有的?

       不是。冗餘欄位雖然叫冗餘,基於資料庫結構設計的第三正規化,冗餘欄位是不可以出現的,會使資料庫出現多餘的資料。但是在實際的工作過程中,冗餘欄位是可以出現的。多表的關聯查詢,如果表多數量大,就會大大的降低查詢效率,反而會降低使用者體驗。

       2.什麼情況下用冗餘欄位比較合理?

       如果一個欄位修改次數非常少,基本可以忽略不記,並且這個欄位冗餘之後,可以大大的減少工作量,提高工作效率,那這個欄位就可以冗餘。

       反之如果一個欄位經常修改,並且實時記錄,那最好不要冗餘,否則會帶來很多不必要的操作,不停的更新資料。

       總而言之,冗餘欄位是否存在,根本根據是是否可以提高資料庫效率,工作效率,如果在滿足條件的情況下,冗餘欄位是可以出現的。

相關推薦

資料庫理解

       最近在做一個新的小功能,設計了幾個表,在業務的進行中,由於框架的限制,連表查資料需要自己寫sql,單表則不需要,於是引發了我是否在表中寫冗餘欄位來簡化我的程式碼的問題。        1.冗餘欄位是否就是不能有的?        不是。冗餘欄位雖然叫冗餘,基於

資料庫效能優化之的作用

按照第三正規化的要求,是不應該存在冗餘欄位的,但有時候冗餘欄位可以提高效能,是可以使用的。 什麼是冗餘欄位? 在設計資料庫時,某一欄位屬於一個表,但它又同時出現在另一個或多個表,且完全等同於它在其本來所屬表的意義表示,那麼這個欄位就是一個冗餘欄位。 ------------------------------

從tData中刪除過大的+

// 原始物件 var obj = { a: "aaaa", b: 123, c: { c1: "c1c1c1", c2: { }, c3: 123 } } //-----原始物件 console

更新/填充框架rdt-v2

rdt-v2 rdt-v2是一款基於註解構建完成後的關係更新/填充實體欄位的框架,用於管理冗餘欄位關係,進行批量更新或自動填充資料關係,避免重複編寫多次邏輯程式碼的操作 專案地址: 直達 特性: 使用簡單,依賴性低 完成java bean類資料關係的維護 基

Mysql根據資料庫的時間到點更新另外的狀態

需求如下: 新增一條提醒,被提醒人在提醒時間未到達的時候收不到此提醒,提醒時間到了則更改狀態,被提醒人看到該提醒。 我們要做的就是:根據提醒時間與當前系統時間比對,如果提醒時間小於等於當前時間時候,更改狀態為正常狀態值。 實現如下: 1. 開啟event_schedule

Mysql資料庫查詢重複

select * from promotion_hanging_user_info a where (a.handing_activity_id,a.openid) in (select handing_activity_id,openid from promotion_hanging_u

資料庫中敏感的標記、標示

資料治理需要面臨和解決的最重要的問題是,企業這麼多的資料庫,每個資料庫這麼多的表,每個表這麼多的欄位,如何進行資訊資產的分類分級。 通過以下方法,可以自動的取企業所有資料庫、所有表、所有欄位,根據欄位的值,利用正則表示式等方式判斷此欄位是否屬於使用者敏感資訊,如姓名、手機、地址、身份證等。 最終形成資料的

字串存入資料庫date型別

有時候為了計算方便等原因需要將時間以date格式存入資料庫,但是前臺傳過來的資料型別都是字串,如果將字串直接插入date型別的欄位中會拋:ORA-01861: 文字與格式字串不匹配。 前臺頁面有一個表單,如下所示: <form action="......" method="get"&

MySQL資料庫從身份證擷取生日

id_card_no 身份證  birthday 生日  表名 basic_info UPDATE basic_info SET birthday = STR_TO_DATE(CONCAT(SUBSTRING(id_card_no,7,4),'-',SUBSTRING(

Magento 更改已有模組的資料庫表的資訊

比如要擴大模組對應的表的姓名一列的長度 1、首先增加指定模組的sql檔案,一般是模組名/sql/xxx_setup/upgrade_old_new.php old表示上一版本號,new代表本次版本號,new必須大於old,比如upgrade_1.0.0_1.1.0.php 2、編輯sql

判斷資料庫某一個用逗號分開裡面是否有重複

String[] arr = goodsList.split(",");  //先擷取按照逗號擷取 for(int i = 0;i < arr.length-1;i++){ //迴圈開始元素 for(int j = i + 1;j < arr.length;j++){ //迴圈

php 修改資料庫表的的值

php 前端傳遞引數,遍歷資料庫表的欄位後根據條件進行修改。 <?php header("Content-Type:text/html;charset=utf8"); head

資料庫中的無法增刪改

   前沿       進行機房重構有一段時間了,進行機房資料庫是必不可少的,我們在執行機房的同時也要把相應的資料存入資料庫,同樣,我們也需要資料庫裡的資料進行增刪改,可是我遇到了一個關於資料庫的問題... &nb

MYSQL資料庫 的 decimal 型別 和 Java 的BigDecimal

mysql中的decimal , 在java中的用BigDecimal表示的。   decimal decimal(18,0) 18是定點精度,0是小數位數。 decimal(a,b) a指定指定小數點左邊和右邊可以儲存的十進位制數字的最大個數,最大精度38。 b指定

spring boot整合mybatis查詢資料庫返回Map為空不返回解決

1.出現問題原因 原因1:mybatis的配置即mapper返回對映配置。 原因2:jackson的配置即@ResponseBody序列化配置。 2.解決方式 步驟1:解決原因1 mybatis:configuration: call-setters

用generator 根據oracle表生成java程式碼,資料庫與程式碼不一致

前兩天用generator生成java程式碼時發現,生成的javabean和資料庫裡的欄位對應不上,不是少幾個就是有幾個欄位不一樣,感覺很怪異,後來發現日誌裡邊這個錶轉換成bean是日誌列印了好幾遍,所有怪事都是有原因的,我開始研究generator原始碼。 用IDEA跟蹤

資料庫設計之型別

1.一般的一個數據庫中欄位的型別有text,int,tinyint,datetime,vachar,char這幾個 2.它們的長度一般設定為: 型別       長度     小數點 text--》0          (存放文字,文章) datetime--》長度,

ODBC:Datetime 溢位秒的小數精度超出了在引數繫結中指定的小數位數

在使用ODBC將SQL_TIMESTAMP_STRUCT格式的資料儲存到MS SQL Server的datetime欄位時,報如下錯誤: Datetime 欄位溢位。秒的小數精度超出了在引數繫結中指定的小數位數。  C++程式碼如下: void execSql(SQ

Oracle資料庫中clob轉成MD5碼,並能在where條件或者group中使用

轉載自:https://blog.csdn.net/siyouzi/article/details/29589613   1.建立java source ------------Java source------------------------ create or repl

讓天下沒有難用的資料庫 » innodb中大的限制

今天開發在匯入資料的時候報一個錯誤: 表結構大致如下: 發現匯入的資料單行長度較長。 檢視官方文件的解決辦法為: Solution: 1.divide your table into small ones. If one table contain more than 10 text colum