Database 简单数据库设计问题

Database 简单数据库设计问题,database,database-design,Database,Database Design,我只是想弄清楚一个家庭作业问题,我希望能得到一些帮助 显然,这种数据库设计存在三个问题: Account = {AccNumber, Type, Balance} Customer = {CustID, FirstName, LastName, Address, AccNumber} 很明显的一点是,如果存在“账号”,那么“CustID”是无用的 关于第二个和第三个问题,我不太清楚 “FirstName”和“LastName”的单独属性有问题吗?我们不能只使用“Name”吗 另一个选项是,如果

我只是想弄清楚一个家庭作业问题,我希望能得到一些帮助

显然,这种数据库设计存在三个问题:

Account = {AccNumber, Type, Balance}
Customer = {CustID, FirstName, LastName, Address, AccNumber}
很明显的一点是,如果存在“账号”,那么“CustID”是无用的

关于第二个和第三个问题,我不太清楚

“FirstName”和“LastName”的单独属性有问题吗?我们不能只使用“Name”吗

另一个选项是,如果“AccNumber”是主键(假设CustID将被删除),那么它可能应该放在开头:

例如:

Customer = {AccNumber, Name, Address}
任何意见都将不胜感激


谢谢

乍一看,客户帐户关系似乎是一种多人关系,这就需要使用中间关系表。例如,我在银行有三个自己的帐户。此外,我妻子有两个自己的帐户。最后,我们有一个共享帐户。上面的模式无法很好地处理e这种关系

事实上,你可以只使用“名字”——但在将来的某个时候,你可能需要知道名字或姓氏是什么,这样的一个组合可能会很难分割


祝你功课顺利…

乍一看,客户帐户关系似乎是一种多人关系,这就需要使用中间关系表。例如,我在银行有三个自己的帐户。此外,我妻子有两个自己的帐户。最后,我们有一个共享帐户。模式above无法很好地处理这种关系

事实上,你可以只使用“名字”——但在将来的某个时候,你可能需要知道名字或姓氏是什么,这样的一个组合可能会很难分割


祝你的作业顺利…

问题是你没有用文字向我们展示数据库应该代表什么;就目前而言,设计没有“错误”,因为我们不知道设计应该建模什么

我当然不会说
CustID
是无用的,因为它是表的主键。您需要确定的是客户和帐户之间的关系。它应该是以下之一:

  • 单个客户可以绑定到多个帐户,但单个帐户可以绑定到单个客户
  • 单个客户只能绑定到一个帐户,但一个帐户可以绑定到多个客户
  • 单个客户可以绑定到多个帐户,单个帐户可以绑定到多个客户

  • 现在,使用
    AccNumber
    中的
    Customer
    表,您的设计模型#2.

    问题在于,您没有用文字向我们展示数据库应该表示什么;现在,设计没有“错误”,因为我们不知道设计应该建模什么

    我当然不会说
    CustID
    是无用的,因为它是表的主键。您需要确定的是客户和帐户之间的关系。它应该是以下之一:

  • 单个客户可以绑定到多个帐户,但单个帐户可以绑定到单个客户
  • 单个客户只能绑定到一个帐户,但一个帐户可以绑定到多个客户
  • 单个客户可以绑定到多个帐户,单个帐户可以绑定到多个客户

  • 现在,使用
    AccNumber
    中的
    Customer
    表,您的设计模型#2。

    现在是如何设计的,每个客户只能有一个银行帐户

    多对多关系将是一个问题。相反,您可以创建第三个表来保存这些关系。例如:

    Account = {AccNumber, Type, Balance}
    Connection = {ConnID, AccNumber, CustID}
    Customer = {CustID, FirstName, LastName, Address}
    

    通过这种方式,帐户和客户都是连接的父项(因为没有更好的名称)。您可以查询具有特定帐户号的所有连接,并找到使用该帐户的所有客户,反之亦然。

    目前如何设计,每个客户只能有一个银行帐户

    多对多关系将是一个问题。相反,您可以创建第三个表来保存这些关系。例如:

    Account = {AccNumber, Type, Balance}
    Connection = {ConnID, AccNumber, CustID}
    Customer = {CustID, FirstName, LastName, Address}
    

    这样,帐户和客户都由连接作为父对象(因为没有更好的名称)。您可以查询具有某个帐户号码的所有连接,并找到使用该帐户的所有客户,反之亦然。

    谢谢您的回复。作业中提到的唯一其他有用信息是,此表用于“银行帐户”。我想更合适的设置是取消该帐户的“帐户号码”“Customer”字段,并添加一个额外的表:CustomerAccounts={CustID,AccNumber}。新的帐户表将是这样的:account={AccNumber,Type,Balance}。@Gregorioidistefano:只有当一个帐户没有附加到一个客户或者一个帐户可以附加到多个客户时,这才有意义。如果两者都不是真的话。”(这意味着一个帐户只与一个客户关联),那么您应该在
    account
    表中有一个
    CustId
    列。我认为这是“错误的”"使用此设计。如上所述,两个表中的AccNumber字段打破了您可能希望应用的任何规范化。@Rob:以何种方式?如果
    Customer
    Account
    之间存在关系,使得单个客户与单个帐户相关联,并且单个帐户可以与0-n个客户关联。换句话说,如果
    AccNumber
    account
    表的主键,并且是从
    Customer
    account
    的FK。感谢您的回复。作业中提到的唯一其他有用信息是此表用于“银行帐户”。I假设更合适