มีการใช้ฐานข้อมูลผู้ใช้แบบมาตรฐานหรือไม่?


14

ฉันต้องใช้ฟังก์ชั่นผู้ใช้ส่วนตัวขั้นพื้นฐานสำหรับเว็บไซต์ของฉัน มีโครงสร้างมาตรฐานสำหรับฐานข้อมูลประเภทนี้หรือไม่? ไลค์มันเป็นเรื่องธรรมดาที่จะมีข้อมูลผู้ใช้และข้อมูลทั้งหมดในตารางเดียวโดยที่ผู้ใช้แต่ละคนมีแถวของตัวเองหรือข้อมูลนี้ควรถูกแบ่งออกเป็นตารางต่าง ๆ และเชื่อมโยงเข้าด้วยกัน (อาจจะมีประสิทธิภาพ?) ณ จุดนี้ แต่เห็นได้ชัดว่าฉันต้องการเข้ารหัสรหัสผ่านไม่นาน

ฉันพยายามค้นหาสิ่งที่ฉันกำลังมองหาบน google แต่ไม่มีประโยชน์ เพียงแจ้งให้เราทราบหากคำถามนั้นต้องการคำชี้แจงเพิ่มเติมหรืออะไรก็ตาม

คำตอบ:


17

ฉันขอแนะนำให้คุณใช้มาตรฐานการทำให้เป็นมาตรฐานทั่วไป ผู้ใช้หนึ่งคนต่อแถว

  • ID ผู้ใช้ (การเพิ่มภาพใหญ่)
  • ชื่อสามัญผู้ใช้ (ที่จะแสดงบนเว็บไซต์)
  • ที่อยู่อีเมลผู้ใช้
  • รหัสผ่านเกลือ (เฉพาะสำหรับผู้ใช้ทุกคนแทรกเมื่อสร้างบัญชี)
  • รหัสผ่าน (แฮชด้วยเกลือ - MD5 หรือ SHA1 ความต้องการของคุณ)
  • สร้างบัญชีวันที่แล้ว

ส่วนที่เหลือขึ้นอยู่กับคุณตามกฎเกณฑ์ทางธุรกิจของคุณ


ตัวเลือกการแฮชรหัสผ่านสมัยใหม่จะเป็น argon2, bcrypt หรือ scrypt
douggard

8

จะต้องไปสำหรับแฟชั่นเก่าที่ยิ่งใหญ่ "มันขึ้นอยู่กับ"

แน่นอนคุณจะต้องมีคีย์บางอย่างในตารางนี้ คุณสามารถเริ่มต้นด้วย ID ผู้ใช้ นี่อาจเป็น INT ที่เพิ่มขึ้น (หรือยิ่งใหญ่ถ้าคุณจะมีผู้ใช้มากกว่า 2.1 ล้านคน)

ฉันเคยเห็นฐานข้อมูลจำนวนมากยังใช้ GUID เป็น UserID หลัก แต่นั่นเป็นการเปิดเวิร์มต่าง ๆ โดยใช้ GUID สำหรับ PKs

จากนั้นคุณต้องตัดสินใจว่าจะทำให้ฐานข้อมูลของคุณเป็นมาตรฐาน คุณจะอนุญาตให้ผู้ใช้ของคุณมีอีเมลหลายฉบับหรือไม่? หมายเลขโทรศัพท์หลายหมายเลข? ถ้าเป็นเช่นนั้นพวกเขาควรจะอยู่ในตารางที่แตกต่างกัน

ฉันต้องการเก็บตารางผู้ใช้หลักไปที่:

  • ID หรือ PK บางประเภทที่คุณสามารถใช้ได้
  • ชื่อ / นามสกุลหรือเพียงแค่ชื่อผู้ใช้
  • สถานะบางอย่างของผู้ใช้ (ใช้งาน, ปิดใช้งาน, ฯลฯ ) - (เชื่อมโยงไปยังตารางสถานะเล็ก ๆ )
  • วันที่สร้าง

นั่นควรเป็นจุดเริ่มต้นของคุณ

จากตรงนั้นคุณสามารถเพิ่มคอลัมน์อื่น ๆ ตามสิ่งที่คุณต้องการจัดเก็บ อีเมลสามารถเชื่อมโยงไปยังตารางอีเมลที่อยู่ไปยังตารางที่อยู่ ฯลฯ รหัสผ่านสามารถใช้แฮช + เกลือ แต่คุณคิดว่าเป็น openids หรือไม่

ฉันขอแนะนำให้คุณอ่านบทความนี้ว่า - http://www.sqlservercentral.com/articles/data-modeling/71725/


0

หากเกี่ยวกับการตรวจสอบสิทธิ์ของผู้ใช้ฉันจะใช้ LDAP อย่าสร้างฐานข้อมูลแยกต่างหากสำหรับผู้ใช้หากคุณใช้ฐานข้อมูลอยู่แล้วและมีตารางอื่น ๆ (คำสั่งซื้อผลิตภัณฑ์ ฯลฯ ) คุณอาจต้องการเข้าร่วมตารางเหล่านี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.