До сих пор все, что я настроил, это таблица для пользователей, где каждый пользователь имеет уникальный user_id
. Однако мне нужно сохранить список контактов для каждого пользователя. Это должно было содержать только user_id каждого контакта. Тем не менее, я столкнулся с проблемой дизайна.Как создать базу данных, в которой есть много пользователей, и у каждого есть список нескольких контактов?
Должен ли я создать таблицу для каждого пользователя, в котором будет храниться список контактов этих пользователей? Является ли это масштабируемым решением?
Или я должен создать одну таблицу с двумя столбцами, user_id
и contact_id
, глядя что-то вроде этого:
------------------------------------ | user_id (INT) | contact_id (INT) | ------------------------------------ | 10001 | 9945 | | 10001 | 2239 | | 10002 | 9636 | ------------------------------------
Я боюсь, что если я пошел с вторым вариантом, отсутствием уникальной индексации а чистый размер таблицы в конечном итоге составит даже SELECT * FROM contacts WHERE user_id=10001;
, потому что каждая запись должна повторяться каждый раз.
Каков наилучший способ организовать эти данные?
согласился с тем, что никогда не имеет переменного количества таблиц! – amaster
Только для целей обучения первичный ключ будет уникальной комбинацией пользователя и контакта? Это так просто! Я понятия не имел, что первичные ключи могут охватывать несколько столбцов. Я новичок в этом. Спасибо! –
@ CannonPalms: Там вы идете.:) Для записи, быть новым, на самом деле не является «оправданием», поскольку это упоминается в самой первой строке на [соответствующей странице руководства] (http://dev.mysql.com/doc/refman/5.5/en /optimizing-primary-keys.html). –