2013-02-20 5 views
0

У меня есть таблица с этой структурой:Должен ли я создать другую таблицу?

enter image description here

col1 будет "PRODUCT_NAME" и col2 "product_name_abbreviated".

Игнорирование идентификатор Колум Я эти данные:

1 1 43 
1 1 5 
1 1 6 
1 1 7 
1 1 8 
2 2 9 
2 2 10 
2 2 34 
2 2 37 
2 2 38 
2 2 39 
2 2 50 

я могу сделать еще один стол и поставить там col1 и col2 колонны becouse они повторяются. Что-то вроде этого:

enter image description here

Но я уверен, что это не будет повторяться более чем в 15 раз, так что ... Стоит ли?

Спасибо в продвижении.

+1

Что 'col1' и' col2' должен представлять? –

+1

Трудно сказать - но я настоятельно рекомендую не называть ваши столбцы «col1» и «col2». –

+1

Трудно сказать вам, что вы должны делать, не зная значения 'col1' и' col2' и как они соотносятся с ценой. – Danny

ответ

4

Да, вы должны разделить их на отдельные таблицы - это пример нормализации на Second Normal Form.

+0

Что делать, если это повторялось дважды? например, представьте, что у меня есть еще один колум, содержащий ген (мужской или женский). – harrison4

+0

Как гендер (мужчина/женщина) относится к продукту и/или цене? (Функциональная зависимость определяет, какие столбцы должны идти по тем таблицам.) –

0

Используйте только одну таблицу с идентификатором, две колонки VARCHAR для названия и аббревиатуры и NUMBER по цене.

2

Вы уверены, что СЕЙЧАС, но как насчет того, когда вы продлеваете свое приложение через год? Разделить таблицы

0

Нормализация подходит для предотвращения повторения данных. Ваша модель крошечная, данные небольшие, вам не следует беспокоиться и оставлять одну сущность (таблицу).

В реальных проектах иногда мы нормализуемся, а затем осознаем, что у нас есть беспорядок. Всегда хорошо балансировать между повторяющимися данными и легко понять модель и запросы. Не говоря уже о работе с базами данных хранилища данных ...

0

Это очень простой вопрос в дизайне базы данных, и ответ звучит как «Две таблицы»! Вот лишь некоторые из причин:

  1. Если у вас есть одна таблица, то по ошибке кто-то может ввести новую строку с названием продукта «1» и сокращенное наименование продукта «2» Единственный способ остановить это было бы добавить правила и ограничения - гораздо сложнее, чем просто разбивать таблицы в первую очередь.

  2. Глядя на схему базы данных, вы должны рассказать вам о том, что она представляет. Если это ФАКТ, вы не можете иметь продукт с названием продукта «1» и сокращенным названием продукта «2», тогда это должно быть ясно, если посмотреть на структуру таблицы. Одна таблица сообщает вам об обратном, что является UNTRUE. База данных должна говорить правду - в противном случае она вводит в заблуждение.

  3. Если кто-либо другой, кроме вас, смотрит или развивается против этой базы данных, они могут быть смущены и введены в заблуждение от такого отклонения от таких основных правил проектирования. Или, что еще хуже, это может привести к синдрому разбитого окна, если они предполагают, что он не был тщательно разработан и поэтому не заботился о своей работе.

Принцип называется «Нормализация» и лежит в основе того, что это означает что-то, чтобы быть реляционной базой данных, а не только некоторые данные в куче :)