복붙노트

[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. ==============================

    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. ==============================

    2.카테고리 및 하위 카테고리에 대한 두 개의 테이블을 갖는 상황에 따라 달라집니다.

    카테고리 및 하위 카테고리에 대한 두 개의 테이블을 갖는 상황에 따라 달라집니다.

    당신이 그것을하는 방법을 유지하는 경우 그것은 당신이 하위 범주의 하위 범주를 가질 수있는대로 범주> 하위 범주 시나리오로 제한되어있다.

    당신은 하나 개의 테이블로 만들 경우에 당신은 ParentID에 대한 열이 필요합니다. 카테고리 상단 인 경우 무제한 하위 범주 foreach는 하위 범주, 예를 허용 할 경우 대부분이 0의 ParentID이있을 것이다 당신이 그들을 표시 재귀 프로그램을 사용해야합니다 4기가바이트 전자> 기록 미디어, 블루 레이,.

  3. ==============================

    3.대신 범주 계층 구조의 제품에 태그를 부착합니다. 그것은 훨씬 더 유연하다.

    대신 범주 계층 구조의 제품에 태그를 부착합니다. 그것은 훨씬 더 유연하다.

    create table product (id, name,...)
    create table tag (id, name, description)
    create table product_tag (product_id, tag_id)
    
  4. ==============================

    4.카테고리 및 하위 카테고리가 동일한 속성을 가지고 있다면, 하나 개의 테이블로 축소.

    카테고리 및 하위 카테고리가 동일한 속성을 가지고 있다면, 하나 개의 테이블로 축소.

    하나의 '하위'카테고리는 하나 이상의 '부모'범주에 속할 수있는 경우 그렇지 않은 부모에 점 하나의 열을 추가, 링크 클래스를 추가 할 수 있습니다.

    예를 들면 당신이 전자> TV가있는 경우, 당신은 또한 엔터테인먼트> TV를 가질 수있다? 기타

    다른 표는 단지 ​​CATEGORY_ID를 참조해야합니다 (참고 -하지 parent_category_id)

    HTH

  5. ==============================

    5.그것은 당신의 요구 사항에 따라 달라집니다. 모든 제품은 더 이상보다 하위 카테고리에 연결되어있는 경우는 제품에 SubCategoryID이 있어야합니다. 뿐만 아니라 카테고리 ID를 추가 할 필요가 없습니다.

    그것은 당신의 요구 사항에 따라 달라집니다. 모든 제품은 더 이상보다 하위 카테고리에 연결되어있는 경우는 제품에 SubCategoryID이 있어야합니다. 뿐만 아니라 카테고리 ID를 추가 할 필요가 없습니다.

    다른 모델을 필요로하는 다른 시나리오는 제품이 하위 범주 대신 범주에 직접 연결하거나 하나 개의 제품이 하나 개 이상의 하위 범주 또는 하위 범주에 둘 이상의 범주에 연결되는 링크 될 수 있음을 수 수 있습니다.

  6. ==============================

    6.한 하위 카테고리가 다른 카테고리에서 반복되지 않습니다로서, 그리고 서로 다른 특성을 가지고 특히, 다음 제안 된 방법이 좋다.

    한 하위 카테고리가 다른 카테고리에서 반복되지 않습니다로서, 그리고 서로 다른 특성을 가지고 특히, 다음 제안 된 방법이 좋다.

    당신은 아마 사용자가 카테고리를 편집 할 수있는 컨트롤을 원하더라도, 당신은 제품을 편집 / 추가 할 때 한 가지 문제가 올 수 있으며, 종류에 대한 필드가 없습니다.

  7. from https://stackoverflow.com/questions/5384183/database-design-question-categories-subcategories by cc-by-sa and MIT license