【发布时间】:2012-03-15 02:30:29
【问题描述】:
假设您正在创建一个系统来存储不同国家/地区的特征。将有相同的基本列,如名称、人口、首都等。但让我们说除此之外,您还想存储一些特定于国家/地区的信息,例如最高的山、最近的海洋、最著名的食物等。这些列对于每个列都是不同的国家。
如何使用 MySQL 之类的关系数据库来做到这一点。 我知道这更容易使用像 MongoDB 这样的无模式 NoSQL 数据库,其中每个国家/地区都可以存储为单独的文档。但是这样的事情可以使用关系数据库来完成吗?
【问题讨论】:
-
您必须创建 2 个额外的表。第一个是项目列表 (
id, title) = (1, 'Highest mountain'),第二个表用于存储国家/地区的值 - (itemId,countryId, value) -
@gaurav:我认为 nosql 标签不适合 rdbms 相关问题...
-
@iDevlop - 谢谢,我删除了 nosql 标签。
-
虽然我认为所有建议EAV 方法的答案(不知道那个术语,谢谢@iDevlop)都是正确的,但我大多数时候更喜欢一个包含大量空值的表。高度规范化的模式往往会对性能产生相当糟糕的影响,但这也取决于使用模式。也许组合是最好的方法:具有最常见属性的主表和用于附加属性值对的附加表。
标签: mysql database postgresql database-design