CREATE TABLE service_request
( service_request_id INT NOT NULL
PRIMARY KEY,
client_id INT NOT NULL -- who ordered it
REFERENCES client (client_id),
request_ordered_at TIMESTAMP NOT NULL, -- when it was ordered
-- more details about the request
-- (price, duration, etc.)
service_a_id INT NOT NULL -- type A service
REFERENCES service_a (service_id), -- (mandatory)
service_b_id INT NULL -- type B service
REFERENCES service_b (service_id) -- (optional)
) ;
假设:
服务可以是类型 A 或类型 B。但不能同时是类型。
请求可以针对 A 类服务或两种服务(A 类服务和 B 类服务之一)。
一个客户可以有很多请求。
我认为一个干净的选择是拥有一个
Service_Request
实体,该实体将名为的实体关联起来,比如说,Client
和Service
。它将有 2 个属性,service_a
第二service_b
个是可选的。在 SQL 中:设计的其余部分、实体
Service
和两个子类型 (Service_A
和Service_B
) 应该保持原样。