Вопросы новичка о важном

AnrDaemon

Продвинутый новичок
Наверное, я к этому просто не пришёл. Думаю: ну вот зачем мне это dao, если я и php просто с mysqli толком не знаю.
Нет, ты просто ленишься.
Любой современный "язык программирования" (то, что ты понимаешь под этим) - это на 99% библиотеки.
PDO всего лишь одна из них, стандартная для языка, вероятно, в силу этого убогая, но тем не менее она не является частью собственно языка - язык и без неё работать будет.
 
Нет, ты просто ленишься.
Может быть и так.

Тут другой вопрос возник:
Касательно структуры базы данных. Надо ли к 3 нормальному виду приводить или нет?
Таблицу Клиенты я разделил на 3. И что-то мне подсказывает, что зря.
 
Как советовал Фанат, начал активно использовать команду EXPLAIN. И касательно индексов возникли вопросы:
1) Если я ищу (живой поиск при вводе от 4 символов) по полю surname, в котором содержится фамилия, то лучше для этого поля использовать индекс fulltext?
2) Из статьи на Хабре узнал, что индекс BTREE работает следующим образом:
Например, когда Вы запрашиваете AGE = 18 с BTREE-индексом по колонке AGE MySQL найдёт в таблице первую отвечающую запросу строку и продолжит поиск до тех пор, пока не найдёт первую неподходящую строку — тогда он останавливает поиск, т.к. считает, что дальше ничего подходящего не будет.
Т.е. если у меня есть поле с номерами образцов, которые могут повторяться (не уникальные; это я вообще для примера). И где-то в начале был номер 15, а потом в конце появился такой же номер, то последний он не найдёт?
3) В той же статье говорится:
Итак, мы обсудили как MySQL ищет по индексу, но не определили что же он возвращает после поиска — обычно (если речь не идёт о покрывающих (covering) индексах) получает «указатель строки», который может быть значением первичного ключа (если используется движок InnoDB),
Ключ - это AI, который не может быть пустым и повторяться. Ключевое поле является индексом?
И что такое комбинированный индекс? Это типа этого?

И как быть с ключевым полем? При создании индексов к другим полям добавлять и ключ к ним?
 

fixxxer

К.О.
Партнер клуба
Тут другой вопрос возник:
Касательно структуры базы данных. Надо ли к 3 нормальному виду приводить или нет?
Таблицу Клиенты я разделил на 3. И что-то мне подсказывает, что зря.
К как минимум 3-й нормальной форме надо приводить всегда. Если это начинает мешать задумке использовать в качестве ACL права на таблицы - значит, надо от этой задумки отказаться.

касательно индексов
Давай объясню на пальцах и аналогиях.
В качестве аналога btree-индекса можно представить себе записную книжку - нужна фамилия на "Ж", вот сразу на "Ж" и смотришь.
Комбинированные индексы - это если ты дальше сделаешь прорези "второго уровня", уже по имени. Из этого очевидно, что идея сработает только при соблюдении порядка полей в индексе.

Fulltext - это инвертированный индекс. Это как в конце какой-нибудь энциклопедии есть глоссарий (или как это правильно называется?) - где есть список слов, и написано, на каких страницах это слово встречается.
 
Если это начинает мешать задумке использовать в качестве ACL права на таблицы - значит, надо от этой задумки отказаться.
Задумке не мешает. Просто я подумал, если я постоянно данные использую вместе (и записываю и читаю), зачем мне их в этом случае делить. Ну так ведь?

Давай объясню на пальцах и аналогиях.
Долго копался и нашёл вот такую статью)

Стало быть ключевое поле по умолчанию индекс (кластерный).
 
Сверху