Sql 需要数据库设计帮助

Sql 需要数据库设计帮助,sql,mysql,oracle,erd,Sql,Mysql,Oracle,Erd,设计一个数据库来存储有关美国总统及其任期的详细信息。此外,记录他们的出生日期和地点、性别和政党关系的详细信息。你需要记录总统的顺序,以便确定任何总统的前任和继任者。记住,格罗弗·克利夫兰曾担任过两个非连续任期,政治派别可以改变 这是我到目前为止让我知道,如果这可以改进,请。此外,我如何做到“可以确定任何总统的前任和继任者”是使用递归关系实现的,我将如何执行 Table President Table Origin PK presID PK orID

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

这是我到目前为止让我知道,如果这可以改进,请。此外,我如何做到“可以确定任何总统的前任和继任者”是使用递归关系实现的,我将如何执行

Table President       Table Origin

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

为了将总统与他们的出身联系起来,你需要带上你的
presID

作为表原点中的外键

然而,创建一个tbl_任期可能会更好,因为有许多总统有不止一个任期。上述示例要求您在多个任期内拥有多个总裁条目

tbl_术语
PK术语_id
FK pres_id
术语

检索前辈/后辈
DECLARE@maxTerm INT

DECLARE@minTerm INT

从tbl\u term中选择@maxTerm=MAX(term\u id),@minTerm=MIN(term\u id)作为t
以p的身份加入tbl_pres 在p.pres\u id=t.pres\u id上
其中p.presLName='lname'
p.presFName='fname'

那么前置是
从tbl_pres中选择p.presLName、p.presFName作为p
以t的身份加入tbl_术语
在p.pres\u id=t.pres\u id上
其中t.term_id=@minTerm-1

反之亦然
从tbl_pres中选择p.presLName、p.presFName作为p
以t的身份加入tbl_术语
在p.pres\u id=t.pres\u id上

其中t.term_id=@maxTerm+1
为了将总统与他们的出身联系起来,你需要带上你的
presID

作为表原点中的外键

然而,创建一个tbl_任期可能会更好,因为有许多总统有不止一个任期。上述示例要求您在多个任期内拥有多个总裁条目

tbl_术语
PK术语_id
FK pres_id
术语

检索前辈/后辈
DECLARE@maxTerm INT

DECLARE@minTerm INT

从tbl\u term中选择@maxTerm=MAX(term\u id),@minTerm=MIN(term\u id)作为t
以p的身份加入tbl_pres 在p.pres\u id=t.pres\u id上
其中p.presLName='lname'
p.presFName='fname'

那么前置是
从tbl_pres中选择p.presLName、p.presFName作为p
以t的身份加入tbl_术语
在p.pres\u id=t.pres\u id上
其中t.term_id=@minTerm-1

反之亦然
从tbl_pres中选择p.presLName、p.presFName作为p
以t的身份加入tbl_术语
在p.pres\u id=t.pres\u id上

其中t.term_id=@maxTerm+1

在这种情况下,您有两个实体(表):总统和任期。任期将记录任期的日期和现任主席

总裁表将记录总裁的详细信息,但不包括条款,因为条款表中包含了这一点

知道了这一点,你可以自己回答问题。以下是一些线索:

确定前任和继任者。这将按日期进行,以便您知道前任是您现在查看的前一个日期,继任者将是后一个日期。请注意,前任和继任者可能并不总是存在于您所看到的总统(第一任总统和现任总统)中

您希望按[日期]查看订单,然后选择顶部

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

你目前的想法是将任期放在总统表中——这不包括第二任期的总统。但是,您可以使用两列,但是数据的标准化将向您显示术语可能是一个单独的表(然而,一个设计参数说每个表只有两个术语,所以它的摆动和旋转)

事实上,很多关于总统的数据可以用标准化规则分到其他表格中,但我现在还不会透露这些数据


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

在这种情况下,您有两个实体(表格):总统和任期。任期将记录任期的日期和现任主席

总裁表将记录总裁的详细信息,但不包括条款,因为条款表中包含了这一点

知道了这一点,你可以自己回答问题。以下是一些线索:

确定前任和继任者。这将按日期进行,以便您知道前任是您现在查看的前一个日期,继任者将是后一个日期。请注意,前任和继任者可能并不总是存在于您所看到的总统(第一任总统和现任总统)中

您希望按[日期]查看订单,然后选择顶部

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

你目前的想法是将任期放在总统表中——这不包括第二任期的总统。但是,您可以使用两列,但是数据的标准化将向您显示术语可能是一个单独的表(然而,一个设计参数说每个表只有两个术语,所以它的摆动和旋转)

事实上,很多关于总统的数据可以用标准化规则分到其他表格中,但我现在还不会透露这些数据

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