文章同时发布於: https://kevinyay945.com/smart-home-tutorial/028/
在之前的过程中,已经建立了request以及command,而预计的规划是可以透过一个command来触发多个request的功能,而且多个command可以触发同一个request,而触发的顺序可以自己定义,那要完成这个需求,预计要多开一张表,名为commands_requests,而这张表的主要目的是要将commands跟requests建立起关联,因此目前规划的栏位有
name | type |
---|---|
uuid | uuid |
commands_uuid | uuid |
requests_uuid | uuid |
另外,因为需要有触发顺序,所以栏位中要多上一个顺序的栏位
name | type |
---|---|
uuid | uuid |
commands_uuid | uuid |
requests_uuid | uuid |
order | int |
并且
将相关的栏位做foreign key的关联,这样做就可以让资料库来帮我们保证在commands_requests中的两个uuid都一定存在於另外两张表中
资料库语法如下
CREATE TABLE public.commands_requests
(
uuid uuid NOT NULL DEFAULT uuid_generate_v4(),
create_at timestamptz NOT NULL DEFAULT now(),
update_at timestamptz NOT NULL DEFAULT now(),
commands_uuid uuid NOT NULL,
requests_uuid uuid NOT NULL,
"order" int8 NOT NULL,
CONSTRAINT commands_requests_pk PRIMARY KEY (uuid),
CONSTRAINT commands_requests_fk FOREIGN KEY (commands_uuid) REFERENCES public.commands (uuid) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT commands_requests_fk_1 FOREIGN KEY (requests_uuid) REFERENCES public.requests (uuid) ON DELETE SET NULL ON UPDATE CASCADE
);
另外,因为有发现到之前的commands跟requests并没有primary key,所以也将建立Primary Key的语法补上去
ALTER TABLE public.commands
ADD CONSTRAINT commands_pk PRIMARY KEY (uuid);
ALTER TABLE public.requests
ADD CONSTRAINT requests_pk PRIMARY KEY (uuid);
最後,因为怕在自动产生uuid的extension在postgresql中没建立,所以将建立这个extension的功能也放上
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
另外,也补上了之前没写到的down档
影片和code如下
https://www.youtube.com/watch?v=ScRe3zVh8-E
https://github.com/kevinyay945/smart-home-backend/tree/0442b034cb84a31bbb59858f70f64a5aa871578f
Python虚拟环境的主要目的是为不同的Python项目创建一个彼此独立且隔离的环境。这样我们可以在...
来到了第 26 天,其实我们快把所有的模组都走过一遍了,今天是最後一天单独介绍某个特色的,接下来 3...
Aloha!我是少女人妻 Uerica!我家狗狗每天六点都会叫我起床,但除非自己很早睡,不然六点起床...
在疫情爆发之前,一切的一切看似都非常的正常,但是在爆发之後,所有的一切都被疫情给打乱了,并且所有的秩...
9.5节提到判断方法(predicate function)的概念,简单来说就是许多容器类别: 如...