2014-03-24 2 views
3

저는 SQL과 데이터베이스에 대한 지식이 거의 없으므로 (최소한의 사이트에 대해서만 아주 단순하게 설계되었습니다) DB를 많이 사용하는 사이트의 경우 일부 모델을 설계하는 최선의 방법을 찾기 위해 노력하고 있습니다. 예를 들어 사용자가 업로드 한 갤러리를 예로 들어 보겠습니다. 나는 업로드 된 날짜, 이름 등과 같은 합리적인 기둥이있는 갤러리 테이블을 가지고 있으며 갤러리는 하나의 카테고리에 속할 수 있습니다. 그 중 많은 카테고리는 6 개 정도입니다. 카테고리를 갤러리 테이블의 열로 설정해야합니까? 또는 카테고리에 대한 별도의 테이블을 가지며 카테고리와 갤러리 테이블간에 다 대일 관계가 있습니까? 내가 업로드 한 날짜별로 범주의 모든 갤러리를 정렬하는 것과 같은 내 견해에서 일을하고 싶습니다, 거기에 성능/편의점 차이가 무엇입니까? 카테고리가 Gallery 테이블의 열이되도록하면 나보다 다루기가 더 쉽지만 가장 좋은 방법은 무엇인지 확실하지 않습니다. 감사.SQL 데이터베이스 - 별도의 테이블을 사용할 때와 기존 테이블을 사용할 경우?

답변

1

우선, 개념상의 차이점을 이해해야합니다. 엄지 손가락의 규칙으로

다음과 같은 동등한 고려하는 것이 안전하다 :

표 ~~~ 엔티티를

열 ~~~ 특성

그래서, 당신이 필요로 할 때 엔티티 (기존 테이블)와 관련하여 새로운 데이터를 추가하려면 다음과 같이 질문하십시오.

이 데이터 조각은 엔터티의 속성입니까?

대답이 '예'인 경우 새 열이 필요합니다.

Table Student: 

[PK] Id 
[FK] IdClass 
Name 
Surname 

당신은 또한 각 학생의 GPA를 추가 할 말 : 예를 들어

, 당신은 학생 엔티티를 설명하는 테이블이 말한다. 이것은 분명히 학생의 속성이므로 Student 테이블에 GPA 열을 추가 할 수 있습니다.

각 학생에 대해 부서를 정의하려는 경우 부서는 학생의 속성이이 아닙니다. 부서는 엔티티이며, 존재하며 자체 특성을 가지고 있습니다. 외부 학생의 범위.

따라서 학생의 속성은 특정 부서와의 제휴이지만 부서 자체와는 관련이 없습니다.

따라서 새 Department 테이블을 만들고 Students 테이블에서 Department.Id을 FK로 사용합니다.

이 정보가 도움이되기를 바랍니다. 건배.

1

의심 스럽다면 별도의 테이블을 사용하십시오.

속도에 큰 영향을주지 않으므로 더 많은 제어권을 얻습니다.

1

카테고리와 갤러리 사이에 일대일 관계가 있다면 카테고리를 별도의 테이블로 지정해야합니다.

관련 문제