Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 什么';为这种超级/子类型的情况建模的最佳DB设计是什么?_Database_Database Design_Modeling_Subtype_Supertype - Fatal编程技术网

Database 什么';为这种超级/子类型的情况建模的最佳DB设计是什么?

Database 什么';为这种超级/子类型的情况建模的最佳DB设计是什么?,database,database-design,modeling,subtype,supertype,Database,Database Design,Modeling,Subtype,Supertype,假设您必须对事件进行建模。有四种类型的事件(可能更多)。它们都有一些共同的特点。因此,主共享字段将位于名为“事件”的超类型表中,每个事件类型将有一个表,其中事件id为FK。我甚至可以有一个事件类型表来帮助我强制一个事件id只能是一种类型。这是一本很好的教科书,但是,我想知道当这些事件类型中的3个共享一个子集字段,并且这些字段对它们是必需的(所以我不能将它们放在supertype表中,可以吗?)。除此之外,只有3种事件类型共享的某些字段具有有限的值集(即岩石类型),这是一个典型的查找表 那么,我是

假设您必须对事件进行建模。有四种类型的事件(可能更多)。它们都有一些共同的特点。因此,主共享字段将位于名为“事件”的超类型表中,每个事件类型将有一个表,其中事件id为FK。我甚至可以有一个事件类型表来帮助我强制一个事件id只能是一种类型。这是一本很好的教科书,但是,我想知道当这些事件类型中的3个共享一个子集字段,并且这些字段对它们是必需的(所以我不能将它们放在supertype表中,可以吗?)。除此之外,只有3种事件类型共享的某些字段具有有限的值集(即岩石类型),这是一个典型的查找表

那么,我是否应该重复3个事件表中的所有这些字段,并将一个查找表设置为这3个表的外键?我需要中间桌吗

提前感谢,,
Joe

最好的做法是创建表的基本版本,并开始添加数据、编写查询或在其上构建屏幕(如果这是您任务的一部分)。尽量减少数据重复,同时保持轻松创建和使用数据的能力。这会让你知道哪一个是最好的——任何解决方案都有好的部分和坏的部分