iT邦幫忙

0

資料庫 schema的設計問題(A欄位根據其他的B欄位值的y/n決定是否要插入值)

  • 分享至 

  • xImage

目前設計一個頁面會記錄是否要針對該漏洞進行開單並插入到DB TABLE如下範例。

如果需開單的話會將isEvent紀錄為y且會輸入單號;不需開單的話會將isEvent紀錄為n且不須輸入單號,但每一個站點可能的漏洞有複數個,所以可能會一次插入多個值到資料表裡。

想問的是這樣的設計是不是不太好,因為有些不會插入值,預設的話都會記錄單號,除了少數該站點再測試東西才會將isEvent紀錄為N,所以不曉得是否要正規化或是有其他的設計可以參考,資料表的後續用途主要為追蹤狀態是否處理完成

eventNO isEvent hostname pluginName status
e123456 Y 35.201.227.252 A漏洞 處理中
e123456 Y 35.201.227.252 B漏洞 處理中
null N 35.206.194.139 A漏洞 結案
null N 35.206.194.139 B漏洞 結案
null N 35.206.194.139 C漏洞 結案
e222365 Y 35.206.194.140 D漏洞 處理中
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-08-11 11:12:43

這樣的設計是不是不太好

只要能滿足使用者的要求,就是好

如果我是使用者的話,就太不好了
建議修改如下:
1.isEvent 欄位拿掉,根本不需要(以你的設計,沒單號就是 N,有單號就是 Y)
2.加上個 EventDateTime 欄位,以記錄漏洞發生時間
3.eventNO 不要重覆(否則我講e123456時,你不知道我在講A漏洞還是講B漏洞)

看更多先前的回應...收起先前的回應...

1.好的,我再拿掉,看起來真的蠻多餘的
2.時間的話,我有插入createdTime/createdUser,但沒有特別列出來。
3.eventNO的話我的出發點,主要是每個hostname站點所掃出的漏洞,可能會有複數以上的漏洞,日後該站點的owner都需將漏洞修復完畢,我才設計都掛在同一個eventNo底下;

3.eventNO的話我的出發點,主要是每個hostname站點所掃出的漏洞,可能會有複數以上的漏洞

這就要看你對 eventNO 的定義是什麼了
一個eventNO是一個案件(一或多個漏洞)或是一個漏洞

以你現在的設計
當 A 漏洞status=結案,B 漏洞status=處理中 時
eventNO=e123456 的 status 會有兩種
你要顯示那一種

目前的話我對eventNO的定義視為一個案件,其單號底下所包含的所有漏洞,只要對那個事件單進行狀態的改動,就會全部一起跟著改變,所以有避免海綿大你所說的狀況發生。

我預設每次的新事件的status都會顯示處理中,owner要一次處理完畢才能改成結案的狀態,否則預設都是掛處理中的狀態;另外結案的狀態會在另一個追蹤維護的頁面上去做狀態的update處理

其單號底下所包含的所有漏洞,只要對那個事件單進行狀態的改動,就會全部一起跟著改變

我的經驗中是不會這麼做的
不過沒關係
你滿意就好

好的,我會再跟我主管討論看看,我也第一次做這種的專案,不曉得這樣到底好不好!!

0
chuway
iT邦新手 2 級 ‧ 2022-08-12 07:58:14

eventNO一律給號
如果isEvent=Y時eventNO需要連號
y=>e123456,e123457...
n=>x000001,x000002...

unique 只需要eventNO not null 即可

x00001這樣的方式好像不錯,想問一下你給值像是x000001的方式是透過msssql設定還是後端程式自行撰寫類似x0000+ID的方式給呢?

另外關於id給值,我以前寫的話可能一開始是T000001想要這樣T000010但結果變這個T0000010多了一位,要自行多設條件,但感覺有更快的方法不曉得Chuway大知道嗎?

我要發表回答

立即登入回答