Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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_Database Design_Database Normalization - Fatal编程技术网

Mysql 数据库规范化与数据标识符

Mysql 数据库规范化与数据标识符,mysql,database,database-design,database-normalization,Mysql,Database,Database Design,Database Normalization,我确实对数据库规范化有一些想法,但有时我认为,在某些情况下,有一个比一个数据对象=一个表模式更优雅的解决方案(我相信) 例如:文章和静态页面的存储。数据非常相似,我们可以使用一个简单的identificator列将它们放在一个表中,由于实际存储的数据不同,每种数据类型都会有一些空白的未使用COL: id | title(both) | author(article only) | content(both) | datetime(article only) | type(identificato

我确实对数据库规范化有一些想法,但有时我认为,在某些情况下,有一个比一个数据对象=一个表模式更优雅的解决方案(我相信)

例如:文章和静态页面的存储。数据非常相似,我们可以使用一个简单的identificator列将它们放在一个表中,由于实际存储的数据不同,每种数据类型都会有一些空白的未使用COL:

id | title(both) | author(article only) | content(both) | datetime(article only) | type(identificator - article/page)

这种方法是否仍然正确,或者每个数据都应该有一个表,无论其相似性如何?

您描述的是单表继承。这是一个合理的模式,明白吗

优点包括:

  • 一个表包含所有子类型
缺点包括:

  • 不能对特定于子类型的列定义
    notnull
    约束,因为它们必须可以为NULL
  • 可能不支持子类型特定列上的
    唯一
    外键
    约束(取决于RDBMS实现)
  • 如果您有许多子类型,那么该表将有许多列,其中大多数将为NULL。某些数据库对给定表的列数有限制。但是在MySQL中,每个表的最大列数是4096。InnoDB不存储空值,所以这应该不是问题
  • 如果您经常添加新的子类型,则每次添加更多子类型特定的列时都必须更改表

您可能想了解一些替代方法,例如类表继承()。

您正在描述的是单表继承。这是一个合理的模式,明白吗

优点包括:

  • 一个表包含所有子类型
缺点包括:

  • 不能对特定于子类型的列定义
    notnull
    约束,因为它们必须可以为NULL
  • 可能不支持子类型特定列上的
    唯一
    外键
    约束(取决于RDBMS实现)
  • 如果您有许多子类型,那么该表将有许多列,其中大多数将为NULL。某些数据库对给定表的列数有限制。但是在MySQL中,每个表的最大列数是4096。InnoDB不存储空值,所以这应该不是问题
  • 如果您经常添加新的子类型,则每次添加更多子类型特定的列时都必须更改表

您可能想了解一些替代方法,例如类表继承()。

您的想法的问题在于使FKs无法执行。这几乎在100%的情况下都会导致数据完整性问题。您的想法的问题在于您使FKs无法执行。这导致数据完整性问题的发生率大约为100%。