Чи існує стандартна реалізація бази даних користувачів?


14

Мені потрібно реалізувати основні персоналізовані функції користувача для свого веб-сайту. Чи існує стандартна структура для баз даних такого типу? Як, звичайно, вся інформація про користувача та дані в одній таблиці, кожен користувач має власний рядок, чи слід поділяти цю інформацію між різними таблицями та з’єднувати між собою (можливо, для ефективності?) Я не дуже переймаюся безпекою на даний момент, але я, очевидно, хочу зашифрувати пароль занадто довго.

Я намагався знайти те, що шукав у Google, але безрезультатно. Просто дайте мені знати, якщо питання потребує подальшого уточнення чи чогось іншого.

Відповіді:


17

Я пропоную використовувати типові стандарти нормалізації. Один користувач на рядок.

  • Ідентифікатор користувача (збільшується bigint)
  • Загальне ім'я користувача (відображається на сайті)
  • Адреса електронної пошти користувача
  • Сіль паролів (унікальна для кожного користувача, вставлена ​​під час створення облікового запису)
  • Пароль (з солі - MD5 або SHA1, ваші уподобання)
  • Дата було створено

Решта - це залежно від правил вашого бізнесу.


Сучасними варіантами хешування паролів будуть argon2, bcrypt або scrypt.
дунґард

в цьому списку має бути і is_active
Ibo

8

Потрібно піти на велику давню моду "це залежить".

Звичайно, вам знадобиться якийсь ключ на цьому столі. Ви можете почати з UserID. Це може бути просто збільшення INT (або bigint, якщо у вас буде більше 2,1 мільйонів користувачів).

Я бачив, що багато баз даних також використовують GUID як основний UserID. Але це відкриває зовсім іншу банку глистів, використовуючи GUID для ПК.

Тоді вам потрібно вирішити, наскільки нормалізовано ви хочете базу даних. Чи дозволите своєму користувачеві мати кілька електронних листів? кілька телефонних номерів? Якщо так, вони повинні бути в іншій таблиці.

Я зберігаю основну таблицю користувачів для:

  • якийсь ідентифікатор або ПК, який ви можете використовувати
  • Ім'я / Прізвище або просто ім’я користувача
  • певний статус користувача (активний, відключений тощо) - (мініатюрна посилання на таблицю стану)
  • створена дата

Це має бути вашою відправною точкою.

Звідти ви можете додати інші стовпці на основі того, що ви хочете зберігати. Електронна пошта може посилатися на таблицю електронної пошти, адресу в адресну таблицю і т.д.

Я настійно рекомендую вам прочитати цю статтю - http://www.sqlservercentral.com/articles/data-modeling/71725/


0

Якщо мова йде про автентифікацію користувачів, я б використовував LDAP. Не створюйте для користувачів окрему базу даних, якщо ви вже використовуєте базу даних та маєте інші таблиці (замовлення, продукти тощо). Ви можете приєднатись до цих таблиць.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.