Совет по нормализации базы данных MySQL

В настоящее время я занимаюсь разработкой базы данных для проекта, который веду в колледже, и был бы очень признателен за отзывы. По сути, идея проекта - создать базу пищевых производств, инвентаризацию пищевых продуктов. Я создал схему для базы данных, но не уверен, соответствует ли таблица продуктов требованиям 3NF.

Итак, моя таблица продуктов содержит p_id (первичный ключ), название продукта, тип продукта (например, пицца или десерт), страну, из которой он происходит, регион в этой стране и кому подходит продукт (например, веганский).

Итак, в основном, когда я разбиваю его, я чувствую, что регион зависит от страны, а тип зависит от имени? Прав ли я, предполагая это? Затем я мог бы разделить таблицу на 3 отдельные таблицы. 1, который будет содержать p_id, name, Country и еще один, который будет содержать Country, Region и третий, который будет содержать имя и тип. Будет ли это полностью нормализованная база данных до 4NF?

Вот моя схема:

Совет по нормализации базы данных MySQL

suitable_for, вероятно, должен быть в другой таблице, поскольку продукт может подходить более чем для одного типа потребителей (веганский, кошерный, аллергия на арахис). Если у вас есть список, разделенный запятыми, вы нарушаете 1NF.
Barmar 20.04.2018 21:16

Спасибо за ответ! Для подходящего_for я просто сохраню его простоту и сделаю только одну запись, так что это будет что-то вроде всеядного-> Пескетарианец-> eggetarian-> Vegiterian-> Vegan. Что касается других атрбуитов в таблице, как вы думаете, это до 3NF или 4NF?

user1581908 22.04.2018 11:55

Перенос региона на стол country_region определенно правильно. Я не уверен, что вы делаете с name и type. Будет ли несколько продуктов с одинаковым названием? И если да, то разве suitable_for не будет одинаковым для всех, так что он должен быть в таблице для конкретных имен?

Barmar 23.04.2018 18:26
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
3
49
0

Другие вопросы по теме