Database-Design
類和實例類型的行
我有一個問題,我認為這很常見,但我不確定要搜尋什麼,因為它可以用許多不同的方式來解釋。
我正在設計一個用於管理髮票、產品、價格、貨幣等的數據庫結構。
我能夠管理產品的價格和名稱(預計這些會不時改變)。
在發票上,按數量添加產品,有折扣、增值稅、獨角獸、松鼠等,然後計算發票的總和。
現在,當產品表中的價格更新時,發票不應更改。它需要永遠保持不變。
考慮到這一點,對我來說,產品列表似乎是“類類型”對象的列表,它描述了產品的外觀。或者我們可以將其稱為“模板”或“基礎”或“抽象”,這取決於我們想到的抽象。
添加到發票中的產品是“實例”、“實施”、“子代”、“版本化記錄”或任何我們稱之為的產品。
我將如何在數據庫中建構它?我可以將它們分成兩個不同的表“AbstractProduct”和“Product”,但它們的大部分(可能是所有)列都是相同的。在這方面,將它們放在同一張桌子上似乎是合適的。但是我需要一個額外的列來表示它是“類”還是“實例”。那也很好。這也可以是創建它的類的外鍵(或類的 NULL)。
我嘗試了不同的方法,但似乎都有令人討厭的警告。
這是一個已知的模式嗎?這叫什麼?是否有解決此問題的最佳實踐?
這是一個眾所周知的模式。如果您想要有關此主題的大量文獻,請搜尋“時態數據庫”。