2014-10-07 2 views
0

У меня есть список мест и список таких категорий, как бар, ночной клуб, ресторан, кафе, дискотека и т. Д. Мне нужно соединить все места с соответствующей категорией.Структура таблицы базы данных: Место проведения и категории

Одно место может принадлежать одной или нескольких категорий:

место, категория Место | бар, ресторан Место проведения B | ночной клуб Место проведения C | кафе, ресторан Venye D | disco

Теперь, как я правильно структурирую это? Кажется, что список разделенных запятой в столбце категорий не подходит. Я использую MondoDB кстати.

ответ

0
[ 
    { 
    venue: 'Some Nightclub', 
    categories: ['bar', 'nightclub'] 
    }, 
    { 
    venue: 'Some Cafe', 
    categories: ['cafe', 'disco'] 
    } 
] 
+0

Добавить комментарий вокруг этого, чтобы улучшить качество ответ, объясняя, что вы сделали, и почему вы это сделали. В обзоре флага, который кто-то поднял об этом сообщении, я выбираю «Looks OK», потому что я не вижу необходимости его удалять. – ArtOfWarfare

+0

Это то, с чем я закончил, и он отлично работает. Благодаря! – ChrisRich

0

Поскольку каждое место может иметь много категорий, и каждая категория может иметь много мест, это называется отношением M: N.

В этом случае, вот схема я бы использовать, на основе модели признакам в книге MongoDB Applied Design Patterns (ссылка указывает на нужную страницу):

//db.venue.schema 
[ 
    { "_id": "Venue A", 
    "category_ids": ["bar","restaurant",...] 
    } 
] 

// db.category.schema 
[ 
    { 
    "_id": "bar" 
    }, 
    { 
    "_id": "restaurant" 
    }, 
    ... 
] 
+0

Зачем вам добавлять отдельную схему с категориями? Они уже перечислены в категории «category_ids». Это облегчает запрос? – ChrisRich

+0

у вас может быть больше атрибутов для категории, чем только имя. Например, если в будущем вы хотите добавить «описание» или «тип» в категорию, вам будет намного легче. здесь значение в category_ids должно рассматриваться как идентификатор, относящийся к объекту категории – xShirase

Смежные вопросы