我们有桌子和相机。一个站点可以包含多个摄像机。我定义了子类型 parking_site 和 parking_camera。 parking_site 只能包含停车摄像头。我定义了 tolling_site 和 tolling_camera,其中应用相同的规则。 不可能进入站点或摄像头的一般入口,因为所有站点和摄像头都应该是停车场或收费站。
什么是数据库关系图?
什么是创建表的 SQL 查询?
我会使用类似以下的东西:
CREATE TABLE subtype (
subtype_id smallint PRIMARY KEY,
name text UNIQUE NOT NULL
);
INSERT INTO subtype (subtype_id, name)
VALUES (1, 'parking')
(2, 'tolling');
CREATE TABLE site (
site_id bigint PRIMARY KEY,
subtype_id smallint REFERENCES subtype NOT NULL,
name text NOT NULL,
/* this is needed ony for the foreign key */
UNIQUE (subtype_id, site_id)
);
CREATE TABLE camera (
camera_id bigint PRIMARY KEY,
site_id bigint NOT NULL,
subtype_id smallint REFERENCES subtype NOT NULL,
FOREIGN KEY (subtype_id, site_id) REFERENCES site (subtype_id, site_id),
...
);