4個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,帶你了解產(chǎn)品數(shù)據(jù)的增刪改查應(yīng)該怎么設(shè)計(jì)

1 評(píng)論 8516 瀏覽 62 收藏 17 分鐘

數(shù)據(jù)庫(kù)對(duì)于產(chǎn)品經(jīng)理來(lái)說(shuō)是一個(gè)既熟悉又陌生的概念,雖然產(chǎn)品設(shè)計(jì)中的數(shù)據(jù)基本都要與數(shù)據(jù)庫(kù)交互,但平時(shí)的工作中也很少接觸到數(shù)據(jù)庫(kù)的具體操作和細(xì)節(jié)。本文作者通過(guò)4個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,介紹了數(shù)據(jù)庫(kù)對(duì)產(chǎn)品數(shù)據(jù)增、刪、改、查設(shè)計(jì)的指導(dǎo)意義,希望能給你帶來(lái)幫助。

都說(shuō)產(chǎn)品經(jīng)理要懂?dāng)?shù)據(jù)庫(kù),那么今天就通過(guò)4個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,來(lái)講講了解數(shù)據(jù)庫(kù)對(duì)產(chǎn)品數(shù)據(jù)增、刪、改、查設(shè)計(jì)的指導(dǎo)意義。

數(shù)據(jù)庫(kù),對(duì)于產(chǎn)品經(jīng)理來(lái)說(shuō),是一個(gè)既熟悉又陌生的概念。熟悉是因?yàn)楫a(chǎn)品設(shè)計(jì)中的數(shù)據(jù)基本都需要與數(shù)據(jù)庫(kù)交互,陌生是因?yàn)槠綍r(shí)工作中很少接觸到數(shù)據(jù)庫(kù)的具體操作和細(xì)節(jié)。但是,了解一些數(shù)據(jù)庫(kù)的基本知識(shí)和常用語(yǔ)句,可以幫助產(chǎn)品經(jīng)理更好地理解數(shù)據(jù)的來(lái)源和流向,更有效地溝通數(shù)據(jù)需求和問(wèn)題,更快速地驗(yàn)證數(shù)據(jù)分析的結(jié)果。因此,產(chǎn)品經(jīng)理需要懂得一定的數(shù)據(jù)庫(kù)知識(shí),才能更好地發(fā)揮數(shù)據(jù)在產(chǎn)品設(shè)計(jì)中的價(jià)值。

我們先通過(guò)一張圖來(lái)簡(jiǎn)單了解一下數(shù)據(jù)庫(kù)是什么。

4個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,帶你了解產(chǎn)品數(shù)據(jù)的增刪改查應(yīng)該怎么設(shè)計(jì)

數(shù)據(jù)庫(kù)是一種用于存儲(chǔ)和管理數(shù)據(jù)的軟件系統(tǒng)。數(shù)據(jù)庫(kù)中的數(shù)據(jù)通常按照一定的結(jié)構(gòu)組織,形成表(table)和字段(field)。表是數(shù)據(jù)的集合,字段是數(shù)據(jù)的屬性。訪問(wèn)用戶(user)是指可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的人或程序,例如查詢、插入、修改或刪除數(shù)據(jù)。訪問(wèn)用戶需要通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)來(lái)連接數(shù)據(jù)庫(kù),并遵循數(shù)據(jù)庫(kù)的安全規(guī)則和權(quán)限設(shè)置。

了解以上的信息,我們就可以進(jìn)入正題了。

一、INSERT INTO

INSERT INTO table_name VALUES(value1,value2,value3);

以上是數(shù)據(jù)庫(kù)的插入語(yǔ)句,它表示往指定的數(shù)據(jù)表中新增一條新數(shù)據(jù),它對(duì)應(yīng)的前端操作就是用戶在系統(tǒng)中的“新建”操作,比如便簽應(yīng)用中新建一條新便簽,或者電商平臺(tái)中提交一筆新訂單等。

數(shù)據(jù)庫(kù)插入語(yǔ)句的執(zhí)行效率受多種因素的影響,其中最主要的有數(shù)據(jù)量和操作的數(shù)據(jù)表數(shù)量。數(shù)據(jù)量越大,插入語(yǔ)句需要處理的數(shù)據(jù)越多,因此執(zhí)行時(shí)間也會(huì)越長(zhǎng)。操作的數(shù)據(jù)表數(shù)量也會(huì)影響插入語(yǔ)句的效率,因?yàn)槊總€(gè)數(shù)據(jù)表都需要進(jìn)行索引更新、約束檢查等操作,這些操作會(huì)消耗系統(tǒng)資源和時(shí)間。

因此,產(chǎn)品經(jīng)理在設(shè)計(jì)需要收集數(shù)據(jù)量較多的表單的時(shí)候,一般建議做分步填寫(xiě)保存。例如以下某網(wǎng)站的認(rèn)證流程。

4個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,帶你了解產(chǎn)品數(shù)據(jù)的增刪改查應(yīng)該怎么設(shè)計(jì)

分步填寫(xiě)保存的好處是:

  • 填寫(xiě)內(nèi)容分散,不會(huì)讓用戶因?yàn)樵谝粋€(gè)頁(yè)面看到需要填寫(xiě)太多內(nèi)容而覺(jué)得恐慌和焦慮。用戶可以按照自己的節(jié)奏和順序,逐步完成所需信息的填寫(xiě)。
  • 如用戶因?yàn)榫W(wǎng)絡(luò)問(wèn)題等被迫中斷填寫(xiě),已經(jīng)填寫(xiě)的數(shù)據(jù)會(huì)進(jìn)行保存,不需要用戶重新填寫(xiě)。用戶可以隨時(shí)回到上一步或跳到下一步,繼續(xù)之前的操作。
  • 將所有的數(shù)據(jù)分散插入到數(shù)據(jù)庫(kù),數(shù)據(jù)量小,提升插入語(yǔ)句的執(zhí)行效率。數(shù)據(jù)庫(kù)可以更快地處理和存儲(chǔ)用戶的數(shù)據(jù),避免出現(xiàn)延遲或錯(cuò)誤。
  • 開(kāi)發(fā)設(shè)計(jì)時(shí),可以根據(jù)業(yè)務(wù)劃分不同的數(shù)據(jù)庫(kù)表,每步只操作對(duì)應(yīng)的表,減少一次性對(duì)多個(gè)數(shù)據(jù)庫(kù)表進(jìn)行操作。這樣可以簡(jiǎn)化開(kāi)發(fā)流程,提高代碼質(zhì)量和可維護(hù)性。

二、DELETE

DELETE FROM table_name;

以上是數(shù)據(jù)庫(kù)的刪除語(yǔ)句,它表示從指定的數(shù)據(jù)表中刪除數(shù)據(jù)。它對(duì)應(yīng)的前端操作就是用戶在系統(tǒng)中的“刪除”操作。比如刪除便簽、刪除訂單等。

刪除無(wú)論對(duì)于什么樣的系統(tǒng),都是一個(gè)危險(xiǎn)操作,一般刪除后的數(shù)據(jù)都無(wú)法找回,是一個(gè)不可逆的操作,因此要求產(chǎn)品經(jīng)理在設(shè)計(jì)刪除操作功能時(shí),需要盡可能讓用戶意識(shí)到此操作的危險(xiǎn)性,引起用戶的關(guān)注,關(guān)于這塊,有興趣的用戶可以參閱:《誰(shuí)動(dòng)了我的文案:一個(gè)刪除確認(rèn)文案,難倒多少產(chǎn)品大漢》。

以上說(shuō)的是傳統(tǒng)的“硬刪除”操作,后來(lái)隨著人們對(duì)數(shù)據(jù)越來(lái)越重視,對(duì)于在數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)的行為慎之又慎,因此出現(xiàn)了一種新的操作,叫做“軟刪除”。

軟刪除是一種數(shù)據(jù)保護(hù)技術(shù),它可以使數(shù)據(jù)在被刪除后仍然保留在數(shù)據(jù)庫(kù)中,但對(duì)用戶不可見(jiàn)。軟刪除的好處是可以恢復(fù)誤刪的數(shù)據(jù),或者進(jìn)行數(shù)據(jù)分析和審計(jì)。軟刪除的實(shí)現(xiàn)方法有多種,例如使用標(biāo)記字段、使用時(shí)間戳、使用單獨(dú)的表等。

換句話說(shuō),軟刪除是“假刪除”,并不是真正意義上的刪除數(shù)據(jù),而是將要?jiǎng)h除的數(shù)據(jù)標(biāo)記為“已刪除”的狀態(tài),在前端查詢的時(shí)候,這些數(shù)據(jù)不會(huì)被查出來(lái),從用戶的角度來(lái)看,這條數(shù)據(jù)就是已經(jīng)刪除掉了。

軟刪除有以下好處:

  • 可以恢復(fù)誤刪的數(shù)據(jù),提高數(shù)據(jù)安全性。
  • 可以保留數(shù)據(jù)的歷史記錄,便于分析和審計(jì)。
  • 可以避免數(shù)據(jù)完全刪除后造成的外鍵約束或級(jí)聯(lián)刪除問(wèn)題。

同時(shí)也有以下弊端:

  • 占用額外的存儲(chǔ)空間,可能影響數(shù)據(jù)庫(kù)性能。
  • 增加查詢和更新的復(fù)雜度,需要考慮標(biāo)記字段的條件。
  • 可能導(dǎo)致數(shù)據(jù)不一致或冗余,需要定期清理或歸檔。

因此,產(chǎn)品經(jīng)理應(yīng)該根據(jù)不同的業(yè)務(wù)場(chǎng)景來(lái)區(qū)分哪些數(shù)據(jù)應(yīng)該軟刪除,哪些數(shù)據(jù)可以硬刪除,不應(yīng)該“一刀切”地全部做成軟刪除或硬刪除的設(shè)計(jì)。

三、UPDATE

UPDATE table_name SET column1=value1,column2=value2;

以上是數(shù)據(jù)庫(kù)的更新語(yǔ)句,它表示將數(shù)據(jù)表中的目標(biāo)字段內(nèi)容修改為指定的內(nèi)容。它對(duì)應(yīng)的前端操作就是用戶在系統(tǒng)中的“修改”或“更新”操作。比如修改便簽內(nèi)容,或更新訂單狀態(tài)等。

更新語(yǔ)句的執(zhí)行效率和插入語(yǔ)句一樣,主要受限于更新的數(shù)據(jù)量和操作的數(shù)據(jù)表數(shù)量,同時(shí)也受限于每條語(yǔ)句需要更新的字段數(shù)量。因此,產(chǎn)品經(jīng)理在設(shè)計(jì)修改功能的時(shí)候,建議與“新建”一樣,考慮按照業(yè)務(wù)或信息屬性分開(kāi)修改。

如下圖是某平臺(tái)個(gè)人中心的界面截圖,常規(guī)資料、密碼設(shè)置、更多資料分別在不同的標(biāo)簽中填寫(xiě)和保存,而不是全部放在一個(gè)長(zhǎng)頁(yè)面中進(jìn)行修改。

4個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,帶你了解產(chǎn)品數(shù)據(jù)的增刪改查應(yīng)該怎么設(shè)計(jì)

下圖是另外一個(gè)平臺(tái)個(gè)人中心的界面截圖,也是相似的設(shè)計(jì),不過(guò)這個(gè)平臺(tái)的設(shè)計(jì)更加激進(jìn),是按每個(gè)字段分開(kāi)修改的,這種操作效率比較低,但針對(duì)個(gè)人資料的修改,倒是無(wú)傷大雅,畢竟個(gè)人資料這些信息,一旦填寫(xiě)之后,基本不會(huì)修改或很少修改,修改時(shí)也只是修改其中的某個(gè)信息,但在其他的業(yè)務(wù)場(chǎng)景下,采用這種設(shè)計(jì)時(shí)需要謹(jǐn)慎,一般建議按業(yè)務(wù)模塊或信息屬性分類修改,像這種按字段分開(kāi)修改的設(shè)計(jì),只適用于字段較少的場(chǎng)景。

4個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,帶你了解產(chǎn)品數(shù)據(jù)的增刪改查應(yīng)該怎么設(shè)計(jì)

更新語(yǔ)句的執(zhí)行效率也受單個(gè)語(yǔ)句更新的字段數(shù)量影響,我們都知道,在進(jìn)行修改操作的時(shí)候,系統(tǒng)都會(huì)先將之前的數(shù)據(jù)讀取出來(lái)并讓用戶在此基礎(chǔ)上進(jìn)行修改并保存。

如下圖,一般情況下,我們?cè)谛薷男畔⒌臅r(shí)候,哪怕只是改了其中某個(gè)字段的某個(gè)字,但系統(tǒng)在執(zhí)行更新語(yǔ)句時(shí),卻需要更新全部字段,這個(gè)過(guò)程對(duì)用戶而言是沒(méi)有感知的,而對(duì)系統(tǒng)卻是實(shí)實(shí)在在花費(fèi)了時(shí)間去執(zhí)行,如果更新的字段足夠多,用戶也會(huì)有明顯的感知:明明我只改了一個(gè)字,為什么還是需要保存那么長(zhǎng)時(shí)間?

4個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,帶你了解產(chǎn)品數(shù)據(jù)的增刪改查應(yīng)該怎么設(shè)計(jì)

因此,在某些修改信息的場(chǎng)景下,產(chǎn)品經(jīng)理也會(huì)要求研發(fā)工程師先判斷哪些字段是被用戶修改過(guò)的,針對(duì)沒(méi)有修改過(guò)的字段,在執(zhí)行更新語(yǔ)句時(shí),就不更新對(duì)應(yīng)字段的數(shù)據(jù)。當(dāng)然,對(duì)字段是否被修改進(jìn)行判斷,也會(huì)花費(fèi)一定的時(shí)間,所以,產(chǎn)品經(jīng)理應(yīng)事先與研發(fā)工程師經(jīng)過(guò)溝通后,再確定具體使用什么樣的方案更合適。

四、SELECT

SELECT * FROM table_name;

以上是數(shù)據(jù)庫(kù)的查詢語(yǔ)句,它表示從指定數(shù)據(jù)表中查詢所有數(shù)據(jù)。它對(duì)應(yīng)的前端操作不一定是用戶在系統(tǒng)中進(jìn)行搜索,比如進(jìn)入訂單頁(yè)面就會(huì)看到所有訂單,這個(gè)時(shí)候雖然用戶沒(méi)有進(jìn)行搜索,但是系統(tǒng)依然需要在數(shù)據(jù)庫(kù)中查詢出訂單數(shù)據(jù)。

查詢是系統(tǒng)中最常用的操作,我們?cè)谙到y(tǒng)中看到的所有來(lái)自數(shù)據(jù)庫(kù)的數(shù)據(jù)都是通過(guò)查詢得到的。以上提到的3個(gè)語(yǔ)句也經(jīng)常要跟查詢語(yǔ)句一起用,比如注冊(cè)賬號(hào)時(shí),在往數(shù)據(jù)庫(kù)添加新的賬號(hào)信息前,需要先查詢賬號(hào)存不存在;修改和刪除數(shù)據(jù)時(shí),需要先從數(shù)據(jù)庫(kù)中查詢到目標(biāo)數(shù)據(jù),才能夠進(jìn)行修改和刪除操作。

查詢同樣受限于數(shù)據(jù)量、查詢的數(shù)據(jù)表以及查詢的字段數(shù)量,產(chǎn)品經(jīng)理在設(shè)計(jì)查詢功能時(shí),要求根據(jù)業(yè)務(wù)只查詢必要的字段,而不是動(dòng)不動(dòng)就一次性將數(shù)據(jù)表中所有的字段都查出來(lái)。比如我們可以看到很多電商平臺(tái)的訂單列表,進(jìn)入訂單列表的時(shí)候,我們并不是看到訂單的所有信息,而是訂單的簡(jiǎn)要信息,比如訂單號(hào)、金額、產(chǎn)品名稱和封面圖等,當(dāng)我們點(diǎn)擊訂單之后,才會(huì)看到更多的信息,比如地址、物流、付款方式、價(jià)格組成、發(fā)票、各個(gè)節(jié)點(diǎn)的時(shí)間等。

另一方面,產(chǎn)品經(jīng)理設(shè)計(jì)查詢功能時(shí),應(yīng)盡可能減少聚合搜索的設(shè)計(jì)。

如下圖所示某業(yè)務(wù)平臺(tái)的訂單搜索模塊,該平臺(tái)通過(guò)一個(gè)搜索框,就可以對(duì)訂單的多個(gè)信息進(jìn)行搜索,在這種情況下,當(dāng)用戶進(jìn)行搜索的時(shí)候,系統(tǒng)需要同時(shí)對(duì)多個(gè)字段進(jìn)行查詢,甚至可能要同時(shí)對(duì)多個(gè)數(shù)據(jù)表進(jìn)行查詢,這種查詢是非常耗費(fèi)資源和時(shí)間的操作。

4個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,帶你了解產(chǎn)品數(shù)據(jù)的增刪改查應(yīng)該怎么設(shè)計(jì)

設(shè)計(jì)時(shí),建議采用下圖這種,將每個(gè)字段分開(kāi),只查詢用戶輸入了內(nèi)容的條件,并且每個(gè)輸入框只針對(duì)某個(gè)數(shù)據(jù)表的某個(gè)字段進(jìn)行搜索,比如用戶只輸入了手機(jī)號(hào),系統(tǒng)就只需要查詢手機(jī)號(hào)這個(gè)字段,可以有效提升搜索效率,并且減輕服務(wù)器的負(fù)擔(dān)。

4個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,帶你了解產(chǎn)品數(shù)據(jù)的增刪改查應(yīng)該怎么設(shè)計(jì)

當(dāng)然,這并非說(shuō)聚合搜索就是不可取的,相反,它對(duì)提升用戶的體驗(yàn)有非常好的效果,所以需要根據(jù)場(chǎng)景進(jìn)行設(shè)計(jì)。一般建議 B 端的產(chǎn)品盡可能減少聚合搜索;C 端產(chǎn)品,在適當(dāng)?shù)奈恢每梢圆捎镁酆纤阉?;而移?dòng)端的產(chǎn)品設(shè)計(jì),基本上都會(huì)優(yōu)先考慮采用聚合搜索,因?yàn)橐苿?dòng)端屏幕小,展示一堆的查詢條件對(duì)用戶來(lái)講體驗(yàn)非常糟糕,但是,在設(shè)計(jì)查詢條件時(shí),還是要根據(jù)實(shí)際的業(yè)務(wù)場(chǎng)景,盡可能減少聚合搜索的字段數(shù)量和數(shù)據(jù)表數(shù)量。

五、WHERE

通過(guò)以上4個(gè)語(yǔ)句,我們已經(jīng)把產(chǎn)品數(shù)據(jù)中的增、刪、改、查都講完了,但以上所講到的內(nèi)容,還缺少一個(gè)關(guān)鍵,就是“約束”。

新增數(shù)據(jù)時(shí)沒(méi)有約束,就會(huì)往數(shù)據(jù)庫(kù)添加相同的數(shù)據(jù),如果是在注冊(cè)場(chǎng)景下,沒(méi)有增加判斷注冊(cè)賬號(hào)是否存在的約束,那么就會(huì)出現(xiàn)相同的賬號(hào);

刪除數(shù)據(jù)時(shí)沒(méi)有約束,就會(huì)將整個(gè)數(shù)據(jù)表中的所有數(shù)據(jù)刪除掉;

修改數(shù)據(jù)時(shí)沒(méi)有約束,就會(huì)將整個(gè)數(shù)據(jù)表中的所有數(shù)據(jù)都改成相同的值;

查詢數(shù)據(jù)時(shí)沒(méi)有約束,會(huì)影響數(shù)據(jù)的查詢速度和查詢時(shí)間。

對(duì)于數(shù)據(jù)庫(kù)語(yǔ)句而言,這個(gè)“約束”,就是“WHERE”,一個(gè)語(yǔ)句后面帶上“WHERE”,表示是這個(gè)語(yǔ)句執(zhí)行的約束條件。

比如下方的語(yǔ)句表示刪除 ID = 1 的數(shù)據(jù):

DELETE FROM table_name WHERE ID = 1;

如果沒(méi)有添加這個(gè)約束條件,那么執(zhí)行刪除語(yǔ)句的時(shí)候,就會(huì)將整個(gè)數(shù)據(jù)表內(nèi)的數(shù)據(jù)刪除掉,可想而知,這個(gè)后果是多么嚴(yán)重。

因此,產(chǎn)品經(jīng)理在進(jìn)行與產(chǎn)品數(shù)據(jù)交互有關(guān)的設(shè)計(jì)時(shí),一定要在需求文檔中寫(xiě)清楚約束條件,比如新增數(shù)據(jù)時(shí),哪些情況下不允許新增。如果沒(méi)有這些約束條件,對(duì)數(shù)據(jù)而言,造成的后果,可能是災(zāi)難性的。

以上便是本文全部?jī)?nèi)容,感謝閱讀。

專欄作家

產(chǎn)品錦李,公眾號(hào):產(chǎn)品錦李(ID:IMPM996),人人都是產(chǎn)品經(jīng)理專欄作家。不務(wù)正業(yè)的產(chǎn)品經(jīng)理和他的產(chǎn)品設(shè)計(jì)。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自Unsplash,基于CC0協(xié)議。

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. b端產(chǎn)品對(duì)數(shù)據(jù)庫(kù)操作了解深入一些

    來(lái)自廣東 回復(fù)