SQL 表规范化与非规范化

标签 sql sql-server indexing foreign-key-relationship

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

8年前关闭。




Improve this question




我正在使用 MS SQL Server 2012 .我有两张 table ,一张给医生,一张给手术中心。每个表当前都包含描述他们(医生和手术中心)应该如何接收报告(电子邮件、传真...)的列。两个表中保存这些数据的列是相同的。我正在考虑从每个表中提取交付方法列并制作一个通用的交付方法表,但我需要在每一行中都有医生和手术中心的外键。这很麻烦,因为分娩方法和医生之间存在一对一的关系。手术中心表也存在同样的关系。

问题:

  • 有一个带有两个外键并且其中一个始终为空的表是一种好习惯吗?
  • 处理这种情况的最佳策略是什么。

  • 我想从医生和手术中心表中提取分娩方法信息的原因是为了减少表的整体大小。这也将更好地规范我的数据。我感谢任何和所有的帮助和指导。

    最佳答案

    一个想法是有一个单一的 DeliveryMethod 表。此表中的每条记录都有一个 ID(可能是代理 - 例如身份或序列)。然后,Doctor 表将有一个 DeliveryMethodID 外键,同样,SurgeryCenter 表将有一个 DeliveryMethodID 外键。

    在典型的数据库设计中,您不想要两个相同的表。如果表大小成为问题,有多种方法可以解决此问题,包括将其设为 partitioned table .

    关于SQL 表规范化与非规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14372210/

    相关文章:

    python - 如何使用pandas.read_csv()将索引数据作为字符串读取?

    mysql - MySQL 中的模仿表( View 或存储函数)

    sql - "SELECT INTO"是做什么的?

    MySql - 在Where类中使用和条件并需要很长时间才能排序

    sql-server - int 类型的算术溢出错误,值 = 4957500001.400178

    Grails 索引

    php - 相当于mysql/laravel中的qualify语句?

    c# - asp.net、c#、用户提供的连接字符串和查询

    sql-server - 打开 Sql Server 文件时出现 System.OutOfMemoryException 错误

    Oracle:索引中的列顺序重要吗?