Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > การออกแบบฐานข้อมูลผู้ใช้ระบบ ควรออกแบบอยางงัยครับช่วยแนะนำที



 

การออกแบบฐานข้อมูลผู้ใช้ระบบ ควรออกแบบอยางงัยครับช่วยแนะนำที

 



Topic : 052564



โพสกระทู้ ( 254 )
บทความ ( 0 )



สถานะออฟไลน์




คือผมคิดไม่ออกเกี่ยวกับการแบ่งสิทธิ์การใช้งานอะครับ พี่ๆช่วยออกแบบหรือช่วยแนะนำให้ผมหน่อยน่าครับ

คือผมจะสร้างฐานข้อมูลผู้ใช้ระบบ ก็จะมี 2 Table คือ 1.ข้อมูลผู้ใช้ระบบ ประกอบด้วย รหัส ชื่อ username password ฯลฯ , 2.ข้อมูลประเภทผู้ใช้ระบบ ประกอบด้วย รหัสประเภท ชื่อประเภท(ตัวอย่างประเภท admin,พนักงานจัดการสินค้า,พนักงานจัดการข้อมูลคงคลัง,พนักงานจัดการข้อมูลการขาย,สมาชิก ฯลฯ) ทั้ง 2 Table นี้ มันจะเมื่อเอามาเชื่อกันมันจะเป็น Meny to meny ตามหลักมันก็จะให้สร้างตารางขึ้นมาอีก 1 ตาราง ผมก็จะสร้างตาราง กลุ่มผู้ใช้ระบบ ก็จะมี รหัสกลุ่ม รหัสผู้ใช้ระบบ รหัสประเภท แต่หลังจากนี้ผมคิดไม่ออกอ่าครับ คืออาจารย์ต้องการ ให้เราสามารถที่จะเพิ่มสิทธิ์เข้าไปได้ว่า คนนี้เป็น admin แต่สามารถกำหนดให้เค้า เป็นพนักงานจัดการข้อมูลสินค้าได้ ก็คือ 1 คนสามารถมีได้หลายสิทธิ์ แล้ว สิทธิ์นั้นก็สามารถมีได้หลายคน ผมต้องออกแบบฐานข้อมูลอยางงัยอะครับ ตอนนี้ผมยังออกแบบไม่ได้เลย งงๆมากๆ เลยยังไม่ได้ลง code พี่ๆช่วยแนะนำหรือช่วยบอกหน่อยนะครับ ขอบคุงมากๆเลยครับ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-12-02 14:32:00 By : น้ำจัEฅu View : 3673 Reply : 7
 

 

No. 1



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ไม่ลองดูตัวอย่างจากของ MySQL ล่ะครับ หรือถ้าของสาย DotNet ก็พวกตารางที่ขึ้นต้นด้วย aspnet_ ทั้งสองตัวอย่างก็จะเหมาะกันไปคนละแบบอ่ะครับ แต่จากที่อ่านที่คุณถามมานี่ น่าจะเหมือนกับของ MySQL มากกว่าครับ เพียงแต่ของ MySQL เค้าไม่ีมีเรื่องจัดกลุ่ม

ลองดูตัวอย่างแบบนี้ครับ

TB : AppUsers
- UserID PK Unique Index
- Name
- Lastname
- Password
- GroupID FK

TB : AppGroups
- GroupID PK Unique Index
- GroupName
- ManageUsers Char(1)
- ManageGroup Char(1)
- Recevie Char(1)
- ManageStore Char(1)

ก็จะเป็นการกำหนดความสามารถก่อนน่ะครับ ว่าโปรแกรมเราจะมีการกำหนดสิทธิให้ทำอะไรบ้าง แล้วก็เอามาเป็น column นึง ใส่ค่าเป็น Y หรื N แล้วเวลา login มาโปรแรกมก็อ่านแล้วก็ตรวจสอบว่าสามารถทำอะไรได้บ้างอ่ะครับ ใช้แค่ 2 tables เอง








ประวัติการแก้ไข
2010-12-02 15:02:16
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 14:49:37 By : salapao_codeman
 


 

No. 2



โพสกระทู้ ( 373 )
บทความ ( 0 )



สถานะออฟไลน์


ลองนึกถึง windows login ดูครับ ว่า มันใช้หลักอย่างไร คร่าวๆ

Table User คือ ผู้ใช้งาน
[USER_ID] [bigint] IDENTITY(1,1) NOT NULL,
[USER_NAME] [nvarchar](50) NOT NULL,
[PWD] [nvarchar](50) NOT NULL,
[PWD_ENCRYPT] [nvarchar](200) NOT NULL,
[USER_STATUS] [nvarchar](50) NOT NULL,
[LAST_LOGIN_FAILURE] [datetime] NULL,
[CREATED_BY] [nvarchar](100) NOT NULL,
[CREATED_DATETIME] [datetime] NOT NULL,
Table Role หรือ Group ใน windows นั่นเอง อันนี้คือ หน้าที่ หรือกลุ่ม เช่น Administrator, Everyone, PowerUser เป็นต้น
[SQ] [bigint] IDENTITY(1,1) NOT NULL,
[ROLE_ID] [bigint] NOT NULL,
[ROLE_NAME] [nvarchar](100) NOT NULL,
[ROLE_DESC] [nvarchar](200) NOT NULL,
[ROLE_STATUS] [nvarchar](50) NOT NULL,
[CREATED_BY] [nvarchar](100) NOT NULL,
[CREATED_DATETIME] [datetime] NOT NULL,
Table Permission คือ สิิทธิในการใช้งาน เช่น สร้าง ลบ แก้ไข copy ได้ เป็นต้น
[SQ] [bigint] IDENTITY(1,1) NOT NULL,
[PERMISSION_ID] [bigint] NOT NULL,
[PERMISSION_NAME] [nvarchar](100) NOT NULL,
[PERMISSION_DESC] [nvarchar](200) NOT NULL,
[PERMISSION_STATUS] [nvarchar](50) NOT NULL,
[CREATED_BY] [varchar](100) NOT NULL,
[CREATED_DATETIME] [datetime] NOT NULL,
Table Role-Permission คือบอกว่า กลุ่มนี้ มีสิทธิอะไรบ้าง เช่น PowerUser สร้าง แก้ไข copy ได้ แต่ลบข้อมูลไม่ได้
[SQ] [bigint] IDENTITY(1,1) NOT NULL,
[ROLE_PERMISSION_ID] [bigint] NOT NULL,
[ROLE_ID] [bigint] NOT NULL,
[PERMISSION_ID] [bigint] NOT NULL,
[CREATED_BY] [nvarchar](100) NOT NULL,
[CREATED_DATETIME] [datetime] NOT NULL,
Table User-Role คือบอกว่า User นี้ อยู่กลุ่มอะไร เช่น นายก อยู่กลุ่ม Administrator สามารถทำได้ทุกอย่าง
[USER_ROLE_ID] [bigint] IDENTITY(1,1) NOT NULL,
[USER_ID] [bigint] NOT NULL,
[ROLE_ID] [bigint] NOT NULL,
[CREATED_BY] [nvarchar](100) NOT NULL,
[CREATED_DATETIME] [datetime] NOT NULL,

ทั้งหลายทั้งปวงก็ประมาณนี้ครับ

"ตอนผมเท่าคุณ ผมก็ blank เหมือนกัน"
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 15:02:42 By : numenoy
 

 

No. 3



โพสกระทู้ ( 254 )
บทความ ( 0 )



สถานะออฟไลน์


Quote:
ไม่ลองดูตัวอย่างจากของ MySQL ล่ะครับ หรือถ้าของสาย DotNet ก็พวกตารางที่ขึ้นต้นด้วย aspnet_ ทั้งสองตัวอย่างก็จะเหมาะกันไปคนละแบบอ่ะครับ แต่จากที่อ่านที่คุณถามมานี่ น่าจะเหมือนกับของ MySQL มากกว่าครับ เพียงแต่ของ MySQL เค้าไม่ีมีเรื่องจัดกลุ่ม

ลองดูตัวอย่างแบบนี้ครับ

TB : AppUsers
- UserID PK Unique Index
- Name
- Lastname
- Password
- GroupID FK

TB : AppGroups
- GroupID PK Unique Index
- GroupName
- ManageUsers Char(1)
- ManageGroup Char(1)
- Recevie Char(1)
- ManageStore Char(1)

ก็จะเป็นการกำหนดความสามารถก่อนน่ะครับ ว่าโปรแกรมเราจะมีการกำหนดสิทธิให้ทำอะไรบ้าง แล้วก็เอามาเป็น column นึง ใส่ค่าเป็น Y หรื N แล้วเวลา login มาโปรแรกมก็อ่านแล้วก็ตรวจสอบว่าสามารถทำอะไรได้บ้างอ่ะครับ ใช้แค่ 2 tables เอง


ตอนแรกผมก็ทำแบบพี่แหละครับ แต่ว่ามันจะเป็น 1 to M คือ 1 คนสามารถมีสิทธิ์ได้แค่1 สิทธิ์ แต่ว่าสิทธิ์ 1 สิทธิ์สามาถมีได้หลายคน แต่ว่าผมอยากได้ 1 คนมีได้หลายสิทธิ์ อ่างับ ยัง งงๆ อยู่เลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 15:15:27 By : น้ำจัEฅu
 


 

No. 4

Guest


ถ้าเป็นแบบนี้ได้ไหมครับ
คุณสร้างมาอีก 1 table เป็น table ที่ list ตำแหน่งของคุณทั้งหมด แล้วใน table นั้นก็มี id user ด้วย (ตำแหน่ง เก็บแค่ 0 กับ 1 ก็ได้)
ที่นี้คุณก็สร้างมา page นึงไว้สำหรับแก้ไขค่าพวกนี้ ที่นี้ 1 user อยากจะเป็นตำแหน่งอะไรก็มาแก้ไขที่ page นี้ น่าจะคล้ายๆพวก user online-offline ละมั้ง แบบนี้ได้ไหมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 15:23:20 By : - -
 


 

No. 5



โพสกระทู้ ( 1,268 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

Quote:
แต่ว่าผมอยากได้ 1 คนมีได้หลายสิทธิ์


งงเหมือนกันค่ะ เป็นแบบที่คุณ numenoy แนะนำหรือเปล่า
คิดเล่น ๆ นะคะ ถ้าให้ user 1 คนมีได้หลายสิทธิ์ แล้วจะใช้สิทธิ์ไหนดีล่ะคะ

คงต้องขยายความกันหน่อย บางทีเราอาจจะตีความผิดไปก็ได้
Quote:
คือผมคิดไม่ออกเกี่ยวกับการแบ่งสิทธิ์การใช้งานอะครับ พี่ๆช่วยออกแบบหรือช่วยแนะนำให้ผมหน่อยน่าครับ

คือผมจะสร้างฐานข้อมูลผู้ใช้ระบบ ก็จะมี 2 Table คือ 1.ข้อมูลผู้ใช้ระบบ ประกอบด้วย รหัส ชื่อ username password ฯลฯ , 2.ข้อมูลประเภทผู้ใช้ระบบ ประกอบด้วย รหัสประเภท ชื่อประเภท(ตัวอย่างประเภท admin,พนักงานจัดการสินค้า,พนักงานจัดการข้อมูลคงคลัง,พนักงานจัดการข้อมูลการขาย,สมาชิก ฯลฯ) ทั้ง 2 Table นี้ มันจะเมื่อเอามาเชื่อกันมันจะเป็น Meny to meny ตามหลักมันก็จะให้สร้างตารางขึ้นมาอีก 1 ตาราง ผมก็จะสร้างตาราง กลุ่มผู้ใช้ระบบ ก็จะมี รหัสกลุ่ม รหัสผู้ใช้ระบบ รหัสประเภท แต่หลังจากนี้ผมคิดไม่ออกอ่าครับ คืออาจารย์ต้องการ ให้เราสามารถที่จะเพิ่มสิทธิ์เข้าไปได้ว่า คนนี้เป็น admin แต่สามารถกำหนดให้เค้า เป็นพนักงานจัดการข้อมูลสินค้าได้ ก็คือ 1 คนสามารถมีได้หลายสิทธิ์ แล้ว สิทธิ์นั้นก็สามารถมีได้หลายคน ผมต้องออกแบบฐานข้อมูลอยางงัยอะครับ ตอนนี้ผมยังออกแบบไม่ได้เลย งงๆมากๆ เลยยังไม่ได้ลง code พี่ๆช่วยแนะนำหรือช่วยบอกหน่อยนะครับ ขอบคุงมากๆเลยครับ


จากข้างต้น ตาราง ผู้ใช้ระบบ ไม่มีอะไร ข้ามไป ทีนี้มาดู ประเภทผู้ใช้ระบบ

Quote:
(ตัวอย่างประเภท admin,พนักงานจัดการสินค้า,พนักงานจัดการข้อมูลคงคลัง,พนักงานจัดการข้อมูลการขาย,สมาชิก ฯลฯ)


จากตรงนี้คุณสามารถ แยก admin ออกมาจากอันอื่นได้นะ แค่แนวคิดนะคะ
อาจจะแยกเป็น

ตาราง ตำแหน่งงาน(พนักงานจัดการสินค้า,พนักงานจัดการข้อมูลคงคลัง,พนักงานจัดการข้อมูลการขาย,สมาชิก ฯลฯ)
ตาราง ประเภทหรือกลุ่ม ผู้ใช้งาน(Admin, Power user, User, Guest, Other...)

User A เป็น พนักงานจัดการสินค้า อยู่ในกลุ่ม Admin
User B เป็น พนักงานจัดการสินค้า อยู่ในกลุ่ม Power user
User C เป็น พนักงานจัดการข้อมูลคงคลัง อยู่ในกลุ่ม Admin

แบบนี้ หลักการเดียวกับ ของคุณ numenoy ค่ะ ลองเอาไปคิดดูนะคะ


ประวัติการแก้ไข
2010-12-02 15:33:40
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 15:32:31 By : ultrasiam
 


 

No. 6



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


เห็นด้วยอย่างทีุ่คุณ ultrasiam ว่ามาครับ ตัวอย่างแบบของคุณ numenoy ก็ดีครับ แบบ advance เลย ทำได้อย่างที่คุณต้องการแน่ๆ แต่ลองคิดดูนะ คุณจะต้องมาปวดหัวกับการตรวจสอบสิทธิขนาดไหน ถ้า 1 user สามารถอยู่ได้มากกว่า 1 group แล้วถ้าสิทธิของแต่ละ group มันทับซ้อนกัน ก็ต้องมานั่งคิดเงือนไขอีกว่า ยอมอันนี้ อันนี้ไม่ยอม งานมันจะจบยากเอานาครับ

ที่ผมยกตัวอย่างไปลองเอามาทำดู ได้ตามรูปครับ ง่ายๆ ตรงไปตรงมา อยากทำอะไรได้ก็สร้าง group แล้วเลือกให้สิทธินั้นเป็น Y แล้วจับ user ไปอยู่ group นั้นครับ

sample_roles

ก็ลองทำความเข้าใจจากทุกๆ ความเห็นแล้วเอาไปประยุกต์ใช้เอาครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-03 00:56:53 By : salapao_codeman
 


 

No. 7



โพสกระทู้ ( 254 )
บทความ ( 0 )



สถานะออฟไลน์


Quote:
เห็นด้วยอย่างทีุ่คุณ ultrasiam ว่ามาครับ ตัวอย่างแบบของคุณ numenoy ก็ดีครับ แบบ advance เลย ทำได้อย่างที่คุณต้องการแน่ๆ แต่ลองคิดดูนะ คุณจะต้องมาปวดหัวกับการตรวจสอบสิทธิขนาดไหน ถ้า 1 user สามารถอยู่ได้มากกว่า 1 group แล้วถ้าสิทธิของแต่ละ group มันทับซ้อนกัน ก็ต้องมานั่งคิดเงือนไขอีกว่า ยอมอันนี้ อันนี้ไม่ยอม งานมันจะจบยากเอานาครับ

ที่ผมยกตัวอย่างไปลองเอามาทำดู ได้ตามรูปครับ ง่ายๆ ตรงไปตรงมา อยากทำอะไรได้ก็สร้าง group แล้วเลือกให้สิทธินั้นเป็น Y แล้วจับ user ไปอยู่ group นั้นครับ



ก็ลองทำความเข้าใจจากทุกๆ ความเห็นแล้วเอาไปประยุกต์ใช้เอาครับ


แปปนี้ก็มีแค่ 2 Table หรอครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-03 12:05:25 By : น้ำจัEฅu
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : การออกแบบฐานข้อมูลผู้ใช้ระบบ ควรออกแบบอยางงัยครับช่วยแนะนำที
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่