Мне было интересно, есть ли у вас сайт с десятком различных типов списков (магазины, рестораны, клубы, отели, события), которые требуют разных полей, есть ли смысл создавать таблицу со столбцами, определенными так: Пример магазина:
shop_id | name | X | Y | city | district | area | metro | station | address | phone | email | website | opening_hours
Или более абстрактный подход, подобный этому:
object_id | name
---------------
1 | Messy Joe
2 | Bate Motel
type_id | name
---------------
1 | hotel
2 | restaurant
object_id | type_id
---------------
1 | 2
2 | 1
field_id | name | field_type
---------------
1 | address | text
2 | opening_hours | date
3 | speciality | text
type_id | field_id
---------------
1 | 1
1 | 2
2 | 1
2 | 3
object_id | field_id | value
1 | 1 | 1st street....
1 | 3 | English Cuisine
Конечно, он может быть более абстрактным, если значение предопределено (пример: специальности могут иметь свой собственный список)
Если я возьму абстрактный подход, он может быть очень гибким, но запросы будут более сложными с большим количеством объединений. Но я не знаю, влияет ли это на производительность, выполняя эти "более сложные" запросы.
Мне было бы интересно узнать, каковы верхние и нижние стороны обоих методов. Я могу себе представить, но у меня нет опыта, чтобы подтвердить это.