2012-11-22 8 views
3

DB 디자인에 익숙하지 않아 "Many to One"관계를 정의하는 방법에 대한 정보를 찾는 데 어려움이 있습니다. "일대 다"및 "다 대다"에 대한 모든 종류의 정보를 찾을 수 있지만 "다 대일"에 대한 정보는 찾을 수 없습니다. 내 문제는 데이터를 저장하는 방법입니다. 내가 가지고있는 것은 "카테고리"라고 불리는 하나의 테이블이며 "인벤토리"라는 또 다른 테이블을 가지고 있으며 각 "인벤토리"아이템은 여러 개의 "카테고리"에 속할 수 있습니다.MySql "Many to One"테이블 디자인

하나의 "인벤토리"행에 여러 개의 "카테고리"를 어떻게 저장합니까? 해당 "재고"ID가있는 "카테고리"ID를 저장하는 중간 테이블을 사용해야합니까? 또는 "인벤토리"행에 "Categories"ID가있는 JSON 문자열과 같은 것을 추가하는 것이 올바른 방법일까요? 아니면 "인벤토리"행에 "카테고리"ID의 배열을 저장하는 방법이 있습니까?

감사합니다.

답변

4

Many to One의 올바른 용어는 One to Many입니다. 단순히 이런 식의 테이블을 만드십시오.

CREATE TABLE Categories 
(
    CategoryID INT Primary KEY, 
    CategoryName 
); 

CREATE TABLE InventoryList 
(
    ProductID INT Primary KEY, 
    CategoryID INT, 
    ProductName VARCHAR(50), 
    CONSTRAINT tb_fk FOREIGN KEY (CategoryID) REFERENCES Categories(CategoryID) 
); 
3

"many to one"은 단지 "one to many"가 다른 쪽에서 보았습니다.

Categories 테이블에 inventory_id 열을 추가하기 만하면됩니다.

각 "인벤토리"항목이 여러 개의 "범주"에 속할 수는 없지만 각 "범주"항목은 여러 개의 "인벤토리"항목에 속할 수 있습니다. 중간 테이블은 category_idinventory_id입니다.

4

처음에는 mysql workbench을 다운로드 할 것을 제안합니다 - 멋진 비주얼 db 디자인 모드를 제공하여 어떻게 물건들이 서로 어슬렁 거리는지를 볼 수 있습니다.

이 경우 실제로는 다 대다 관계입니다. 따라서 인벤토리와 카테고리의 ID를 각 튜플에 저장하는 카테고리 테이블, 인벤토리 테이블 및 category_has_inventory 테이블 (또는 의미에 따라 inventory_has_category)이 필요할 것입니다. 워크 벤치는 many-to - 많은 관계 도구.

추가 도움이 필요한 경우 여기에 다시 표시하십시오.

카테고리에 인벤토리 항목이 하나만 포함될 수있는 경우 카테고리 테이블에 inventory_id를 추가하여 일대 다 관계를 만들 수 있지만 나에게 잘못된 것처럼 보입니다.

+0

감사합니다 이안 ... 그게 정확히 제가 찾고있는 것입니다 ... 나는 이것이 "많은 것에서 많은 것"관계라는 것을 깨닫지 못했습니다 ... 나는 단지 하나의 행을 생각하면 전체 표가 아니라 ... 다시 한번 감사드립니다! –

+0

인벤토리가 여러 카테고리에 표시 될 수 있고 카테고리가 여러 인벤토리를 표시 할 수 있다면 (실제로 생각한 것) 다 대다 관계입니다. 카테고리에 인벤토리가 하나만 포함될 수 있다면 (내 마음에 카테고리가 많지 않은 경우) 인벤토리 ID를 해당 카테고리에 대한 카테고리 테이블에 저장합니다. –