2011-02-07 3 views
0

나는 학업 목적으로 기본적인 소셜 네트워크를 개발해야한다. 관리자, 분석가 및 표준 사용자 :하지만 난복수 사용자 데이터베이스 디자인

사용자가 서로 다른 권한을 가진 3 개의 그룹으로 세분화 .. 사용자 관리를위한 몇 가지 팁이 필요합니다. 모든 사용자는 이름, 성, 전자 메일, 나이, 암호와 같은 정보를 데이터베이스에 저장해야합니다. '사용자의 사용자가 무엇을 할 수 있는지 설명의 역할'속성이라고

1) 하나의 테이블 무엇을 수행 할 수 있습니다

은 내가 theese 두 솔루션 사이의 데이터베이스를 설계하는 방법을 아주 확실하지 않다 모든 응용 프로그램 사용자는 'CREATE ROLE'(Postgres 데이터베이스) 쿼리로 생성 된 데이터베이스 사용자이고 'GRANT'권한으로 부여 된 일부 테이블에 대한 사용 권한을가집니다. 문

프로젝트 데이터베이스 시험을 것을 고려해야한다

..

감사합니다.

+1

암호를 데이터베이스에 저장하지 마십시오! 이유에 대한 설명은 http://blog.moertel.com/articles/2006/12/15/never-store-passwords-in-a-database를 참조하십시오. – btilly

답변

2

응용 프로그램의 권한 부여 시스템으로 데이터베이스의 권한 부여 메커니즘을 사용하지 마십시오. 세 가지 주요 이유 :

A) 당신은 전체 응용 프로그램을 다시 작성하지 않고 다른 데이터베이스로 변경할 수 없을거야.

B) 앱에서 사용자가 DB의 ACL 시스템이 허용하는 것과 다를 수 있습니다 부여 할 물건의 종류.

그리고 가장 중요한 :

C) 당신은 응용 프로그램 사용자에게 데이터베이스에 직접 아무것도 할 수있는 기능을 제공하지 않습니다. 이제까지.

그래서 # 2 옵션이 올바르게 작동합니다. 따라서 각 사용자 레코드에 사용자 유형 필드를 저장 한 다음 "해당 사용자 유형이 허용하는 것"은 PHP에서 계산되는 비즈니스 로직의 일부가됩니다.

0

해결책 1 매번 테이블별로 사용 ​​권한을 할당하지 않으려는 경우가 있습니다. 데이터베이스 사용자를 사용하는 것은 번거롭고 실용적이지 않습니다. 옵션 1.

0

이동은, 장기적으로 코드에 아마 쉽게 훨씬 더 유연하며, 특정 구현에 너무 밀접하게 응용 프로그램 논리를 묶어 싶지 않아요. 나중에 SQL Server에서 실행되도록 응용 프로그램을 이식하려면 어떻게해야합니까? 데이터베이스 사용자가 다르게 구현되면 옵션 2가 심각한 통증을 줄 수 있습니다.

0

첫 번째 대안으로 이동하십시오 (PHP로 권한 관리하기).

  1. 데이터베이스는 당신이 (그룹 사람들이 허용되는 접근로 이메일을 보낼 수있는 사람 등)을 관리하는 데 필요한 권한을 당신에게 충분한 선택과 단위를 제공하지 않습니다
  2. : 여기에 이유가 있습니다
  3. 일반적으로 데이터베이스 연결은 비용이 많이 들기 때문에 한 번 연결하여 가능한 한 오랫동안 연결해야합니다 (동일한 데이터베이스 사용자)
  4. 모든 데이터베이스가 사용자 계정을 처리하는 방식으로 동일하게 만들어지지 않습니다.SQL 위에 자신 만의 사용자 시스템을 구축하면 더 많은 데이터베이스 독립적이 될 수 있습니다.
  5. 현실 세계에서 데이터베이스 관리 및 개발 프로그램은 완전히 다른 사람들이 수행하며 프로그램은 생성하거나 변경할 권한이 없습니다 데이터베이스 사용자
관련 문제