當所有數據都依賴於主鍵時,我應該將表拆分為不同的表嗎?
對於我的任務,我必須為我的許可申請建立一個數據庫。我有 12 列,其中一列用於許可證密鑰。所有其他列都是與許可證密鑰相關的數據。許可證密鑰總是不同的。我被告知最好將表拆分為更多表以刪除冗餘數據。表格如下:
license_code
product_amount
product_limit
product_name
start_date
end_date
first_registration_date
most_recent_check_date
registration_end_date
hardware_id
IP
status
目前我把它分成這個:
表:許可證
license_code*
product_id*
start_date
end_date
first_registration_date
most_recent_check_date
registration_end_date
product_amount
product_limit
hardware_id
IP
狀態
表:產品
產品 ID*
產品名稱
我真的認為沒有必要拆分它,因為所有數據都依賴於 license_code 列。誰能幫我嗎?謝謝。
編輯:解釋如何使用
許可證密鑰/程式碼基本上是一個唯一的字元串。要使用產品(軟體程序),必須使用許可證密鑰。一個產品可以用多個License Key啟動,第1個人可以用程式碼X來啟動Y產品,第2個人可以用Z程式碼來啟動Y產品。所以一個License Key可以啟動一個產品的多個實例,但只能用於單一產品。
我希望我對這個解釋更清楚。
我認為我們缺乏一些資訊,例如許可證的確切用途以及如何使用它。例如,所有產品都只有一個許可證嗎?許可證可以包含多個產品嗎?由於使用了許可證一詞,我想每個人都有自己的許可證來使用該產品(因此是一對多的關係)。在這種情況下,我將假設一個許可證僅對一個產品有效,並且多個許可證可以引用一個產品(一對多關係)。
所以為了滿足這個要求,我們需要兩張表。一份用於產品,一份用於許可證。產品表將包含所有產品資訊,例如:
Products ----------- ProductID Name, Description, Price, (etc) Licenses -------- LicenseID, ProductID, StartDate, EndDate, Amount, -- I believe this is to represent how many individual licenses of this one is used Limit, -- And this is to represent how many people can use this current license (etc)
有了這個,我們有一些好處。現在,我們可以將單個產品許可給多個人(再次,我假設該產品類似於軟體),我們現在可以在不影響產品的情況下更改許可,如果我們需要對產品進行更改,所有許可會自動更新。一個很好的例子是產品描述的改變。如果產品與許可證一起儲存,我們將不得不更改使用同一產品的所有許可證。這不好,而且容易出現不一致的數據。
如果我不在基地,請隨時告訴我。正如你所看到的,我做了很多假設。