Database 如何重新设计此SQL数据结构?
我有一个用于存储动物信息的数据结构。数据类型(列)取决于动物类型,只有少数是常见的。可以有许多具有不同特征集的动物类型(一种类型可以实现一个或多个特征集) 我想要实现的是:Database 如何重新设计此SQL数据结构?,database,postgresql,Database,Postgresql,我有一个用于存储动物信息的数据结构。数据类型(列)取决于动物类型,只有少数是常见的。可以有许多具有不同特征集的动物类型(一种类型可以实现一个或多个特征集) 我想要实现的是: 有可能基于现有的特征集创建新的动物类型,而无需稍后修改数据结构 有可能对已知动物id的动物或已知类型的动物的所有数据进行简单选择 拥有数据控制(确保不允许为“狗”类动物插入数据,例如关于飞行动物的数据) 让它尽可能简单和愚蠢(当然,现在我可以在“插入前”编写一些存储过程和触发器,以确保所有数据都是正确的,但也许还有更优雅的方
DBMS是PostgreSQL 9.1版。一种方法是不为每种不同类型的动物制作一张表格。相反,您可以使用一个引用动物类型的表来存储每种类型的特征。应该是这样的: 表格:动物 动物识别码(主键) 动物名 动物年龄 动物类型(动物类型表中的外键) 示例数据行: 1,“雷克斯”,3,2 表格:动物类型 动物类型识别码:int(主键) 动物类型名称:char 现在是存储每种类型的允许特性的表 表格:动物类型特征 动物类型标识:int(主键)(来自动物类型表的外键) 动物类型特征id:int(主键) 动物类型特征名称:char 然后是一张表格,用于存储每种动物的特征: 表格:动物特征 动物标识(表动物的外键) 动物类型标识:(来自动物类型特征表的外键) 动物类型特征id(来自动物类型特征表的外键) 动物特征值:char
这是一个非常简单的例子,可以添加的一件事是,animal_type_特性可以有一个列来存储数据,以指示每个特性可以使用哪些有效数据。这种方式的好处是允许在不额外修改应用程序和/或数据库的情况下实现新类型。可能的重复。您能告诉我们有关如何使用此数据集的更多信息,以及什么样的应用程序将维护和访问它吗?