Мне интересно, будут ли последующие схемы БД иметь последствия позже.Допустим, я пишу объект сущности.Я не уверен, какие свойства place
будут храниться в БД.Я собираюсь создать две таблицы: одну для хранения необходимой (или общей) информации, а другую для хранения дополнительной информации.
Таблица 1 - Место
- PK PlaceId
- Имя
- Лат
- Lng
- и т. Д. (все общие поля)
Таблица 2 - PlaceData
- PK DataId
- PK FieldName
- PK FK PlaceId
- FieldData
Сценарий использования
Я хочу, чтобы некоторые посетители имели возможность ввода пользовательских полей о месте.Например, ресторан - это место, в котором может иметь следующие поля: HasParking, HasDriveThru, requireReservation и т. Д. ... но дилер также является местом, и эти поля не имеют смысла дляавтодилер.
Я хочу поддержать любой тип места из одной таблицы (ну, во 2-й таблице есть настраиваемые поля), потому что я не знаю количество типов местэто в конечном итоге будет добавлено на мой сайт.
Общая цель
На моем сайте asp.net MVC (C # / Razor), где я отображаю place
,он будет показывать атрибуты в виде неупорядоченного списка, заполненного: SELECT * FROM PlaceData WHERE PlaceId = @0
.
Таким образом, мне не нужно будет показывать пустые имена полей в представлении (или делать проверку string.IsNullOrWhitespace()
для каждого икаждое поле. Что я был бы вынужден сделать, если бы каждый атрибут был столбцом в таблице.
Я предполагаю, что этот сценарий довольно распространен, но есть ли лучшие способы сделать это? Особенно с точки зрения производительности? Каковы основные недостатки этой схемы