2012-08-31 12 views
0

我正在構建一個處理服務和硬件產品的訂單和開票系統。 表格結構的一部分簡化如下。 (現實生活中有更多數量級的表):如何創建用於在SQL後端的多個表中輸入複雜相關數據的結構

我想從標準訂單列表中選擇一個訂單,即與公司的規模相關的訂單,並且具有所有各種訂單與此標準表格相關的產品可以通過正確的關係在適當的表格中創建。 舉個例子:我爲一個5人的小公司選擇計算機和配件的標準訂單。訂單已創建,OrderItem行也與訂單和產品鏈接。

客戶(甲方的子集)

Customer_ID (PK, FK to Party)
 
CustomerName 
...

訂購

Order_ID (PK) 
Customer_ID (FK to Customer) 
OrderDate 
OrderNumber 
...

OrderItem的

Order_ID (PK, FK to Order) 
Product_ID (PK, FK to Product) 
Amount 
...

產品

Product_ID (PK) 
ProductName 
Price 
Info 
...

這個例子是易於編程,但具有需要更新,也許10相互關聯的表的時候 - 我不知道什麼是最好的策略。

是它最好從生產表來獲取數據:

1)一組模板的表,或多或少作爲生產數據的鏡像,相互關聯的方式相同他們,但只含廣義數據(標準)和日期等沒有cols?

2)將模板存儲在生產數據表中,使用額外的字段來表示它們?這可以在這些行中創建大量空列,如關於日期等。

3)使用其他編程方法並使用它。就像調用不同存儲過程的表一樣,具體取決於選擇的模板!?

4)???

希望這是可以理解的。

+0

我很困惑 - 你想存儲新客戶「標準」的訂單(即 - 「哦,你是開始一家新公司,這裏是我們的基本業務包,加上一些調整「),或者你只是試圖存儲一般的訂單?其他:避免使用保留字來命名事物(比如'Order',儘管其中的替代品可能很笨拙)。避免使用表名作爲前綴(id列除外)。命名列時不要使用該類型,在使用後命名 - 「OrderDate」可能應該是'orderedOn'或'createdOn'。 –

+0

嗨。是的,但'標準'包不僅包含訂單本身,還包含與公司和訂單相關的其他許多事項,現在必須輸入到不同的表格中。我希望能夠在列表中選擇幾種「標準」設置中的一種,將它們輸入多個表格,然後針對特定情況下的不同情況進行編輯。所以'訂單'只是一個例子。 – Idonodi

+0

嗯,那麼我想我想用某種形式的1,但儘可能重新使用'實際'表。所以,你應該使用'product'表,並且只需要一個'purchaseTemplate'表等等。絕對不要用2 - 如果你在某些查詢中忘記了flag列,你可能會遇到麻煩。 –

回答

0

我認爲你是在錯誤地思考問題。你應該做的是 創建一個產品包,以滿足小企業客戶的需求。

所以,你可以將產品添加

產品束表

產品-ID1整數之間的自連接表中沒有空引用,產品展示(產品) Product_ID2整數空檢查(!=產品-ID1)參考產品(product_id)

主鍵(Product-ID1,Product_ID2) qty integer not null check(> 0) ....

現在,您可以創建引用產品表中其組成產品的產品表項

+0

嗨。那麼你是指自引用表,然後是材料清單(BOM)?如果你看看我對這個問題的評論,你會發現我正在討論一個多表'Bundle':你是否也提議給所有其他相關表創建一個新的自引用表?我如何讓它們相互關聯? – Idonodi

相關問題