2015-04-28 4 views
1

У меня есть конечная точка /user, которая создает уникальный UUID для пользователя. Он вставляет данные (phoneno, gender, age) в таблицу (таблица cassandra), а затем пересылает одни и те же данные на другой сервер вместе с только что созданным user_id, имея MYSQL в качестве базы данных.Создание уникального ключа как FK - MySQL

Теперь в моем MySQL таблица выглядит следующим образом.

id(varchar) 
phone no 
age 
gender 
etc. 

Но я читал, что использование VARCHAR как ПК очень плохое решение. Поэтому я изменил свою таблицу следующим образом: -

id(interger auto increment) 
user_id (varchar unique) 
phone no 
age 
gender 
etc. 

У меня есть другая конечная точка /recharge, которая содержит user_id (UUID), recharge_amount, operator, etc..

Моя перезарядка таблица выглядит следующим образом: -

user_id FK 
amount 
operator 

Теперь возникает проблема, что всякий раз, когда я буду получать данные для /recharge мне нужно, чтобы получить соответствующий идентификатор пользователя из таблицы Users, чтобы ссылаться на него в таблице подзарядки, что является дополнительной операцией. т.е. для каждой вставки будет выполняться дополнительная операция чтения.

Могу ли я использовать/использовать уникальный ключ как свой FK в таблице пополнения баланса. Если нет, то каково возможное решение?

ответ

0

Да, вы можете использовать уникальный ключ как внешний ключ. Чтобы использовать столбец FK в другой таблице, он должен быть PK или уникальным ключом.

+0

Благодарим за быстрый ответ. Из разных блогов я читал, что использование VARCHAR как ПК очень плохое решение, поскольку оно снижает скорость записи, если записи составляют более миллиона, и в моем случае это будет. Он снижает скорость, потому что ему необходимо перестроить индекс и различные другие вещи. Но как насчет использования VARHCAR asFK. Будет ли это влиять на скорость записи? Имеет ли это тот же эффект, что и включение VARCHAR в FK? – PythonEnthusiast

+0

VARCHAR as PK - плохой путь. Но я не знаю, как VARCHAR как FK повлияет на производительность, я думаю, что это не так, как это не связано правилами, установленными для ПК. – GouravR