具有多列的单表
这种方法创建一个单一的表表,其中包含所表示实体的每个可能属性的列。它通过防止重复行来简化数据检索并确保数据完整性。但是,添加或删除列需要更改表结构,可能会影响现有代码。
示例:
Shop: | shop_id | name | X | Y | city | district | area | metro | station | address | phone | email | website | opening_hours |
灵活抽象表(实体属性-Value)
这种方法使用了一系列相互关联的表:
示例:
Object: | object_id | name | |---|---| | 1 | Messy Joe's | | 2 | Bate's Motel | Type: | type_id | name | |---|---| | 1 | hotel | | 2 | restaurant | Object-Type: | object_id | type_id | |---|---| | 1 | 2 | | 2 | 1 | Field: | field_id | name | field_type | |---|---|---| | 1 | address | text | | 2 | opening_hours | date | | 3 | speciality | text | Type-Field: | type_id | field_id | |---|---| | 1 | 1 | | 1 | 2 | | 2 | 1 | | 2 | 3 | Object-Field: | object_id | field_id | value | |---|---|---| | 1 | 1 | 1st street.... | | 1 | 3 | English Cuisine |
单身的表:
灵活的抽象表(EAV):
性能注意事项
单表或 EAV 之间的选择不会显着影响如果数据库针对特定工作负载进行了优化,则可以提高性能。由于查询中需要额外的联接,EAV 可能会产生轻微的开销。然而,这种开销在现代数据库系统中通常是可以管理的。
单表和 EAV 之间的选择取决于应用程序的具体要求。如果需要频繁的架构更新或者灵活性至关重要,EAV 可能是更好的选择。然而,对于更简单的数据模型或当性能至关重要时,单表方法可能更合适。
以上是单表与灵活抽象表:哪种关系数据库设计适合我的应用程序?的详细内容。更多信息请关注PHP中文网其他相关文章!