我有一個使用來自各個供應商的CSV源更新的產品表。每個Feed都有自己的表格,但是產品可以在同一個供應商表格和多個供應商表格中出現多次。但每個產品只能在我們的主表中出現一次。我預計不會使用超過十個不同的供應商表格。表格至少每天更新一次,最多每6-8小時更新一次,讀取速度優先於寫入速度。在任何特定時間通常有大約500,000個啓用的產品。有條件地將Postgres行連接到各種其他表中的數據
我的第一個計劃是將每個產品的表名和主鍵ID存儲在該表中,然後在每次更新期間重新計算它,但根據the responses here,必須這樣做表示數據庫未設計正確。
使用視圖將這些表合併爲一個虛擬表似乎對組織有很大幫助。這樣,我可以創建一個規則,使一列成爲SQL查詢,然後索引該列以提高搜索/讀取速度。決定從何處提取供應商信息的規則並沒有多少涉及,需要考慮國家和價格以及其他一些事項。
所以我想這裏的問題是,有沒有這樣做的正確方法?還是不管我怎麼做都會變得混亂?另外,我在正確的軌道上?
在供應商表中,它們是否都有相同的列?你可以有一個引用priduct表的coumn,你能有一個標識供應商的專欄嗎?如果答案是肯定的,corect的方式可能是單個供應商表格,或者使用sql inhertance來組合多個供應商表格,否則它是一個非常難看的級聯聯合查詢。 – Jasen
我會反過來:創建一個包含** all **產品的供應商列的單個表格。對於每個使用觸發器的供應商的* view *允許插入到視圖中。 –
@Jasen:供應商庫存表格每個都通過CSV文件直接通過COPY提取。大多數領域是相同的,但有一些差異。我們偶爾需要直接查詢供應商表格,所以我不想將它們合併成一個。 – virnovus