Как настроить структуру таблиц mySQL для бизнес-каталога со многими отношениями? - PullRequest
0 голосов
/ 26 апреля 2011

Я пытаюсь спланировать структуру таблицы для бизнес-каталога, в котором у меня будет несколько родительских категорий для нескольких подкатегорий и нескольких бизнес-списков, и для каждого из них потребуется отношение «многие ко многим».

например.

Ночь

Клубы и общества
Общественные дома
Рестораны
Такси и Частные автомобили напрокат
Театры и концертные залы
Винные бары

Рестораны

Китайский / Восточный
Бистро
Рыба и чипсы
Индийский
Итальянский
Общественные дома
Морепродукты
Испанский

Транспорт и перевозчики

чартер и аренда воздуха
Авиакомпании
Прокат авто / фургона без водителя
Курьерские и дистрибьюторские службы
Недвижимость / Услуги по перемещению недвижимости
Грузовые перевозки и агенты
Подрядчики по перевозке грузов
Почтовые отделения и услуги
Услуги по перемещению
Такси и Частные автомобили напрокат
Ван Прокат

Как видите, Restaurants - это и основная категория, и подкатегория. Такси и частные арендные транспортные средства принадлежат как Транспортные средства и перевозчики , так и Night Out , и по всем этим категориям на самом низком уровне у меня будут списки предприятий. Я не буду позволять предприятиям представлять свои собственные списки, а добавлю их самостоятельно по запросу Бизнес-листинг может принадлежать максимум 6 категориям.

Я изо всех сил пытаюсь найти лучшую структуру таблиц для моей базы данных и буду очень благодарен за любые предложения. Я относительно новичок в php / mySQL.

1 Ответ

2 голосов
/ 26 апреля 2011

У вас может быть таблица категорий, которая будет содержать список всех возможных категорий / подкатегорий, а затем в вашей информационной таблице она будет иметь место для поля CategoryID, а также SubCategoryID, где у вас будет либо NULL для подкатегории, либо соответствующий идентификатор.


Вы также можете отобразить его, используя таблицу сопоставления, таким образом, вы сможете иметь столько категорий / подкатегорий, сколько захотите.

Category Table ( CategoryId, CategoryName )
Business Table ( BusinessId, BusinessName )
Category Mapping Table ( BusinessId, CategoryId, IsCategory )

IsCategory будет полем BIT, чтобы можно было пометить любое количество категорий для бизнеса как подкатегорию (0) или категорию (1).

В таблице сопоставления категорий я бы сделал ПЕРВИЧНЫЙ КЛЮЧ (BusinessId, CategoryId), а также сделал бы их ИНОСТРАННЫМИ КЛЮЧАМИ для таблицы Business / Category соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...