IgorPI
@IgorPI

MySql нормализация базы данных в моё случае?

Коллеги, здравствуйте!

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

Привожу модель, то как я планирую извлекать данные из неё.

{
 ...
  "features": [
    {
      "id": "car_brand",
      "value": [
        "спецтехника",
        "Chevrolet",
        "Ford",
        "отечественные",
        "легковые",
        "импортные",
        "Citroen",
        "Opel",
        "Peugeot",
        "коммерческие"
      ],
      "name": "марка автомобиля",
      "type": "enum"
    },
    {
      "id": "test_drive",
      "value": true,
      "name": "тест-драйв",
      "type": "bool"
    },
    {
      "id": "trade_in",
      "value": true,
      "name": "трейд-ин",
      "type": "bool"
    },
    {
      "id": "arts",
      "value": [
        "для иномарок",
        "для легковых автомобилей",
        "для микроавтобусов"
      ],
      "name": "запчасти",
      "type": "enum"
    },
    {
      "id": "loan_processing",
      "value": true,
      "name": "автокредит",
      "type": "bool"
    },
    {
      "id": "leasing_registration",
      "value": true,
      "name": "лизинг",
      "type": "bool"
    },
    {
      "id": "payment_by_credit_card",
      "value": true,
      "name": "оплата картой",
      "type": "bool"
    },
    {
      "id": "authorized_service",
      "value": true,
      "name": "официальный автосервис",
      "type": "bool"
    },
    {
      "id": "tire_fitting",
      "value": true,
      "name": "шиномонтаж",
      "type": "bool"
    },
    {
      "id": "basic_service",
      "value": true,
      "name": "базовое сервисное обслуживание",
      "type": "bool"
    },
    {
      "id": "registration_inspection",
      "value": true,
      "name": "постановка на учёт, техосмотр",
      "type": "bool"
    },
    {
      "id": "wheel_alignment",
      "value": true,
      "name": "развал-схождение",
      "type": "bool"
    },
    {
      "id": "wi_fi",
      "value": true,
      "name": "Wi-Fi",
      "type": "bool"
    },
    {
      "id": "cafe",
      "value": true,
      "name": "кафе",
      "type": "bool"
    },
    {
      "id": "auto_insurance_type",
      "value": [
        "Каско/Осаго"
      ],
      "name": "автострахование",
      "type": "enum"
    },
    {
      "id": "auto_sales",
      "value": [
        "с пробегом",
        "новые"
      ],
      "name": "продажа автомобилей",
      "type": "enum"
    },
    {
      "id": "car_repairs",
      "value": [
        "заправка и ремонт автокондиционера",
        "ремонт тормозной системы",
        "ремонт АКПП",
        "ремонт двигателя",
        "полное сервисное обслуживание",
        "замена масла",
        "установка парктроника",
        "тонировка стекол",
        "ремонт ходовой части",
        "компьютерная диагностика автомобиля",
        "ремонт автоэлектрики",
        "сигнализация",
        "ремонт КПП"
      ],
      "name": "виды работ",
      "type": "enum"
    },
    {
      "id": "official_dealer",
      "value": true,
      "name": "официальный дилер",
      "type": "bool"
    },
    {
      "id": "automotive_parts",
      "value": [
        "Ford",
        "Chevrolet",
        "спецтехники",
        "Opel",
        "отечественных",
        "легковых",
        "импортных",
        "коммерческих"
      ],
      "name": "автомобили",
      "type": "enum"
    }
  ]
}



Есть сущность
Organization.php - организация (школа, больница, магазин, ...)
Организация предоставляет какие-то услуги.
Выше привёл пример, услуг одной единицы компании.
Всего компаний > [ 5 000 000 - ‎]

Я предполагаю, что у меня будут следующие сущности.

Organization.php
Feature.php
FeatureValue.php


Что наводит на вопрос, а правильно ли это?
Имеет ли смысл создавать уникальные записи для
Feature.php
FeatureValue.php

Или наоборот это будет правильным решением.
Ввиду того что нам не придётся создавать дубликаты записей.
Но и тут не всё гладко, а что если удалить компанию, которая ссылается на услугу, услуга которой ссылается на другую компанию?

Диаграмма
5dce834a18c1d322575700.png
  • Вопрос задан
  • 169 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы