먼저 둘 다 기본이 될 경우 id
과 을 둘 다 가질 필요는 없습니다. 실제로 member_id
이 필요하므로 다른 id
을 삭제할 수 있습니다.
강건하기 위해서는 원하는 설정을 열이 아닌 행으로 옮기십시오. 테이블을 변경하여 열을 추가하는 것보다 행을 추가하는 것이 데이터베이스 관점에서 훨씬 쉽습니다.
필요한 정보는 개인 정보 규칙 유형 목록과 회원 테이블과 개인 정보 규칙 유형 테이블 간의 교차 테이블입니다.
MEMBER
id int not null PRIMARY KEY
, name nvarchar(50)...
, (and so forth)
PRIVACY_RULE
id int not null PRIMARY KEY
, rule_description nvarchar(50)
MEMBER_PRIVACY
member_id int not null
, privacy_rule_id int not null
, rule_value tinyint
, PRIMARY KEY (member_id, privacy_rule_id)
이 방법은, 개인 정보 보호 규칙 ID 프로그래밍 실제 규칙을 적용하는 데 사용되며 값이 교차 테이블에 쉽게 추가 할 수있는 응용 프로그램 코드에서 일정하게 : 스키마는 다음과 같이 될 것이다. 새로운 개인 정보 규칙을 만들 때 PRIVACY_RULE에 하나의 레코드를 삽입 한 다음 응용 프로그램 코드를 변경하면됩니다. 데이터베이스 스키마 변경이 필요하지 않습니다.
이 동일한 기본 구조는 훨씬 더 유연해질 수 있습니다. 예를 들어 이진 플래그 이외에도 여러 가지 유형의 값을 가질 수 있으며 PRIVACY_RULE
테이블의 추가 "rule type
"특성을 사용하여 이러한 값의 해석을 제어 할 수 있습니다. 주제와 너무 멀리 떨어져 있기를 원하지 않으므로이 부분에 대한 자세한 내용을 알고 싶으면 알려주십시오.
일부는 페이스 북의 트위터와 관련없는 웹 사이트를 작성할 수 있습니다. –
Google Plus ...? – unleashed
관련이 없지만 int가 아닌 tinyint가 필요합니다. 결국 (1)은 데이터의 크기에 영향을 미치지 않으므로 0과 1은 여전히 int만큼 많은 공간을 차지합니다. 그것은 일반적인 오해입니다. – Aaron