首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对这种特殊的表关系进行建模

如何对这种特殊的表关系进行建模
EN

Stack Overflow用户
提问于 2016-10-20 14:35:24
回答 3查看 38关注 0票数 2

我想为下面的场景创建数据模型。我有一个名为PERSON and HEALTH_STANDARDS的表。

人员有id,姓名,地址,电子邮件HEALTH_STANDARDS有体重,身高等,

在UI中,如果用户选择了一个人,它必须显示标准的健康属性。接下来,用户将根据所选人员更改健康属性。其余的人员将具有标准的健康属性。

我如何对此进行建模。我是否需要在这里再创建一个表PERSON_HEALTH_ATTRIBUTES并进行映射。

EN

回答 3

Stack Overflow用户

发布于 2016-10-20 15:23:58

在我看来,HEALTH_STANDARDS是常量/默认值,实际上并不对应于真实的人,因此在PERSONHEALTH_STANDARDS之间没有直接关系。相反,它可以在给定的person在PERSON_HEALTH_ATTRIBUTES中没有行时暗示,例如,为了简单起见,将属性限制为仅加权:

代码语言:javascript
复制
CREATE TABLE HEALTH_STANDARDS
( person_weight_kg INTEGER NOT NULL );

CREATE TABLE PERSON
( person_id INTEGER NOT NULL UNIQUE,
  name VARCHAR(35) NOT NULL );

CREATE TABLE PERSON_HEALTH_ATTRIBUTES 
( person_id INTEGER NOT NULL UNIQUE
     REFERENCES PERSON ( person_id ),
  person_weight_kg INTEGER NOT NULL );


SELECT person_id, person_weight_kg
  FROM PERSON_HEALTH_ATTRIBUTES
UNION
SELECT person_id, person_weight_kg
  FROM PERSON
       NATURAL JOIN HEALTH_STANDARDS
 WHERE person_id NOT IN ( SELECT person_id
                            FROM PERSON_HEALTH_ATTRIBUTES );
票数 1
EN

Stack Overflow用户

发布于 2016-10-20 14:39:25

因为与PERSON及其健康属性存在一对一的关系,所以您应该将它们组合到一个表中。如果默认HEALTH_STANDARDS只有一个默认值,我会将其实现为PERSON表上的默认值。

票数 0
EN

Stack Overflow用户

发布于 2016-10-20 15:00:16

我认为你应该像图像中描述的那样设计表格结构。

如果一个人与健康标准有一对多的关系,就像一个人可以有许多健康标准,如身高、体重、颜色。因此,我们应该再创建一个包含person heath标准数据的表,这里我们已经创建了person_health_standard

health_standard是一个主数据

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40147063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档