过去 20 分钟我一直在阅读有关非规范化的内容,但无法获得带有代码的简洁示例。
这就是非规范化吗?
1.我们有一个规范化的数据库:
表_1:
customer_id(主键)
国家/地区
城市
街道
房屋号码
表_2:
product_id(主键)
customer_id(外键)
product_storage_building
表_3:
product_id(外键)
产品名称
产品颜色
产品原产地
但是,假设连接所有三个表的运行时间太长
SELECT a.*, b.*, c.*
FROM
TABLE_1 AS a
LEFT JOIN TABLE_2 AS b
ON a.customer_id = b.customer_id
LEFT JOIN TABLE_3 AS c
ON b.product_id = c.product_id
Run Code Online (Sandbox Code Playgroud)所以我创建了一个新Table_1表Table_2
CREATE OR REPLACE TABLE Denormalized_Data AS
(
SELECT customer_id,
country,
city,
street,
house_number,
product_id,
product_storage_building
FROM Table_1
LEFT JOIN Table_2
ON Table_1.cusomter_id = Table_2.customer_id
)
Run Code Online (Sandbox Code Playgroud)
然后加入Table_3如下
SELECT customer_id,
country, …Run Code Online (Sandbox Code Playgroud)我需要为多个国家/地区运行 SQL 函数
我想知道是否有一种方法可以创建一个函数,我可以在其中输入国家/地区名称并为每个国家/地区获取一个表格。这是我对德国的查询
SELECT customer.id,
product_purchased,
country
FROM sales_tables
WHERE country = 'Germany'
Run Code Online (Sandbox Code Playgroud)
所以我可以做这样的事情而不是改变代码中的每个国家
FUNCTION products_purchased_byCountry($1):
SELECT customer.id,
product_purchased,
country
FROM sales_tables
WHERE country = '$1'
Run Code Online (Sandbox Code Playgroud)
然后只需使用以下命令调用此函数
products_purchased_byCountry(Germany)
products_purchased_byCountry(France)
products_purchased_byCountry(UK)
Run Code Online (Sandbox Code Playgroud)
或者也许要运行这样的函数,我必须通过 R 或 Python 来完成?