За последние 24 часа нас посетили 20139 программистов и 1693 робота. Сейчас ищут 1896 программистов ...

Разделение данных по таблицам

Тема в разделе "PHP и базы данных", создана пользователем Danilka, 5 дек 2007.

  1. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    угу, читай дальше. Вторую нормальную и т.п. ))))
     
  2. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Прочитал, а дальше-то? К чему это? Что индексы не по всем полям нужны или к чему?
     
  3. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    индексы - это к понятию перебор и когда он производится.
    К хранению и использованию данных - нормальные формы.
    теперь распиши свою структуру и обоснуй.
     
  4. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    [id] [to] [from] [time] [theme] [message]
    + индекс по полю [to] и [time]
     
  5. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    не вижу структуры данных и описания полей.
     
  6. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    id - int 11
    to - varchar(100)
    from - varchar(100)
    time - bigint(20)
    theme - varchar(255)
    message - text

    А какая структура?
     
  7. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    так, поехали по методичке с нормальными формами.
    какие данные будут дублироваться в такой структуре?
     
  8. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
  9. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    что говорит методичка по этому поводу? ))
     
  10. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Получается, чтобы заиметь вторую нормальную форму, нужно разбить на две таблицы:
    [link]
    id - int(11)
    to - varchar(100)
    from - varchar(100)

    и
    [mes]
    id - int 11
    lid - int(11)
    time - bigint(20)
    theme - varchar(255)
    message - text

    Так? Но где выгода, я понять не могу.
    Ибо теперь для выдёргивания придётся юзать либо перекрёстный запрос, либо просто 2.
    Разве один не будет быстрее?

    Эт я для себя, чтоб линк не искать http://ru.wikipedia.org/wiki/Нормальная_форма
     
  11. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    ))))
    как ты пришел к этому, расскажи?
    переименуй id в id_what_it_means в каждом случае.
     
  12. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Ну в таблице [link] id нужен для того, чтобы проассоциировать запись с таблицей [mes].
    id в таблице [mes] нужен, как примари кей, чтобы точно идентифицировать запись в коде. А lid - это один из id из таблицы [link].
    Пришёл к этому вот по этому примеру:

    Сотрудник Должность Зарплата
    Гришин Менеджер 30000
    Васильев Программист 40000
    Петров Программист 40000

    В результате приведения к 2NF получим две таблицы:

    Сотрудник Должность
    Гришин Менеджер
    Васильев Программист
    Петров Программист

    Должность Зарплата
    Менеджер 30000
    Программист 40000
     
  13. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Возвращаемся к первому пункту и сначала думаем, что надо сделать.
    Не "сделали и подумади а зачем", а наоборот.
    Какие аномалии есть в исходной таблице?

    зы русскоязычная вики дурна.
     
  14. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    id - int 11 - нужен в любом случае, ибо никакое другое поле не даёт полной идентификации записи
    to - varchar(100) - не выбросить
    from - varchar(100) - не выбросить
    time - bigint(20) - Тоже врятли выкинуть
    theme - varchar(255) - Собственно без этого теряет смысл
    message - text - не выбросить
     
  15. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    я пас. может кто-то еще попробует.
     
  16. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Чего так?
    Я что-то ступил или я что-то не так делаю?
     
  17. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Danilka, ответь на пару вопросов:

    1. Почему в примере из вики в отдельную таблицу выделены именно эти поля?
    2. Какие поля у тебя в структуре соответствуют каким в примере и почему?
     
  18. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Как я понимаю:

    Есть некоторые критерии присвоенные одному уникатьному параметру.
    В нашем случае параметром выступает должность: Программист, Менеджер.
    А во второй таблице уже каждому человеку вешают лэйбочку о том, кто он такой и соответственно он автоматически получает набор параметров из второй таблицы.

    Допустим у нас есть узер, зарегеный в форуме. Он пренадлежит какой-то группе и наследует все права и возможности группы. Так и тут.

    Как это применить к моему случаю что-то не догоняю.