【问题标题】:How to design database and make Phone as a table that is in a relationship with another one(Employee)如何设计数据库并使电话成为与另一个(员工)有关系的表
【发布时间】:2019-05-15 16:23:57
【问题描述】:

我正在为员工管理系统设计一个数据库,它有很多表,其中一个是 Phone,因为我希望 Phone 是一个表,因为员工可以有很多电话号码,但是我应该将这两个关联起来,在某种程度上,在 Employee Crud 表单中,我可以指定电话号码,但将它们保存在电话号码中,而不是在员工表中。我想说的是,我将这两个关联为一对多关系(从员工到电话) 并且我在 Employee 处放置了一个 Phone_id 作为外键,但是我如何从我的表中访问这些数据,如何在这两者之间镜像这些数据,也许这是一个奇怪的问题,但我尝试了很多,但找不到正确的解决方案.. https://imgur.com/WoxhczN 关系图..

我在这两个表(员工电话)之间建立了一对多的关系,并为员工创建了一个 CRUD 表单来注册新员工。在员工表中,我只有员工的基本信息和 phone_id m,它是来自 Phone 表的外键,在那个粗略的表单中,我有一些字段可以添加 phone1、phone2、phone3 等。

我除了可以将员工 CRUD FORM 中的数据保存在员工表和电话表中,还可以在 EMPLOYEE 表中生成 phone_id

【问题讨论】:

  • 您的实际问题是什么?您是在问如何设计表格或帮助代码或完全不同的东西吗?
  • Phone_id as a foreign key at Employee 对我来说听起来很可疑。一个员工不是有多部手机吗?这是通过将 Employee_id 作为 Phone 上的 FK 来完成的,而不是相反。
  • 您好,只是数据库的设计而不是代码,只是添加它以澄清我在说什么,感谢 George 和 Sean 的回答。

标签: sql sql-server database database-design


【解决方案1】:

您应该从 Phone 表中引用 Employee 表。您可能还想指定哪个手机是主要手机。

Employee (
    ID (primary key)
    Name
)

Phone(
    ID (primary key)
    Employee_ID (foreign key to Employee)
    PhoneNumber
    Primary (boolean)
)

【讨论】:

  • 这种设计允许员工多次拥有相同的电话号码(使用不同的 ID)。它还允许每个员工使用多个主要电话号码。
  • 您可以添加您需要的任何其他约束。
  • 当然。但是,在每个表上添加不必要的、无意义的代理 id 列的不加思索的做法意味着您可能会忘记这些必要的约束。更不用说您的表格的列数超出了它的需要。
  • 代理键非常有用,值得推荐。当您获得更多数据库设计经验时,您就会知道。
  • 我会把这种傲慢的态度和缺乏实际争论的态度视为与你进一步讨论毫无意义的迹象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 2023-04-05
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 2010-09-14
  • 2017-07-17
相关资源
最近更新 更多