[英]How to split one table into multiple tables with different columns (PostgreSQL)?
我有一個包含 25 列的表,我想將其拆分為 3 或 4 個列數較少的表。 下面是一個簡化的例子作為參考:
這是大桌子
供應商 | 牌 | 庫存單位 | 產品類 | 尺寸 | 銷售量 | trans_id |
---|---|---|---|---|---|---|
供應商_1 | 品牌_1 | sku_1 | class_1 | 3.5 | 100 | 1 |
供應商_1 | 品牌_2 | sku_2 | class_1 | 3.5 | 200 | 2 |
我需要這樣的東西:
產品信息
庫存單位 | 產品類 | 尺寸 | trans_id |
---|---|---|---|
sku_1 | class_1 | 3.5 | 1 |
sku_2 | class_1 | 3.5 | 2 |
產品銷售
供應商 | 牌 | 銷售量 | trans_id |
---|---|---|---|
供應商_1 | 品牌_1 | 100 | 1 |
供應商_1 | 品牌_2 | 200 | 2 |
在這種情況下,product_info 表中的 trans_id 將是我的主鍵。
您可以拆分表格,如產品、品牌、購物車。 然后使用外鍵連接它們。
Products表可以包含指向其公司的company_id列。
carts 表保存用戶的購買信息,並包含product_id和user_id等列。
最好有一個CartProducts表,其中一個貨件可能包含多個產品。
也許為此目的使用視圖(即邏輯表)。 輕巧高效。 這是一個插圖:
create or replace view product_info as
select trans_id, sku, product_class, size
from the_big_table;
create or replace view product_sales as
select trans_id, supplier, brand, sales
from the_big_table;
-- more view definitions here
加入這些視圖將是微不足道的,而且沒有開銷:
select ...
from product_info join product_sales using (trans_id);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.