sql - 如何在数据库中表示一个实体的许多相似属性?

标签 sql database postgresql database-design entity-attribute-value

假设我正在建立一个关于汽车的网站。汽车实体有很多类似枚举的属性:

  • 传输(手动/自动)
  • 燃料(汽油/柴油/生物乙醇/电)
  • 车身样式(轿跑车/轿车/敞篷车/...)
  • 空调(无/简单/双区)
  • 外观颜色(黑色/白色/灰色/蓝色/绿色/...)
  • 内饰颜色(黑色/白色/灰色/蓝色/绿色/...)
  • 等等

这些属性的列表将来可能会发生变化。在数据库中对它们建模的最佳方法是什么?我可以想到以下选项,但不能真正决定:

  • 使用带有枚举值的 car 表中的字段
    • 以后很难添加更多列,可能是最快的
  • 使用 car 表中的字段作为引用查找表的外键
    • 以后很难添加更多的列,有点慢
  • 为每个存储可能值的属性创建单独的表,并创建另一个表来存储汽车与属性值之间的联系
    • 方便以后添加更多可能的值,甚至更慢,似乎太复杂了

最佳答案

理想情况是创建一个关系数据库。 DB 中的每个表都应该由一个类表示,就像在休眠中一样。你应该为汽车制作2张 table 。一种用于汽车内部,一种用于汽车外部。如果您想添加额外的功能,只需添加更多列即可。

关于sql - 如何在数据库中表示一个实体的许多相似属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425574/

相关文章:

sql - 将查询结果返回到数组中

python - Django 导入带回车的 CSV

sql - Oracle 中针对集合类型 'object' 进行批量收集

mysql - 使用纯文本的 SQL 更新 MD5 密码

MySQL使用frm、myd和myi文件恢复数据库功能

database - 如何将学位解析为一个类别?

sql - Postgres 字符串数组的唯一约束/索引

mysql - 限制每列值的结果

android - ToggleButtons 的 SQLite Dynamic where-clause

java - 将 MySQL 表中的行与 Java 进行比较的最有效方法是什么