У меня есть таблица в MYSQL с name
, level
и xp
колонками, а другая с level
, requiredxp
. Я хочу сделать это, если пользователь достигнет requiredxp
с их значением xp
, они меняют свой уровень.Нужно ли использовать внешние ключи в этом случае?
Необходимо использовать первичные ключи и внешние ключи, чтобы сделать это автоматически, не отправляя информацию на сервер, проверьте наличие xp
и установите функцию с множеством операторов if для проверки на requiredxp
в другой стол, а затем, если он больше, чем пользователь xp
, измените level
?
Я относительно новым для MySQL так, пожалуйста, поправьте меня, если я ошибаюсь в чем-то :)
В вашем прецеденте нет внешних ключей. В вашем случае использования у вас будет просто дополнительный запрос или соединение, чтобы определить уровень пользователя на основе требуемого xp и текущего xp пользователя. Вы не хотели бы хранить уровень пользователя отдельно в пользовательской таблице, потому что это может вызвать проблемы синхронизации, если вы когда-либо захотите изменить требуемый xp для уровня. – hofan41
Это не дает строгого ответа на ваш вопрос, но, на мой взгляд, не полагайтесь на ограничения базы данных, чтобы обеспечить необходимую логику вашего приложения. У вас гораздо больше возможностей для обработки изменений и странных случаев (в вашем домене, возможно, вы добавляете магический элемент, который автоматически предоставляет дополнительный уровень) в коде, чем через ограничения базы данных. –
Так оставьте его без каких-либо иностранных и первичных ключей, и ..? – pedritoalfonso