Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: структура таблиц

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Bio man
Отправлено: 15 Марта, 2012 - 21:28:51
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




не могу понять как реализовать такую вещь. допустим есть таблицы "Заказчик", "Товары" и "Заказы". заказ содержит ид заказчика и товары. так вот, как сделать структуру, которая будет соответствовать хотя бы 2 нормальной форме? то есть в заказах нельзя хранить ид товаров через запятую или в виде списка (SET).

------
заказы
------
id
user_id
товары


------
заказчик
------
id
ФИО
итд


------
товары
------
id
название
количество
итд
 
 Top
DelphinPRO
Отправлено: 15 Марта, 2012 - 21:43:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




ну например завести еще одну таблицу с двумя полями ID_заказа, ID_товара


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Bio man
Отправлено: 15 Марта, 2012 - 21:50:13
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




добавить таблицу "Товары заказчика"

---------
Товары заказчика
---------
id
user_id
good_id

как тогда связать ее с заказами?
(Добавление)
но нет смысла от нее. с таким же успехом можно хранить в заказах. 1 запись в заказах это 1 товар. не нарушает такая реализация 2 НФ?
 
 Top
caballero
Отправлено: 16 Марта, 2012 - 00:08:00
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
но нет смысла от нее. с таким же успехом можно хранить в заказах. 1 запись в заказах это 1 товар. не нарушает такая реализация 2 НФ?

не пудри себе мозги всякими НФ

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

то есть 4 таблицы
если уж сильно озабочен нормализацией - то они как раз и нормализованы.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Dezmont
Отправлено: 16 Марта, 2012 - 08:46:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Bio man пишет:
но нет смысла от нее. с таким же успехом можно хранить в заказах. 1 запись в заказах это 1 товар. не нарушает такая реализация 2 НФ?


Задай себе вопрос: находится ли таблица хотя бы в 1 нормальной форме? Потому что, как я помню, 2 НФ соблюдается, если Первичный ключ таблицы НЕ составной!
(Добавление)
А вообще, надо стремиться к 3 НФ. Вот так по-моему правильно будет:

Заказчик: id | ФИО и т.д.

Товар: id | Название | Параметры и т.д.

Заказ: id | id_Заказчика | id_Товара | Количество Заказываемого Товара и т.д.
 
 Top
Zuldek
Отправлено: 16 Марта, 2012 - 08:53:57
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




заказчик
id_заказчика | ...

товары
id_товара | ...

заказы
id_заказа | id_заказчика | ...

заказы2товары
id_заказа | id_товара | ...

никаких перечеслений через запятую в одном поле. Только если на 100% уверены что в приложении с кончательно и безповоротно завершенной архитектурой не будет работы с данными по товарам в заказе, кроме как их вывода списком. Тогда их можно хранить в 1 поле в виде сериализованного массива. Но никак через запятые или ещё что-то.

(Отредактировано автором: 16 Марта, 2012 - 08:58:16)

 
 Top
Dezmont
Отправлено: 16 Марта, 2012 - 08:57:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




А зачем таблицы две таблицы Заказы и заказы2товары? Понять не могу.
 
 Top
Zuldek
Отправлено: 16 Марта, 2012 - 08:59:15
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Dezmont пишет:
А зачем таблицы две таблицы Заказы и заказы2товары? Понять не могу.

таблица связей заказов и товаров. товаров несколько в 1 заказе.
заказ 1 | товар 4
заказ 1 | товар 5
заказ 2 | товар 6

(Отредактировано автором: 16 Марта, 2012 - 09:00:46)

 
 Top
Bio man
Отправлено: 16 Марта, 2012 - 13:59:05
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




caballero пишет:
не пудри себе мозги всякими НФ
без этого никак! БД вещь серьезная и без нормализации далеко не уедешь.
caballero пишет:
то есть 4 таблицы
а может 3 хватит?


CODE (htmlphp):
скопировать код в буфер обмена
  1. ------
  2. заказы
  3. ------
  4. id
  5. user_id
  6. good_id
  7. количество
  8.  
  9. ------
  10. заказчик
  11. ------
  12. id
  13. ФИО
  14. итд
  15.  
  16. ------
  17. товары
  18. ------
  19. id
  20. название
  21. количество
  22. итд

то есть записи в заказах с одним user_id считаются как 1 заказ с множеством товаров. думаю так правильно будет, или нет?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB