Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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
Java 复杂数据库表设计_Java_Database_Database Design_Map - Fatal编程技术网

Java 复杂数据库表设计

Java 复杂数据库表设计,java,database,database-design,map,Java,Database,Database Design,Map,我有一个场景,在这个场景中,我使用值在数据库中保存不同的参数。参数可以有多种类型。i、 e 弦, 整数 多值 因为它是一对多关系,所以我为它创建了两个表 parameter --------- id | name parameter_value --------------- id | parameter_id(F.K) | value 现在,另一个参数类型添加到需求中。i、 e“地图”。所以一个参数可以是一个映射。映射可以有其他参数。 我在根据这个新要求设计数据库表时遇到了问题。我需要创建

我有一个场景,在这个场景中,我使用值在数据库中保存不同的参数。参数可以有多种类型。i、 e

弦, 整数 多值

因为它是一对多关系,所以我为它创建了两个表

parameter
---------
id | name

parameter_value
---------------
id | parameter_id(F.K) | value
现在,另一个参数类型添加到需求中。i、 e“地图”。所以一个参数可以是一个映射。映射可以有其他参数。 我在根据这个新要求设计数据库表时遇到了问题。我需要创建新表还是更改现有表?
使用IBM DB2。

您说过参数可以有多种类型。i、 e.字符串、整数、多值。但是像这样的桌子

parameter_value
---------------
id | parameter_id | value
只能存储一种类型,可能是某种varcharn,其中“n”可能非常大。因此,假定为整数的参数可能最终为“wibble”


此外,从历史上看,多值不是关系数据或SQL数据类型。这正在改变。但变化是缓慢的。一些SQL平台支持某些类型的多值,但支持还远远不够普遍。我非常熟悉PostgreSQL,它支持数组、JSON(我认为是最新版本)和键/值对存储模块。其中一个可能对你有帮助。我不确定。

您可能需要提及您使用的数据库平台,因为不同的系统可能有不同的功能。但本质上,您是在问如何/是否实现EAV模型。我不知道EAV模型,也不想实现它。只是想用简单的表格。使用DB2。@imran:为什么不为每个类型使用一个单独的表,并使用另一个表将每个参数名与类型名关联?@imran tariq:我使用Oracle的Berkeley DB Java Edition来存储键/值对,其中值是由非结构化参数组成的映射。如果您的数据不是结构化的,那么SQL不一定是最佳选择。