推荐 Table 设计 - APEX 21.1 / Oracle 19c

Recommended Table Design - APEX 21.1 / Oracle 19c

我正在构建一个个人 Oracle APEX 应用程序以获得更多练习来跟踪我们的 'Family Contributions'(我们用来做家务的名字)。使用以下chart / spreadsheet,在数据库中设计这些数据点的最佳方法是什么?我对如何最好地处理 CONTRIBUTORS 数据感到困惑。

家庭贡献可以分配给:

  1. 1 位家庭成员
  2. 2位家庭成员
  3. 所有家庭成员
  4. 有条件地基于贡献(有些只适合孩子,有些只适合 parents)

家庭捐款每周轮换一次。每周都会为一位家庭成员分配一个数字(数字递增 1,4 变为 1),它映射到图表中的贡献 ID。我的第一次破解(暂时忽略 CONTRIBUTOR 列:

FAMILY_CONTRIBUTIONS
---------------------------------------------
CONTRIBUTION_ID     NUMBER          PK
PERIODICITY         VARCHAR2(50)    NOT NULL
CONTRIBUTOR_ID      NUMBER          NOT NULL  -- ???
CONTRIBUTION_DESC   VARCHAR2(1000)  NOT NULL
MON                 CHAR(1)         NOT NULL
TUE                 CHAR(1)         NOT NULL
THU                 CHAR(1)         NOT NULL
FRI                 CHAR(1)         NOT NULL
SAT                 CHAR(1)         NOT NULL
SUN                 CHAR(1)         NOT NULL
CREATED_BY          VARCHAR2(50)    NOT NULL
DOR                 DATE            NOT NULL
UPDATED_BY          VARCHAR2(50)    NOT NULL
DLU DATE            NOT NULL

FAMILY_MEMBERS
---------------------------------------------
FAMILY_MEMBER_ID    NUMBER          PK
MEMBER_NAME         VARCHAR2(50)    NOT NULL
CONTRIBUTOR_ID      NUMBER          NOT NULL
FAMILY_ROLE         VARCHAR2(50)    NOT NULL
CREATED_BY          VARCHAR2(50)    NOT NULL
DOR                 DATE            NOT NULL
UPDATED_BY          VARCHAR2(50)    NOT NULL
DLU                 DATE            NOT NULL

我可以处理 123 的情况,方法是使用 child ASSIGNMENT table 使用行 [=18] =] 和 FAMILY_MEMBERS.CONTRIBUTOR_ID,但即使这样也不确定如何最好地处理案例 4

从纯数据库的角度来看,我建议您创建另一个包含贡献者的 table。所以你的家庭贡献 table 有分配,然后新的 table 有分配给贡献的成员。列方式:主要 ID、贡献 ID 和贡献者 ID。当您 select 贡献时,您 select 每个成员分配给新 table 的贡献,并根据成员 ID 离开加入成员 table。希望它有意义。