У меня есть таблица с тремя полями, User
, City
и Country
, где ровно одно полей должно быть постоянно не NULL
. Могу ли я использовать для этого ограничение SQL или переосмыслить то, что я делаю?
Сценарий состоит в том, что моя база данных должна содержать документы, которые можно прикрепить к пользователям, городам или странам. Таким образом, строка в этой таблице содержит ровно один документ для пользователя, города или страны. Тем не менее, нужно уметь искать и все документы, независимо от того, к какому объекту они были «прикреплены».
Причина, по которой я вместо этого не использую три разные таблицы, заключается в том, что я хочу избежать JOIN
трех таблиц при поиске документов во всех трех местах. Я представляю, что вид денормализации, который я пытаюсь использовать здесь, улучшит производительность, но я не уверен.
Мысли