Отправляет email-рассылки с помощью сервиса Sendsay

Perl - подпишись и учись!

  Все выпуски  

Perl - подпишись и учись!


Информационный Канал Subscribe.Ru


 Hi, All!  
    Приветствую всех!(А именно 9551 подписчиков)

Рад Вас приветствовать!
По просьбе приятеля стояла задача перевода небольшой статейки о использовании MySQL(естественно с PERL). Разобью эту статейку на две рассылки... Надеюсь кому-то она будет полезна... Да, и ещё, некоторое время назад общался с людьми(из подписчиков), которые помогали мне с редактированием рассылки, так вот, обращаюсь к ним: "Люди, если Вы ещё здесь - откликнитесь :)), пожалуйста, нужна будет Ваша помощь, а emailы Ваши - растерял ввиду своей рассеянности.. :(("
#форматироание - автора статьи, оригинал - http://www.danchan.com/feature/2000/10/16/mysql/mysql.htm

продолжение...

Типы MySQL и primary key

Мы не говорили о директиве primary key в команде create table.

create table users
(
    ...
    primary key    (user_id),
    ...
)

Создаётся первичный ключ. Первичный ключ - это особый ключ, который может быть только один для данной таблицы для каждой аблицы. По сути, первичный ключ - это уникальный (UNIQUE) ключ с именем "PRIMARY". Несмотря на привелегированный статус, он функционирует как другой уникальный ключ. Но

select * from users where user_id = 2;

быстрее, чем

select * from users where favorite_number = 945;

MySQL ограничен маленькими типами данных? Если, конечно, Вы считаете, что 4 гигабайта - это мало, то да. Это размер, который может быть помещён в поля типов LongBlob и LongText.

Предположим мы хотим создать форум. Простая таблица для хранения сообщений может выглядеть так:

create table messages
(
    id           int auto_increment not null,
    user_id      int not null,
    posting_date datetime not null,
    comment_body text
    primary key  (id)
)

Этот пример предоставил нам два новых типа: datetime и text.

Данные колонки datetime структуированы следующим образом: "YYYY-MM-DD hh:mm:ss". В данном примере поdatetime могут быть отсортированы сообщения. Для нас это всего лишь строка.

Типtextможет содержать данные до 64Kb, что более чем достаточно для сообщения.

Колонка user_id является реляционной частью Реляционной Системы Управления Базой Данных (РСУБД).

Вот пример ряда (message_body может быть более длинным):

+----+---------+---------------------+--------------+
| id | user_id |        posting_date | message_body |
+----+---------+---------------------+--------------+
|  1 |       3 | 2000-10-10 10:00:00 |      Wassup! |
+----+---------+---------------------+--------------+

Предположим мы имеем систему голосования, где пользователи могут оценить действительно ли сообщение было достойно чтения или нет. Создадим таблицу, подобную этой:

create table message_votes
(
    message_id  int not null,
    user_id     int not null,
    vote        enum('good', 'bad') not null,
    primary key (message_id, user_id)
);

В этом примере колонка vote может содержать одно из двух: либо 'good', либо 'bad'.

Для поиска голосования сообщения можно будет сделать следующее:

select * from message_votes where message_id = 3;

, что будет быстрее, чем:

select * from message_votes where user_id = 2;

Но самым быстрым поиском голосования по сообщению будет:

select * from message_votes where message_id = 3 and user_id = 2;

Теперь мы готовы к взаимодействию DBI и MySQL.

Продолжение следует.....:))

________________________________________
И ещё, если у вас есть вопросы, то задавайте их на форуме сайта(http://perl.iatp.org.ua).
________________________________________

                С уважением, Дмитрий 





http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное