我对这两种结构感到非常困惑。这两个表的优缺点是什么?哪一个更好,为什么?
表格1
id, name, age, birthdate, address
somedata1 somedata1 somedata1 somedata1 somedata1
somedata2 somedata2 somedata2 somedata2 somedata2
somedata3 somedata3 somedata3 somedata3 somedata3
表2
id, col_name, col_value
somedata name somedata
somedata age somedata
somedata birthdate somedata
somedata address somedata
somedata2 name somedata2
somedata2 age somedata2
somedata2 birthdate somedata2
somedata2 address somedata2
somedata3 name somedata3
somedata3 age somedata3
somedata3 birthdate somedata3
somedata3 address somedata3
通常,第二个表在数据库设计的上下文中是 反模式的 。而且,它还有特定的名称: 实体属性值
(EAV)。在某些情况下,使用这种设计是有道理的,但是这种情况很少见,甚至可以避免。
数据完整性支持
尽管事实是这样的结构似乎更加“灵活”或“先进”,但这种设计仍存在缺陷。
"customer_name"
在第一种情况下将其写为属性名称-另一个开发人员会忘记使用它"name_of_customer"
。并且..没关系,DB会通过它,并且您将花费数小时来调试这种情况。行重建
此外,在常见情况下,行重构将很糟糕。例如,如果您有5个属性-这将是5个自我表JOIN
-s。对于如此简单的情况-乍一看-
情况来说太糟糕了。因此,我什至都不想想象您将如何维护20个属性。
我的意思是-不。在RDBMS中,总会有避免这种情况的方法。这太糟糕了。而且,如果打算使用EAV,则最佳选择可能 是非关系 数据库。
问题内容: 我已经看到在Python中实际上有两种(也许更多)串联列表的方法:一种方法是使用extend()方法: 另一个使用plus(+)运算符: 现在,我想知道:这两个选项中的哪一个是列表连接的“ pythonic”方式,并且两者之间有区别(我查看了Python的官方教程,但找不到有关此主题的任何信息)。 问题答案: 在字节码级别上的唯一区别是,该方式涉及函数调用,在Python中该函数比。调
本文向大家介绍数组和结构之间的区别,包括了数组和结构之间的区别的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解数组和结构之间的区别。 数组 它指的是由相同/相同数据类型的元素组成的集合。 它使用下标/'[]'(方括号)来访问元素。 它是指向集合的第一个元素的指针。 数组对象无法实例化。 数组的大小基于数组中元素的数量是固定的。 此大小是元素数量与每个元素的大小的乘积。 数组中不能使用
问题内容: 抱歉,我的问题是否愚蠢,没关系。但是我只想知道在这两种情况下会发生什么。 两者都只给出相同的结果。但是我知道有一些原因。我不知道这一点。这两个条件有什么区别? 问题答案: 它们之间没有任何区别。许多程序员使用第二种方法只是为了确保他们没有得到。就这样。
问题内容: 具有两个不同的.tar.gz文件:第二个.tar.gz是第一个.tar.gz的子集。 我需要单行命令才能在第二个.tar.gz中找到丢失的文件。 例如: 1.tar.gz文件列表: 2.tar.gz文件列表: 输出应为: 问题答案: 只需列出内容并执行:
本文向大家介绍C#中的类和结构之间的区别,包括了C#中的类和结构之间的区别的使用技巧和注意事项,需要的朋友参考一下 为了区分类和结构,我们首先必须了解,在保存和定义数据的上下文中,结构和类似乎是等效的。这两个都可以定义并在其数据成员中保留一些默认值。但是,如果我们在此上下文之外考虑它们,则与结构相比,类将提供更多的灵活性以及功能。 以下是类和结构之间的重要区别。 序号 键 类 结构体 1 数据类型
问题内容: 被分组的一头雾水。它有什么不同? 问题答案: 这里有两件事需要解释:量化组的行为和方法的设计。 在您的第一个示例中,匹配在组#1中捕获的。然后,它匹配并捕获到#1组中,从而覆盖。然后再次使用,这就是比赛结束时第一组的比赛。 但是它 确实 匹配整个字符串。如果您正在使用或者,你就可以看MatchObject,看到包含与包含。但是返回字符串,而不是MatchObjects。如果没有组,则返