[SQL] 데이터베이스 디자인 질문 - 카테고리 / 하위 카테고리
SQL데이터베이스 디자인 질문 - 카테고리 / 하위 카테고리
난 내 데이터베이스에 몇 테이블을 설계 할 방법에 대한 질문이 있습니다. 나는 하위 카테고리에 대한 카테고리 하나를 추적 할 수있는 테이블이 있습니다 :
TABLE Category
CategoryID INT
Description NVARCHAR(500)
TABLE Subcategory
SubcategoryID INT
CategoryID INT
Description NVARCHAR(500)
카테고리는 전자 같을 수도 있고, 그것의 하위 카테고리는 DVD 플레이어, 텔레비전 등 수 있습니다
나는 카테고리 / 하위 카테고리를 참조 할 것입니다 다른 테이블이있다. 그것은 SubcategoryID를 참조해야합니까?
TABLE Product
SubcategoryID INT -- should this be subcategory?
이 작업을 수행 할 수있는 더 좋은 방법이 있나요 또는이 올바른 방법인가? 나는 데이터베이스 설계 사람의 많은 아니에요. 나는 그 문제에 경우 SQL Server 2008 R2를 사용하고 있습니다.
해결법
-
==============================
1.귀하의 디자인은 적절하다. 나는 하나 개의 테이블에 종류와 하위 범주를 가지고 경사를 이해할 수 있도록 데이터베이스 남자, 개발자를 설정,하지만 당신은 키스로 잘못 될 수 없다입니다.
귀하의 디자인은 적절하다. 나는 하나 개의 테이블에 종류와 하위 범주를 가지고 경사를 이해할 수 있도록 데이터베이스 남자, 개발자를 설정,하지만 당신은 키스로 잘못 될 수 없다입니다.
극한의 성능이나 무한 계층 요구 사항 (I하지 같은데요)이 아니라면, 넌 좋은 이동합니다.
제품과 연관 여러 하위 범주가 할 수있는 것은 미카엘의 관점 @에 대한 요구 사항 인 경우, 당신은 셋업이 같은 / 가입 교차 테이블, Product_SubCategory를 통해 다 대다 관계를 생성해야합니다 :
CREATE TABLE Product (ProductID int, Description nvarchar(100)) CREATE TABLE Product_SubCategory (ProductID int, SubCategoryID int) CREATE TABLE SubCategory (SubCategoryID int, CategoryID int, Description nvarchar(100)) CREATE TABLE Category (CategoryID int, Description nvarchar(100))
도움이되기를 바랍니다 ...
에릭 tarasapha
-
==============================
2.카테고리 및 하위 카테고리에 대한 두 개의 테이블을 갖는 상황에 따라 달라집니다.
카테고리 및 하위 카테고리에 대한 두 개의 테이블을 갖는 상황에 따라 달라집니다.
당신이 그것을하는 방법을 유지하는 경우 그것은 당신이 하위 범주의 하위 범주를 가질 수있는대로 범주> 하위 범주 시나리오로 제한되어있다.
당신은 하나 개의 테이블로 만들 경우에 당신은 ParentID에 대한 열이 필요합니다. 카테고리 상단 인 경우 무제한 하위 범주 foreach는 하위 범주, 예를 허용 할 경우 대부분이 0의 ParentID이있을 것이다 당신이 그들을 표시 재귀 프로그램을 사용해야합니다 4기가바이트 전자> 기록 미디어, 블루 레이,.
-
==============================
3.대신 범주 계층 구조의 제품에 태그를 부착합니다. 그것은 훨씬 더 유연하다.
대신 범주 계층 구조의 제품에 태그를 부착합니다. 그것은 훨씬 더 유연하다.
create table product (id, name,...) create table tag (id, name, description) create table product_tag (product_id, tag_id)
-
==============================
4.카테고리 및 하위 카테고리가 동일한 속성을 가지고 있다면, 하나 개의 테이블로 축소.
카테고리 및 하위 카테고리가 동일한 속성을 가지고 있다면, 하나 개의 테이블로 축소.
하나의 '하위'카테고리는 하나 이상의 '부모'범주에 속할 수있는 경우 그렇지 않은 부모에 점 하나의 열을 추가, 링크 클래스를 추가 할 수 있습니다.
예를 들면 당신이 전자> TV가있는 경우, 당신은 또한 엔터테인먼트> TV를 가질 수있다? 기타
다른 표는 단지 CATEGORY_ID를 참조해야합니다 (참고 -하지 parent_category_id)
HTH
-
==============================
5.그것은 당신의 요구 사항에 따라 달라집니다. 모든 제품은 더 이상보다 하위 카테고리에 연결되어있는 경우는 제품에 SubCategoryID이 있어야합니다. 뿐만 아니라 카테고리 ID를 추가 할 필요가 없습니다.
그것은 당신의 요구 사항에 따라 달라집니다. 모든 제품은 더 이상보다 하위 카테고리에 연결되어있는 경우는 제품에 SubCategoryID이 있어야합니다. 뿐만 아니라 카테고리 ID를 추가 할 필요가 없습니다.
다른 모델을 필요로하는 다른 시나리오는 제품이 하위 범주 대신 범주에 직접 연결하거나 하나 개의 제품이 하나 개 이상의 하위 범주 또는 하위 범주에 둘 이상의 범주에 연결되는 링크 될 수 있음을 수 수 있습니다.
-
==============================
6.한 하위 카테고리가 다른 카테고리에서 반복되지 않습니다로서, 그리고 서로 다른 특성을 가지고 특히, 다음 제안 된 방법이 좋다.
한 하위 카테고리가 다른 카테고리에서 반복되지 않습니다로서, 그리고 서로 다른 특성을 가지고 특히, 다음 제안 된 방법이 좋다.
당신은 아마 사용자가 카테고리를 편집 할 수있는 컨트롤을 원하더라도, 당신은 제품을 편집 / 추가 할 때 한 가지 문제가 올 수 있으며, 종류에 대한 필드가 없습니다.
from https://stackoverflow.com/questions/5384183/database-design-question-categories-subcategories by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 요일과 같은 형식의 날짜 (0) | 2020.06.30 |
---|---|
[SQL] 테이블에서 '다음'과 '이전'에 대한 SQL은 무엇인가? (0) | 2020.06.30 |
[SQL] 어떻게 오라클 데이터베이스의 테이블의 컬럼의 모든 메타 데이터를 볼 수 있습니다? (0) | 2020.06.30 |
[SQL] SQL과 타의 추종을 불허하는 기록을 찾기 (0) | 2020.06.30 |
[SQL] 커밋 된 트랜잭션을 롤백 (0) | 2020.06.30 |