Apakah ada implementasi standar dari Database Pengguna?

14

Saya perlu menerapkan fungsi dasar pengguna yang dipersonalisasi untuk situs web saya. Apakah ada struktur standar untuk database jenis ini? Seperti apakah itu praktik umum untuk memiliki semua info pengguna dan data dalam satu tabel dengan setiap pengguna memiliki barisnya sendiri, atau apakah info ini harus dibagi di antara tabel yang berbeda dan dihubungkan bersama (mungkin untuk efisiensi?) Saya tidak terlalu peduli dengan keamanan pada titik ini, tetapi saya jelas ingin memiliki enkripsi kata sandi terlalu lama.

Saya mencoba menemukan apa yang saya cari di google, tetapi tidak berhasil. Beri tahu saya jika pertanyaannya perlu klarifikasi lebih lanjut atau apa.

cfrederich
sumber

Jawaban:

17

Saya menyarankan agar Anda menggunakan standar normalisasi tipikal. Satu pengguna per baris.

  • User ID (incrementing bigint)
  • Nama Umum Pengguna (untuk ditampilkan di situs)
  • Alamat Email Pengguna
  • Garam Kata Sandi (Unik untuk setiap pengguna, disisipkan saat akun dibuat)
  • Kata sandi (Dihancurkan dengan garam - MD5 atau SHA1, preferensi Anda)
  • Tanggal Akun Dibuat

Sisanya terserah Anda diberikan aturan bisnis Anda.

Josh Bond
sumber
8

Akan harus pergi untuk mode lama besar "itu tergantung".

Tentu saja Anda akan memerlukan semacam kunci di tabel ini. Anda bisa memulai dengan UserID. Ini bisa saja berupa INT yang bertambah (atau bigint jika Anda akan memiliki lebih dari 2,1 juta pengguna).

Saya telah melihat banyak basis data yang juga menggunakan GUID sebagai UserID utama. Tapi itu membuka kaleng cacing yang sama sekali berbeda menggunakan GUID untuk PK.

Anda kemudian perlu memutuskan seberapa normal Anda ingin database Anda. Apakah Anda akan mengizinkan pengguna Anda memiliki banyak email? beberapa nomor telepon? Jika demikian, mereka harus berada di tabel yang berbeda.

Saya akan menyimpan tabel pengguna utama untuk:

  • semacam ID atau PK yang dapat Anda gunakan
  • Nama Depan / Nama Belakang atau hanya nama pengguna
  • semacam status pengguna (aktif, dinonaktifkan, dll) - (tinyint menautkan ke tabel status)
  • tanggal dibuat

Itu harus menjadi titik awal Anda.

Dari sana Anda dapat menambahkan kolom lain berdasarkan apa yang ingin Anda simpan. Email dapat ditautkan ke tabel email, alamat ke tabel alamat, dll. Kata sandi dapat menggunakan garam + hash tetapi apakah Anda sudah mempertimbangkan openids?

Saya SANGAT menyarankan Anda membaca artikel ini - http://www.sqlservercentral.com/articles/data-modeling/71725/

SqlSandwich
sumber
0

Jika ini tentang otentikasi pengguna, saya akan menggunakan LDAP. Jangan membuat database terpisah untuk pengguna, jika Anda sudah menggunakan database dan memiliki tabel lain (pesanan, produk, dll). Anda mungkin ingin bergabung dengan tabel ini.


sumber