За последние 24 часа нас посетили 19097 программистов и 1638 роботов. Сейчас ищут 939 программистов ...

Подскажите!!1

Тема в разделе "PHP и базы данных", создана пользователем rodion4657, 17 сен 2012.

  1. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Объясните пожалуйста!!!!

    Добрые люди объясните пожалуйста следующее...Есть БД приведенная к 3 нормальной форме в ней связаны две таблицы:table1(id,name), table2(id,time,cost,color).Каким образом будут добавляться данные из одной таблицы excel
    (имя время цена цвет) такой например.
    саша 17:34 10 зеленый
    в эту базу данных, состоящую их двух таблиц...Просто объясните, как быть в таком случае, или здесь вообще другой подход, очень нужно разобраться помогите...
     
  2. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Добрые люди объясните пожалуйста следующее...Есть БД приведенная к 3 нормальной форме в ней связаны две таблицы:table1(id,name), table2(id,time,cost,color).Каким образом будут добавляться данные из одной таблицы excel
    (имя время цена цвет) такой например.
    саша 17:34 10 зеленый
    в эту базу данных, состоящую их двух таблиц...Просто объясните, как быть в таком случае, или здесь вообще другой подход, очень нужно разобраться помогите...
     
  3. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Конкретно в этом примере - не понимаю, зачем вообще разделять на две таблицы.
     
  4. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    разделяю, потому что есть только три имени, а записей много, тем самым избавляюсь от избыточности
     
  5. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    смысла не вижу, все ровно в table2 поле с name_id придется добавлять (если конечно id ни есть это самое поле)
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    table1(id, name)
    table2(id, name_id, time, cost, color)
     
  7. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Я извиняюсь, конечно
    Код (Text):
    1. name_id
    должно быть (поспешил)...так вот при такой структуре таблиц
    Код (Text):
    1. table1(id, name)
    2. table2(id, name_id, time, cost, color)
    какова будет процедура добавление данных в базу из одной таблицы Excel?Просто объясните сам механизм добавления записей из одной таблицы в две...
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Создаёшь пустой массив, допустим $names
    Читаешь таблицу строку за строкой. Смотришь на поле name из этой строки. Проверяешь, есть ли в массиве элемент $names с таким индексом. Если нет - добавляешь запись в таблицу names, получаешь последний сгенерированный id, записываешь в массив $names информацию - name такой-то соответствует id такой-то. Если есть - просто берёшь id, соответствующий данному name. И вставляешь остальные данные, включая этот полученные name_id во вторую таблицую Переходишь к следующей строке.

    Добавлено спустя 49 секунд:
    Проверяешь, есть ли в массиве $names элемент с таким индексом.

    Добавлено спустя 51 секунду:
    полученный
     
  9. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    да нахрена это все надо? если имен всего 3 какая [матное слово] избыточность?
    фанатизм!
     
  10. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    имени, не три , их большое количество, их 3 разновидности, и чтобы не писать каждый раз полное имя ,которое будет повторяться, я нормализовал базу, чтобы во вторую таблицу записывать в поле name_id id соответствующего имени из первой таблицы. Можно объяснить подробней, если возможно, какой нибудь легкий примерчик, как осуществлять проверку соответствия имени , находящегося в массиве, который получился, путем считывания строки из таблицы excel. Имени из первой таблицы базы. И записи во вторую таблицу соответствующего id имени. Или хотябы подскажите, где достать материал, по такой проблеме.
     
  11. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    как это 3 разновидности?
     
  12. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    ну я просто так выразился...Саша, Петя, Маша. Но записей в базе много, и эти имена будут повторятся в БД, нужно вместо того , чтобы писать полностью эти имена, использовать просто их id, что снизит общий размер базы.(задача устранения избыточности )
     
  13. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    блин!!! объясняю для тех кто в танке что смысла в этом нет!!! так как количество записей это не сокращает
     
  14. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    да, но это сокращает размер каждой записи, писать целое имя состоящее из 4 символов или писать id где 1 символ
     
  15. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    тогда есть вариант проще чем описал sobachnik, вам он подойдет
    вбиваете в table1 имена руками
    1 вася
    2 петя
    3 маша
    и читаете с экселя по строке (допустим в массив $data), далее проверка:
    if($data['name']=="вася") $name_id=1;
    elseif($data['name']=="петя") $name_id=2;
    elseif($data['name']=="маша") $name_id=3;
    после подстовляете $name_id в запрос
     
  16. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    а сколько планируется записей?
     
  17. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    записей будет около 1000 это на что- то повлияет?в данном примере будет регистрозависимость?и в какой кодировке тогда лучше хранить записи в базе
     
  18. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    1000 это очень мало! делайте в одной таблице и будет вам счастье!
     
  19. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    как там яднекс пишет? оптимизировали пере оптимизировали да не пере оптимизировали :)

    тут значит нормализировали пере нормализировали да не пере нормализировали :)
     
  20. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Re: Объясните пожалуйста!!!!

    Вообще, ничего не понятно.
     
  21. uorypm

    uorypm Активный пользователь

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    Re: Объясните пожалуйста!!!!

    Пример подхода, который был использован Вами. И, собственно, в чем сложность?
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Объясните пожалуйста!!!!

    транзакции и вставляешь в обе таблицы.

    смысл какой было разбивать не повторяющиеся данные на две таблицы?
     
  23. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    для нормализации, имена людей повторяются, прочитайте маленькую статью, я же все правильно понял?http://webadequate.ru/rabota-s-bd-mysql/15-normalizaciya-obektov-v-mysql.html также можно немножко про транзакции...я с этим не сталкивался вообще.
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    при чем тут повторяются имена людей или нет. =) У вас есть клиент допустим. У него есть имя, фамилия. То, что у людей имена повторяются, еще не значит, что надо так извращаться =)
    Это если я про имена правильно понял.

    Ибо если это именно что конкретные люди-клиенты допустим, то да, их надо хранить в отдельной таблице, а еще лучше БД :D
     
  25. rodion4657

    rodion4657 Активный пользователь

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Да, в моем случае это конкретные клиенты, поэтому я вынес их в отдельную таблицу.
    это о чем?