Я борюсь с моделью данных (я использую MySQL для базы данных). Мне неловко от того, что я придумала. Если бы кто-то мог предложить лучший подход или указать на какой-нибудь справочный материал, я был бы признателен за это.
Данные будут иметь организации многих типов. Я пытаюсь сделать 3 уровня классификации (класс, категория, тип). Скажем, если у меня есть «Итальянский ресторан», он будет иметь следующую классификацию
Услуги по питанию> Рестораны> Итальянские
Однако организация может принадлежать нескольким группам. Ресторан также может служить китайский и итальянский. Таким образом, он будет вписываться в 2 классификации
Услуги по питанию> Рестораны> Итальянские
Питание> Рестораны> Китайская
Справочные таблицы классификации будут выглядеть следующим образом:
ORG_CLASS (RowId, ClassCode, ClassName)
1, FOOD, Food Services
ORG_CATEGORY (RowId, ClassCode, CategoryCode, CategoryName)
1, FOOD, REST, Restaurants
ORG_TYPE (RowId, ClassCode, CategoryCode, TypeCode, TypeName)
100, FOOD, REST, ITAL, Italian
101, FOOD, REST, CHIN, Chinese
102, FOOD, REST, SPAN, Spanish
103, FOOD, REST, MEXI, Mexican
104, FOOD, REST, FREN, French
105, FOOD, REST, MIDL, Middle Eastern
Фактические таблицы данных будут выглядеть следующим образом:
Я разрешаю организации максимум 3 классификации. У меня будет 3 GroupIds, каждый из которых указывает на строку в ORG_TYPE. Итак, у меня есть ORGANIZATION_TABLE
ORGANIZATION_TABLE (OrgGroupId1, OrgGroupId2, OrgGroupId3, OrgName, OrgAddres)
100,103,NULL,MyRestaurant1, MyAddr1
100,102,NULL,MyRestaurant2, MyAddr2
100,104,105, MyRestaurant3, MyAddr3
Во время добавления данных диалоговое окно может позволить пользователю выбрать clssa, category, type, а соответствующий GroupId может быть заполнен rowid из таблицы ORG_TYPE.
Во время поиска, если выбраны все три классификации, это будет более конкретно. Например, если
Услуги по питанию> Рестораны> Итальянский критерий, где пункт будет 'where OrgGroupId1 = 100'
Если выбраны только 2 уровня
Общественное питание> Рестораны
Я должен сделать 'where OrgGroupId1 in (100,101,102,103,104,105, .....)'
- В этом списке может быть сотня
Я запрещу поиск на уровне класса. То есть заставлю выбор класса и категории
Идентификаторы будут целыми числами. Я пытаюсь увидеть проблемы с производительностью и другие проблемы.
В целом, это будет работать? или мне нужно выбросить это и начать с нуля.