我刚开始使用PostgreSQL,并且已经对数据库的设计进行了很多思考。我有一张桌子:
CREATE TABLE activities (
id BIGSERIAL PRIMARY KEY,
title TEXT,
description TEXT,
)
现在,我想在此表中包括可用性。可用性可以是:
并且可以选择多个选项之一。我正在辩论是否要使用
CREATE TABLE availability (
id BIGSERIAL PRIMARY KEY,
activities_id BIGINT REFERENCES activities,
weekdays BOOLEAN,
weekends BOOLEAN,
weeknights BOOLEAN,
overnight BOOLEAN,
)
或
CREATE TYPE availabilityEnum AS ENUM ('weekdays', 'weeknights', 'weekends', 'overnight'');
CREATE TABLE availability (
id BIGSERIAL PRIMARY KEY,
activities_id BIGINT REFERENCES activities,
availability availabilityEnum,
)
或
CREATE TABLE activities (
id BIGSERIAL PRIMARY KEY,
title TEXT,
description TEXT,
weekdays BOOLEAN,
weekends BOOLEAN,
weeknights BOOLEAN,
overnight BOOLEAN,
)
请记住,我最终希望根据可用性过滤结果。例如,用户只能查找工作日活动,或者他们可以查找工作日,周末和通宵活动。
另外,对于我的特定用例,我有一个更大的表,并且这种结构出现了几次,每次都有不同数量的多个选择选项,范围从3到8(在我的示例中,我有4个:工作日,周末,工作日,过夜)。
非常感谢您的帮助