Что такое нормальные формы базы данных, и можно ли дать примеры? [закрытый]

Измените свой код на то, как получить записи

, используя поиск и получение, отличается: разница поиска и получения в Eloquent

Также вам нужно получить первые элементы пакета

public function showPackageItems($id)
{
    $package = Package::with('packageitems')
    ->where('id', '=', $id)
     ->get();
   return view('admin.packages.show')->with('package', $package);
} 

269
задан Jax 15 March 2018 в 07:24
поделиться

3 ответа

1 нФ является самым основным из нормальных форм - каждая ячейка в таблице должна содержать только одну информацию, и не может быть никаких дублирующихся строк.

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

Данные зависят от ключа [1 нФ], целый ключ [2 нФ] и только ключевые [3 нФ] (поэтому помогите мне Codd).

2 нФ

Скажите, что у Вас есть таблица, содержащая курсы, которые взяты в определенный семестр, и у Вас есть следующие данные:

|-----Primary Key----|               uh oh |
                                           V
CourseID | SemesterID | #Places  | Course Name  |
------------------------------------------------|
IT101    |   2009-1   | 100      | Programming  |
IT101    |   2009-2   | 100      | Programming  |
IT102    |   2009-1   | 200      | Databases    |
IT102    |   2010-1   | 150      | Databases    |
IT103    |   2009-2   | 120      | Web Design   |

Это не находится в 2 нФ, потому что четвертый столбец не полагается на весь ключ - но только часть его. Имя курса зависит от идентификатора Курса, но не имеет никакого отношения, какой семестр это принято. Таким образом, как Вы видите, у нас есть дублирующаяся информация - несколько строк, говоря нам, что IT101 программирует, и IT102 являются Базы данных. Таким образом, мы фиксируем это путем перемещения имени курса в другую таблицу, где CourseID является ВСЕМ ключом.

Primary Key |

CourseID    |  Course Name |
---------------------------|
IT101       | Programming  |
IT102       | Databases    |
IT103       | Web Design   |

Никакое дублирование!

3 нФ

Хорошо, так скажем, мы также добавляем имя учителя курса и некоторые детали о них, в RDBMS:

|-----Primary Key----|                           uh oh |
                                                       V
Course  |  Semester  |  #Places   |  TeacherID  | TeacherName  |
---------------------------------------------------------------|
IT101   |   2009-1   |  100       |  332        |  Mr Jones    |
IT101   |   2009-2   |  100       |  332        |  Mr Jones    |
IT102   |   2009-1   |  200       |  495        |  Mr Bentley  |
IT102   |   2010-1   |  150       |  332        |  Mr Jones    |
IT103   |   2009-2   |  120       |  242        |  Mrs Smith   |

Теперь, надо надеяться, должно быть очевидно, что TeacherName зависит от TeacherID - таким образом, это не находится в 3 нФ. Для фиксации этого мы делаем почти такой же, как мы сделали в 2 нФ - вынимают поле TeacherName из этой таблицы и вставляют его его собственное, которое имеет TeacherID как ключ.

 Primary Key |

 TeacherID   | TeacherName  |
 ---------------------------|
 332         |  Mr Jones    |
 495         |  Mr Bentley  |
 242         |  Mrs Smith   |

Никакое дублирование!!

Одна важная вещь помнить состоит в том, что, если что-то не находится в 1 нФ, это не находится в 2 нФ или 3 нФ также. Таким образом, каждая дополнительная Нормальная форма требует всего, что более низкие нормальные формы имели плюс некоторые дополнительные условия, которые должны все быть выполнены.

426
ответ дан Smashery 23 November 2019 в 02:19
поделиться

У меня никогда не было хорошей памяти для точной формулировки, но в моем классе базы данных я думаю, что преподаватель всегда говорил что-то как:

Данные зависят от ключа [1 нФ], целый ключ [2 нФ] и только ключ [3 нФ].

116
ответ дан Chris Shaffer 23 November 2019 в 02:19
поделиться

Вот быстрый, по общему признанию забитый ответ, но в предложении:

1 нФ: Ваша таблица организована как незаказанный набор данных, и нет никаких повторяющихся столбцов.

2 нФ: Вы не повторяете данные в одном столбце Вашей таблицы из-за другого столбца.

3 нФ: Каждый столбец в Вашей таблице имеет отношение только к ключу Вашей таблицы - у Вас не было бы столбца в таблице, которая описывает другой столбец в Вашей таблице, которая не является ключом.

Для большего количества детали посмотрите Википедию...

44
ответ дан Dave Markle 23 November 2019 в 02:19
поделиться
Другие вопросы по тегам:

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