sql - 需要数据库设计帮助

标签 sql mysql oracle erd

设计一个数据库来存储有关美国总统及其任期的详细信息。此外,记录他们的出生日期和地点、性别和政党隶属关系的详细信息。您需要记录总统的顺序,以便可以识别任何总统的前任和继任者。请记住,格罗弗·克利夫兰 (Grover Cleveland) 担任过两届非连续任期,政治派别可以改变。

这就是我目前的情况,如果可以改进,请告诉我。另外,我该怎么做“可以确定任何总统的前任和继任者”?这是使用递归关系完成的吗?我将如何执行?

Table President       Table Origin

PK presID            PK orID    
   presFName            orCity
   presLName            orState
   affiliation          birthDate
   gender
   term

最佳答案

好吧,在这种情况下您有两个实体(表):Presidents 和 Terms。条款将记录任期的日期和现任主席。

Presidents 表将记录总统的详细信息,但不包括 Terms,因为这已包含在 Terms 表中。

了解了这一点,您就可以自己回答问题了。这里有一些线索:

识别前任和继任者。这将按日期完成,因此您知道前任是您现在正在查看的日期之前的前一个日期,而后任将是紧随其后的日期。请注意,您正在查看的总统(第一任总统和现任总统)可能并不总是存在前任和继任者。

您想查看 ORDER BY [DATE] 和 SELECT TOP...

从技术上讲,设计可以进一步为出生地创建第三个表,但这是语义。

您当前的想法是将任期放入总统表 - 这不包括连任总统。但是,您可以使用两列 - 但数据的规范化会告诉您 Terms 可能是一个单独的表(但是,设计论证说每个只有两个术语,所以它的摇摆和回旋处)。

实际上,很多关于总统的数据都可以使用规范化规则分支到其他表中 - 但我现在还不会放弃......

如果您有任何具体问题,请在评论中提问 - 我一直是间接的,因为它的作业:)

关于sql - 需要数据库设计帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3281567/

相关文章:

mysql - MySQL 中的修剪均值计算

java - Hibernate 数据源与 JNDI 的连接

sql - Tableau 在 SQL Server 中使用短且宽或高且薄的表进行更好的查询?

.net - 将 SQL Server DateTime 对象转换为 BIGINT(.Net 刻度)

sql - INSTEAD OF DELETE 触发器 (Postgresql)

php - 计数列值按出现次数排序

php - 避免重复输入 mysql 数据库的最佳方法

sql - ORA-01843不是有效的月份-比较日期

java - 在 JDBC for Oracle 中设置客户端信息

sql - 表拆分中的 T-SQL 日期范围并将单个日期添加到表中