小编dea*_*ode的帖子

处理有关调查、问题和响应的数据库中冗余外键的最佳数据建模方法

我正在寻找有关存储调查、问题和响应的最佳关系建模方法的建议。

我正在寻找以下两种方法中的哪一种看起来最好,或者另一种方法。

我至少有这些实体:

  • 民意调查

至少有这些关系:

  • 每个调查有 1 个或多个问题。
  • 每个问题可用于 0 个或多个调查。
  • 每个人可以参加 0 个或多个调查。

这就是我遇到麻烦的地方:如何对一个人对调查问题的回答进行建模。

这是我考虑过的两种方法,对我来说似乎都不是很好。此处的图表已大大简化以说明问题。

方法一: 方法一

我不喜欢这种方法的地方:

  • survey_person_question_response表有两个不同的列引用调查:survey_question_survey_idsurvey_person_survey_id
    • survey_id在这两列的一行中引用不同的是错误的。survey_question 必须与该人在survey_person 中进行的调查来自同一个调查。我看不出有什么好的方法来强制执行此操作。
  • 似乎我在这里所做的是在两种关系之间建立关系。出于某种原因,这对我来说是错误的。

方法二:

尽量避免方法 1 中的两个 FK 应该引用相同的值...... 在此处输入图片说明

我不喜欢这种方法的地方:

  • 没有强制规定question_idsurvey_idFK 来自有效的survey_question
  • 没有强制规定survey_idperson_idFK 来自有效的survey_person

任何建议:

  • 这些方法之一是否是典型方法
  • 其中一种方法相对于另一种方法的优缺点
  • 完全安排这些数据的更好方法

将不胜感激!

erd database-design

13
推荐指数
1
解决办法
2042
查看次数

合并两个具有相同模式的 postgress 数据库

我有两个具有相同架构的 Postgresql 数据库,我想将它们合并(或将它们合并到第三个)。

问题是这些表都有 id PK,它们是自动递增主键,并使用这些 id 列作为其他表的 FK。

我知道两个数据库之间的数据在逻辑上是不同的,但它们的 PK 重叠,例如:

数据库A:

表构建: id | name 1 | Smooth Hall 2 | Orchard Towers

桌子地板: id | building_id (FK building.id) | floor_number 1 | 1 | 1 2 | 2 | 1 3 | 2 | 2

数据库B:

表构建: id | name 1 | Chancey Theater 2 | Allen Hall

桌子地板: id | building_id (FK building.id) | floor_number 1 | 1 | 1 2 | 2 | 1 3 …

postgresql

5
推荐指数
1
解决办法
7155
查看次数

标签 统计

database-design ×1

erd ×1

postgresql ×1