具有多个值的实体属性
Entity's attribute with multiple values
我正在为我的网站设计一个数据库,其中我有一个具有 frequency
属性的 goal
实体,其中包括 daily
、weekly
、monthly
, yearly
值。问题是每个值都有下面表示的另一个多个值
goal
|-- frequency
|-- daily
|-- start day
|-- end day
|-- weekly
|-- year
|-- start week
|-- end week
|-- monthly
|-- year
|-- start month
|-- end month
|-- yearly
|-- start year
|-- end year
如何创建该数据库?我可以把 frequency
放到一个 table 中,它引用了另外 4 个 table 吗?
谢谢你,对不起我的英语不好。
在我看来,您有 2 个选择:
1) 维护 1 table 称为目标并具有频率、年份、开始、结束列。
然后,您将把所有数据集中在一个 table.
中
id frequency year start end
1 daily null Monday Friday
2) 在目标 table
中引用另一个 table 调用频率
如果您将有 4 个 table 从目标 table 引用,您应该在目标 table 中添加 4 个外键,然后保留 4 个 table,每个外键一个频率:
goal_id freq_daily_fk freq_week_fk freq_month_fk freq_year_fk
1 null 2 null null
据我所知,您想用不同的频率和特定于频率的属性对目标进行建模。这听起来像是超类型-子类型模式。
您可以有一个目标 table 具有任何共同属性,包括频率指示器:
goals (goal_id PK, frequency)
和 tables 用于子类型信息:
daily (goal_id PK/FK, start_day, end_day)
weekly (goal_id PK/FK, year, start_week, end_week)
monthly (goal_id PK/FK, year, start_month, end_month)
yearly (goal_id PK/FK, start_year, end_year)
子类型 tables 的一个常见要求是强制互斥。如果需要,您可以通过在每个子类型中包含频率来执行此操作,以便可以指定 (goal_id, frequency) 的外键约束。
我正在为我的网站设计一个数据库,其中我有一个具有 frequency
属性的 goal
实体,其中包括 daily
、weekly
、monthly
, yearly
值。问题是每个值都有下面表示的另一个多个值
goal
|-- frequency
|-- daily
|-- start day
|-- end day
|-- weekly
|-- year
|-- start week
|-- end week
|-- monthly
|-- year
|-- start month
|-- end month
|-- yearly
|-- start year
|-- end year
如何创建该数据库?我可以把 frequency
放到一个 table 中,它引用了另外 4 个 table 吗?
谢谢你,对不起我的英语不好。
在我看来,您有 2 个选择:
1) 维护 1 table 称为目标并具有频率、年份、开始、结束列。 然后,您将把所有数据集中在一个 table.
中id frequency year start end
1 daily null Monday Friday
2) 在目标 table
中引用另一个 table 调用频率如果您将有 4 个 table 从目标 table 引用,您应该在目标 table 中添加 4 个外键,然后保留 4 个 table,每个外键一个频率:
goal_id freq_daily_fk freq_week_fk freq_month_fk freq_year_fk
1 null 2 null null
据我所知,您想用不同的频率和特定于频率的属性对目标进行建模。这听起来像是超类型-子类型模式。
您可以有一个目标 table 具有任何共同属性,包括频率指示器:
goals (goal_id PK, frequency)
和 tables 用于子类型信息:
daily (goal_id PK/FK, start_day, end_day)
weekly (goal_id PK/FK, year, start_week, end_week)
monthly (goal_id PK/FK, year, start_month, end_month)
yearly (goal_id PK/FK, start_year, end_year)
子类型 tables 的一个常见要求是强制互斥。如果需要,您可以通过在每个子类型中包含频率来执行此操作,以便可以指定 (goal_id, frequency) 的外键约束。