sql-最佳设计实践表

sql-最佳设计实践表,sql,Sql,我需要创建一个系统,用户可以在其中添加猫或狗,但我不知道如何设计表格来处理它 首先: 用户可以添加狗和猫 狗和猫需要一些不同的列 他们每个人都有一个种族(作为人类,我不知道这是否正确) 例如,对于狗,我需要2个特定字段,对于猫,我需要其他2个特定字段,然后我有大约5/6个共享字段 哪一个是最佳实践?两个不同的表或只有一个表,其中一列名为type,其中: 类型=1是狗 类型=2是类别 然后设置NULL我不需要的特定字段 同样的问题也适用于狗的种族和猫的种族……最好是一个单独的表格,其中存储所有的种

我需要创建一个系统,用户可以在其中添加猫或狗,但我不知道如何设计表格来处理它

首先:

  • 用户可以添加狗和猫
  • 狗和猫需要一些不同的列
  • 他们每个人都有一个种族(作为人类,我不知道这是否正确)
  • 例如,对于狗,我需要2个特定字段,对于猫,我需要其他2个特定字段,然后我有大约5/6个共享字段

    哪一个是最佳实践?两个不同的表或只有一个表,其中一列名为
    type
    ,其中:

    类型=1是狗
    类型=2是类别
    然后设置
    NULL
    我不需要的特定字段

    同样的问题也适用于狗的种族和猫的种族……最好是一个单独的表格,其中存储所有的种族,并用
    类型
    列将它们分开?

    或者两个不同的表格是正确的方法?

    我会说:从简单开始。一个用于动物的表具有类型列(它可以是显式的varchar,如“DOG”和“CAT”),一个用于种族的表也具有类型列。在上面插入ORM会更容易,如果必须运行一些统计数据,查询也会更容易

    唯一可能出现的问题是: -越来越多的列将是一个动物独有的,这将导致一些繁重的重构
    -如果应用程序使用一个包含所有列的表来处理数据

    ,则Pet的类型列与其竞争类型列之间可能存在不匹配,只要没有太多的空/浪费列即可。就我个人而言,我更希望有一个宠物表和另外两个猫/狗表共享列(PK/FK=PetID链接到宠物表)。无论哪种方式,无论你选择什么,都要在应用程序的其余部分保持一致。