Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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
Mysql 在数据库中合并小型静态表是一种好的做法吗?_Mysql_Database_Django - Fatal编程技术网

Mysql 在数据库中合并小型静态表是一种好的做法吗?

Mysql 在数据库中合并小型静态表是一种好的做法吗?,mysql,database,django,Mysql,Database,Django,我正在开发一个数据库来存储测试数据。每段数据都有11个元数据标记。目前,我为每个元数据选项都有一个单独的表。我在这里看到了一些关于许多小表的最佳实践的问题,但我想我会为自己的项目提出这个问题,因为我没有从其他问题中得到明确的答案 这是我的表格列表,每个表格中都有字段: Source Type - id, name, description For Flight - id, name, description Site - id, name, abrv, description Stand - i

我正在开发一个数据库来存储测试数据。每段数据都有11个元数据标记。目前,我为每个元数据选项都有一个单独的表。我在这里看到了一些关于许多小表的最佳实践的问题,但我想我会为自己的项目提出这个问题,因为我没有从其他问题中得到明确的答案

这是我的表格列表,每个表格中都有字段:

Source Type - id, name, description
For Flight - id, name, description
Site - id, name, abrv, description
Stand - id, site (FK site table), name, abrv, descrition
Sensor Type - id, name, channels, descrition
Vehicle - id, name, abrv, descrition
Zone - id, vehicle (FK vehicle table), name, abrv, description
Event Type - id, name, description
Event - id, event type (FK to event type Table), name, descrition
Analysis - id, name, descrition
Bandwidth - id, name, descrition
您可以看到每个表中的字段都或多或少相同。有三个表引用另一个表


最好只有一个名为Meta的大型表,其中包含以下字段:

Meta: id, metavalue, name, abrv, FK, value, descrition
其中metavalue=上述表格名称之一
FK=对元表中另一行的引用,以代替外键

我不熟悉数据库,多个表似乎是最直观的,但一个表使编程更容易

因此,问题是:

  • 减少表的数量并将所有静态值放在一个表中是一种良好的做法
  • 有一个自引用表是否不好
  • 仅供参考,我正在windows服务器上使用django和mysql制作此web数据库,并使用NTFS格式

    小贴士和最佳实践值得欣赏

    谢谢。

    “如果只有一张大桌子会更好吗”-断然强调,不

    这种反模式有时被称为“一张表来统治所有人”

    :一个用于保存所有域值的表

    • 在查询中使用数据要容易得多

    • 数据可以很自然地使用外键约束进行验证, 对另一方不可行的事情 解决方案,除非您实现范围 每一张桌子都有钥匙,真是糟糕透了 要维持的混乱

    • 如果你需要保存更多关于 不仅仅是代码, “UPS”和描述“联合包裹” 服务”,那么就简单到 添加一两列。您甚至可以 将表扩展为一个完整的表 代表以下企业: 是该物品的承运商

    • 所有较小的域表都可以放在一页磁盘上。 这确保了一次读取(并且可能 缓存中的单个页面)。如果另一个 在这种情况下,您可能有您的域表 分散在许多页上,除非你 引用表名称上的群集, 这可能会导致它变得更复杂 在以下情况下使用非聚集索引代价高昂: 你有很多价值观

    • 与大多数域表一样,您仍然可以为所有行使用一个编辑器 可能有相同的基础 结构/用法。而 无法查询所有域 一个查询中的值很容易,为什么 您想?(可以使用联合查询 可以轻松地创建表的名称 如果需要,但这似乎是一个 不太可能需要。)

    “只有一张大桌子会更好吗”-断然强调,不会

    这种反模式有时被称为“一张表来统治所有人”

    :一个用于保存所有域值的表

    • 在查询中使用数据要容易得多

    • 数据可以很自然地使用外键约束进行验证, 对另一方不可行的事情 解决方案,除非您实现范围 每一张桌子都有钥匙,真是糟糕透了 要维持的混乱

    • 如果你需要保存更多关于 不仅仅是代码, “UPS”和描述“联合包裹” 服务”,那么就简单到 添加一列或两列。你甚至可以 将表扩展为一个完整的表 代表以下企业: 是该物品的承运商

    • 所有较小的域表都可以放在一页磁盘上。 这确保了一次读取(并且可能 缓存中的单个页面)。如果另一个 在这种情况下,您可能有您的域表 分散在许多页上,除非你 引用表名称上的群集, 这可能会导致它变得更复杂 在以下情况下使用非聚集索引代价高昂: 你有很多价值观

    • 与大多数域表一样,您仍然可以为所有行使用一个编辑器 可能有相同的基础 结构/用法。虽然你会 无法查询所有域 一个查询中的值很容易,为什么 你想吗?(工会质询可以 可以轻松地创建表的名称 如果需要,但这似乎是一个 不太可能需要。)


    其中大多数看起来除了将代码扩展为描述之外什么都不会做。你需要桌子吗?只需定义一组常量或代码,然后为这些代码建立一个长描述字典


    引用表中的字段仅存储代码。例如:“SRC_-FOO”、“EVT_-BANG”等等。

    这些代码中的大多数看起来除了将代码扩展为描述之外什么都不会做。你需要桌子吗?只需定义一组常量或代码,然后为这些代码建立一个长描述字典


    引用表中的字段仅存储代码。例如:“SRC_FOO”、“EVT_BANG”等。

    这通常也被称为一个真正的查找表(OTLT)-参见我的旧博客条目。

    这通常也被称为一个真正的查找表(OTLT)-参见我的旧博客条目。

    坚定的回答。你能解释一下为什么把一堆小表聚在一起不是个好主意吗?是不是因为将来我可能想扩展,这是最通用的解决方案?请看链接文章,路易斯·戴维森比我解释得更好。谢谢,这是一篇内容丰富的文章。我将尝试将“代理键”合并到我的表中,以确保有一个人眼可以理解的元素,并维护我最初构思的规范化元表。似乎有更多的人要发表评论,而我没有