вівторок, 5 лютого 2013 р.

Редагування контенту сайту (мокап тест), за допомогою хрому та одного рядка Javasript

Недавно колега поділився дуже зручним хуком.
Достатньо виконати команду
javascript:document.getElementsByTagName('html')[0].contentEditable=true;
Для цього треба пастнути скрипт в адресний рядок браузера і натиснути ентер. Перевіряли в хромі - працює. А от у ФФ довелося запускати вогняного жука для виконання цього скрипта.
Після виконання скрипта контент будь-якого (майже) сайту стає редагованим. Ви можете міняти всі тексти просто встановлючив потрібне місце курсор і набираючи текст. Все це звичайно не міняє реальний контент сайту. Проте дуже зручно тестувати мокапи на предмет маштабування довгих лейблів, та великих абзаців. Ну або просто роблячи смішні скріни відомих сайтів :) .

середа, 22 серпня 2012 р.

10 СПОСОБОВ ПУТЕШЕСТВОВАТЬ ПО МИРУ ПОЧТИ БЕСПЛАТНО


10 СПОСОБОВ ПУТЕШЕСТВОВАТЬ ПО МИРУ ПОЧТИ БЕСПЛАТНО. Обязательно делитесь и сохраните, пригодится!

Жизнь в постоянном движении не может не быть интересной. А также дешевой. За постоянную смену мест и новых знакомых приходится платить. Как же путешествовать по миру, не тратя много денег?

1. www.couchsurfing.org/ Его цель – сделать путешествие по миру для всех желающих доступным, без больших денежных затрат. Приехав в другую страну, человек живет в семье местных жителей совершенно бесплатно, при этом люди, принимающие его, могут помочь осмотреть местные достопримечательности, провести время интересно и познавательно. Просить деньги за прием запрещено по правилам сообщества, но подарок или помощь в ведении хозяйства приветствуется.

2. Turtle Teams, «Черепашьи команды». Это название тысячи небольших групп по всему миру, помогающих морским черепахам, которые находятся на грани исчезновения. Больше информации можно узнать на сайтах:www.seaturtles.org и www.cccturtle.org.

3. Conservation Volunteers, Австралия и Новая Зеландияwww.conservationvolunteers.com.au. Название организации переводится приблизительно как «добровольные защитники природы». Общая задача участников - защита природы и развитие экотуризма. Британская версия фонда - BTCV (British Trust for Conservation Volunteers), www.btcv.org.uk.

4. Sudan Volunteer Programme www.svp-uk.com для знающих английский язык - это неплохой способ подзаработать за лето, ведь программа ориентирована на обучение суданских детей и студентов иностранному языку.

5. Appalachian Trail Conference www.appalachiantrail.org Цель - сохранение 2,175-мильного достояния организации, 250 000 акров зеленой земли от штата Мэн до Джорджии.

6. Trip Leader for HF Holidays, Европа www.hfholidays.co.uk - это одна из самых популярных европейских организаций, отправляющая добровольцев в пеший туризм.

7. Help Exchange- www.helpx.net - на этом веб-сайте перечислен список всех хозяев по всему миру, нуждающихся в дополнительной силе: будь то ферма или небольшой сад, школа или церковь, постройка здания или простой общественный центр.

8. Peace Corps - www.peacecorps.gov - уникальный шанс жить и работать в чужой стране, работая в различных сферах, начиная от здравоохранения, спасения окружающей среды и т. д. Помимо этой организации существует и американский проект Voluntary Services Overseas (Добровольные услуги за границей) - www.vso.org.uk.

9. United Nations Volunteers - добровольцы ООН www.unv.org - оказывает широкий спектр помощи, начиная от здравоохранения и заканчивая помощью после стихийных бедствий.

10. WWOOF www.wwoof.org Желающие работать на ферме по 6 часов в день, должны заполнить бланк, где и изъявят стремление к полевым работам. Через какое-то время один из фермеров готов будет предоставить жилье и пищу за работу. Причем вам будет предоставлено право выбора: из желаемой страны агротуристу показывают весь каталог фермеров, участвующих в программе. Остается лишь набрать номер и договориться о сроках и условиях пребывания. На сегодняшний день WWOOF работает в 53 странах.
 — with Alex Bogush.
Share · August 16

пʼятниця, 10 серпня 2012 р.

Лінгво постарався і зібрав 10 сайтів для навчання, з відео курсами.

Lingvo.UA

10 сайтов с бесплатными видеолекциями на английском

1. Academic Earth: www.academicearth.org
2. Ignite: www.igniteshow.com
3. PopTech: www.poptech.org
4. Free Video Lectures: www.freevideolectures.com
5. Videolectures: www.videolectures.net
6. OpenCourseWare Consortium: www.ocwconsortium.org
7. 60 Second Lectures: www.sas.upenn.edu/home/news/sixtysec_lectures_archive.html
8. MathTV: www.mathtv.com/videos_by_topic
9. Forum Network: www.forum-network.org
10. KhanAcademy: www.khanacademy.org

четвер, 14 червня 2012 р.

Підбірка класних цитат.

Джерело: interesting-things.ru

«Лето, которое начинается в пятницу, по определению не может быть плохим =8]»

«Главные вещи в жизни — не вещи.»

«В старинную венгерскую деревушку Máglya стоит заглянуть, чтобы насладится удивительной традицией местных жителей сжигать всех приезжих.»

«— Покорми кота! — Он сыт! — Ну как поссыт, покорми!»



««Если завернуть мыло в полотенце и избить им кого-то, то на теле жертвы не останется никаких следов, которые могла бы зафиксировать судмедэкспертиза». Эта информация не даёт мне покоя.»

«— Назовите качества, которые считаете в себе худшими. — Излишняя прямота. — Странно, я считал это плюсом… — Да мне похуй что ты считаешь.»

«Актуальность моей дипломной работы состоит в том, что без неё мне не дадут диплом.»

«Фрезеровщик с одиннадцатью пальцами на работе может вести себя чуть более раскованно.»

«Денег, которые я заработал, хватит мне до конца жизни, если я умру сегодня в 22:00.»

«Лето покажет, кто ел по ночам.»

«Ну и картошка! Такую даже в рагу не пожелаешь.»

«— Евровидение смотрел? — Нет, книга лучше. — Какая книга? — Любая.»

«Если программист в 9 утра уже на работе – значит, он ещё на работе.»

«Театр начинается с вешалки. Родина начинается с картинки в твоём букваре. Ебаный пиздец начинается в понедельник, часов 8-9 утра.»

«Мeня нe покидaeт надeжда, чтo однaжды я вoт тaк же выйду зa сигаретaми и внезaпно для вcех cъебу в дpугую стрaну.»

«Гот Максим назвал свою кошку – Смерть. И теперь частенько вечерами играет со Смертью.»

«В России все платные услуги начинаются со слов «Ну вообще-то, это запрещено».»

««Кукуся», «пася-пася», «бзябзик», — а как ты деградируешь, когда влюбляешься?»

«Чужая душа — котёнки.»



«Самый распространенный любовный треугольник: Он, Она и Идиотизм.»

«Как лечь в 4 часа утра и быстренько проснуться в 6? Об этом читайте в моей книге: «НИКАК БЛЯДЬ».»

«Детство — это когда кот старше тебя.»

«Терпеть не могу людей, которые кучу всего наобещают, но не выполняют. Да ещё и всякие оправдания придумывают вместо того, чтоб признаться, что они говно.»

«Когда программисты придут к власти, целые министерства будут заменены на небольшой скрипт.»

«— Дорогой, скажи, меня эти джинсы не полнят? — Ты не обидишься, если я скажу правду? — Ну что ты, нет. — Я сплю с твоей сестрой.»

«Ты спросишь, что я люблю больше — тебя или борщ. Я отвечу борщ. И ты уйдешь, так и не заметив, что идешь нахуй с такими тупыми вопросами.»

«А в следующую пятницу – ЛЕТО!»

«Дальновидная девочка на выпускной надела колготки с уже испачканными коленками.»

«Клуб любителей скрипеть дверями объявляет о своем открытии закрытии открытии закрытии открытии закрытии открытии закрытии»

«— Давай, просто посидим молча? Здесь так красиво, не хочу нарушать эту тишину… — Молодой человек, прекратите паясничать и тяните билет.»

«Карлсон — это Тайлер Дёрден детской литературы.»

«Мальчик, которого воспитали бараны, успешно адаптировался в современном обществе.»

«Ах да, еще транспорт.»

«Ненавижу всё общественное, особенно питание, мнение и туалет.»

««Пытаясь выделиться из толпы, ты попадаешь в толпу, которая пытается выделиться из толпы». (Джаред Лето)»

«Удивительно, как быстро у людей меняются интересы. Казалось, еще вчера я мечтал о собаке, а сегодня хочу улететь с этой ебаной планеты.»



«Блять, как меня заебали эти неправильные субботы! Мой алкорежим нарушен.»

«Cтрах и ненависть в общественном транспорте.»

«— Чем отличается конец праздников от конца света? — После конца света ты уже не мучаешься.»

«Я должен переспать думать о ней…»

«Каждый день окружающие доказывают мне, что жизнь без мозга реальна.»

«Иногда просто хочется услышать от человека: «Знаешь, мне кажется, я тебя так заебал. Схожу-ка я нахуй».»

«Ухоженный вид, грамотная речь и книги — вот что всегда будет в моде!»

«Самый редкий вид дружбы – это дружба с собственной головой.»

«Алкаш Петрович по проведенному им же социальному опросу, является самым уважаемым человеком во дворе.»

«Вроде сегодня Среда, а убить всех хочется, будто Понедельник.»

«Если заменить «аминь» на «такая вот херня», многое станет на свои места.»

«Хочется просто войти в квартиру, раскидать обувь по углам, зарядить телефоном в стенку и заорать: КАК ЖЕ МЕНЯ ВСЕ ЗАЕБАЛО!»

«Первый, кто начал радоваться пятнице, был Робинзон Крузо.»

«— Я хочу, чтобы мы умерли в один день! — Дед, прекрати!»

«Кстати, кто там хотел похудеть к лету? ПОЗДНЯК МЕТАТЬСЯ»



««Цитировать чужие мысли — значит сожалеть, что они не пришли в голову вам самим» (Саша Гитри)»

«Спонсор моей бессонницы – фигня в голове. Фигня в голове – всегда со мной!»

«Моя память играет со мной злую шутку: я забываю все, что так отчаянно пытаюсь запомнить и помню все, что так сильно мечтаю забыть.»

«Бесконечно можно смотреть на три вещи: как горит огонь, как льется вода и как женщина роется в своей сумочке.»

«Я бы обнял тебя, но боюсь переобниму и выебу.»

«Если в слове «люди» допустить 28 ошибок, то получится «ебанутые эгоистичные сволочи». Хорошо, что смысл не изменится.»

«— Давай я расскажу тебе шутку, от которой у тебя вырастет огромная жирная жопа? Ой, я вижу ты её уже знаешь.»

«Подлинное искусство вести диалог — в том, чтобы собеседник самостоятельно принял решение отправиться нахуй.»

«Кот Никиты Джигурды лает на гостей.»

«Настоящая русская свадьба − хорошая возможность увидеть дальних родственников в ближнем бою.»

«Ничто так не убеждает в существовании души, как ощущение того, что в неё насрали.»

««Именно те люди, которые просыпаются рано утром, и несут миру войну, смерть и голод» /Бэнкси/»

«Кто не работает – тот удачно вышла замуж.»



«Скоро опять начнутся кровавые войны между теми, кому душно, и теми, кому дует.»

«– О боже! Что у тебя с фигурой?! – Ну, у меня двое детей… – И что? Ты их сожрала?!»

«Какая-то тварь за зиму ушила весь мой весенний гардероб… Ни одной вещи не пропустила, зараза трудолюбивая…»

«Обожаю ходить на работу! И с работы! Но вот эти 8 часов между ходьбой – просто бесят!»

«Столько планов было еще планов на вечер… Но поспать победил!»

«Все люди деляться на две категории: на тех, кого бесит орфографическая ошибка в этом предложении, и на тех, кто её просто не замечает.»

«Мне иногда кажется, что я станцевал ритуальный танец привлечения пиздеца.»

«Я так люблю, когда меня хлебом кормят. Меня хлебом не корми, хлебом корми.»

«Если надолго оставить женщину одну, у нее заводятся Мысли и она их Думает. В силу женских особенностей, ни к чему хорошему это не приводит.»

«Нужен праздник, альтернативный Пасхе, для симметрии. Чтобы все говорили «Существование бога не доказано», а им отвечали «Совершенно согласен».»

«Впечатления от жизни одинаковы во все времена — небо синее, трава зеленая, люди дрянь.»

«— Привет, давай куда-нибудь сходим. — Я бы с удовольствием, но у меня работа, учёба, иди нахуй, уборка, к родителям съездить надо.»

«Деньги — это зло! Значит зарплата в пятницу 13-го просто обязана быть!»



«Я настолько устал от компьютера, что иногда выхожу на улицу, чтобы просто посмотреть на людей.»

«Всех свадебных фотографов надо сжечь на большом костре. Всех, кроме одного — тот пусть сфотает как будто я держу костер на ладошке.»

«Папа пришел домой пьяный. Ватикан в шоке!»

««Мой муж так сильно устаёт на работе, что не чувствует ни рук, ни ног, ни рог.»»

«Воскресенье — как лесбийское порно. И вроде все хорошо, но что-то не так.»

«Стриптизерша залезла на стол к Юрию Куклачеву и получила тапком по морде.»

««Похудеть к весне не получилось. Раскормлю мужа, сыграю на контрасте.»»

«Ира опоздала на свидание на три часа, поэтому сама понимала, что этот пендель она, в принципе, заслужила.»

«Парень выбирает чехол для своего макбука и приговаривает: «Сейчас-сейчас, Игорь, купим тебе пальто».»

«Я бы уничтожил весь мир… но я уже в пижаме.»

«Я пришел на работу работать. А не на глупые вопросы отвечать – почему я пьяный здесь сплю.»

«Ребята заказали в сауну суши, чтобы девочки смогли и рыбку съесть.»

«Немой петух по утрам вибрирует.»

«Спор с девушкой, как задержание правоохранительными органами. Все что ты не скажешь будет использовано против тебя.»

«Нет денег на пиццу − продал окно. Только «Sims», только хардкор!»

«— У меня бабочки в животе…— Так перестань их жрать, дура.»

«Сижу на диете исключительно ради того, чтобы продолжать издеваться над жирными.»

«Если у вас богатый внутренний жир, значит вам пора бы в качалку.»



«Я нахожусь в прекрасном возрасте: и могу, и хочу, и знаю как.»

«Кажется, только недавно была зима, а уже снова зима. КАК ВРЕМЯ БЫСТРО НЕСЕТСЯ.»

«— Будешь выходить − труп вынеси!— Может быть мусор?— Может мусор, может сантехник, кто его знает…»

«Люблю, когда ты говоришь человеку, что он уёбок, а он смеётся, думая, что ты шутишь.»

«Знаю отличную шутку про Почту России, но она до всех долго доходит.»

«Когда мне скучно, я подхожу к незнакомцу на остановке и говорю: «Это все не по-настоящему. Проснись. Ты в коме».»

«Ненавижу раздвоение личности! Ведь это так круто!»

«— Мама, я повешусь! — Я тебя накажу!— Как? Перевесишь в угол?»

«Понедельник: проснуться → выжить → уснуть.»

«Сергей Викторович настолько плохо парковался, что на машине ему писали «дура».»

«— Юноша, в столь поздний час в чужом краю, откуда будете вы сами? Изволите ли финансово помочь нам с господами и дайте позвонить!»

«Женская народная забава — влюбиться в идиота и уверять всех, что он единственный и неповторимый.»

«Какая грустная история любви…»

«Чтобы выделятся из серой массы, не обязательно красить волосы в красный цвет и носить кольцо в носу. Достаточно просто не быть говном.»

«— Извините, вот вам ваш нос, я нашел его в своих делах.»

«Девушки мечтают о милых и заботливых парнях, но у таких парней уже есть парни.»



«— А Бог — это кто?— Ну… когда тебе чего-нибудь хочется, ты закрываешь глаза и просишь об этом. Бог — это тот, кто не слушает твоих просьб.»

«Этот процесс будет длиться вечно: не спать до 3-х и утром себя ненавидеть. Это у меня, похоже, традиция.»

«Моё утро — как маленький артхаусный фильм: что, когда, зачем, чё за хуйня вокруг происходит, пиздец кто всё это говно придумал?»

«Чем хуже в душе, тем выше каблук и короче юбка. Так что, когда вы увидите женщину в кедах и джинсах знайте — она счастлива.»

«Прескевю – состояние, когда человек не может вспомнить слово, оно вертится у него на кончике языка и кажется, что он вот-вот его вспомнит.»

«В аду есть специальный котел для тех, кто говорит во время просмотра фильма.»

«Кладбище ночью — это, пожалуй, единственное место на земле, где пьяного мужика с битой испугаешься меньше, чем одинокую маленькую девочку в белом платьице.»

«Стоит только заиметь собственное мнение − и общество уже объявляет тебя хамом, сволочью и выродком, подлежащим немедленному перевоспитанию.»

«Советов у меня лучше не просить, потому, что чувство юмора у меня сильнее чувства жалости.»

«– Будешь на кухне, захвати печеньки. – Печеньки захвачены, мой генepaл!»

«Будьте реалистами — добивайтесь невозможного. Нахуй очевидность. /Лёха Никонов/»

«Сейчас Весна позвонила, пьяная, еле-еле разговаривает, вокруг шум, смех, орут чего-то! Я говорю «Ты где вообще?!», она говорит «Да иду уже!»»

«Доведенный до отчаяния водитель маршрутки, ходит по квартирам своих пассажиров и хлопает дверью холодильника.»

середа, 4 січня 2012 р.

Хачапури по-аджарски

Хачапури по-аджарски

Хачапури по-аджарски едят вилкой , смешав в середине сыр, масло и яйцо и обмакивая в эту смесь отрезанные кусочки хрустящей лепешки.


Состав на 10 порций:
1 кг муки
250-300 мл воды или молока
1 ст л сахара
15 г сухих или 50 г свежих дрожжей
Для начинки:
1 кг молодого сыра (натереть)
10 яиц
200 г сливочного масла (нарезать на 10 кусков)

Способ приготовления

Дрожжи с сахаром разведите теплой водой или молоком и оставьте в теплом месте на 30 минут. Замесите тесто, оставьте для расстойки на 1,5 часа.

Периодически обминайте тесто. Затем разделите на 10 одинаковых шариков, раскатайте в овальные лепешки, выложите на смазанный маслом противень, на каждую насыпьте сыр, сформируйте бортики и выпекайте в разогретой до 220 градусов духовке до тех пор, пока сыр не расплавится, а тесто не приобретет золотистый оттенок.

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

вівторок, 27 вересня 2011 р.


Источник: Хабрахабр

Нормализация отношений. Первая и вторая нормальные формы из песочницы

Предисловие


Нормализация отношений (таблиц) — одна из основополагающих частей теории реляционных баз данных. Нормализация имеет своей целью избавиться от избыточности в отношениях и модифицировать их структуру таким образом, чтобы процесс работы с ними не был обременён различными посторонними сложностями. При игнорировании такого подхода эффективность проектирования стремительно снижается, что вкупе с прочими подобными вольностями может привести к критическим последствиям.

Любому специалисту, по роду своей деятельности так или иначе связанному с проектированием реляционных баз данных, полезно понимать и уметь осуществить нормализацию отношений. И этим постом хотелось бы начать небольшую серию публикаций, посвящённых нормальным формам, имеющую целью дать тем читателям Хабрахабра, которые по различным обстоятельствам ещё не освоили эту тему, возможность легко заполнить этот пробел в знаниях.

Статья не имеет своей целью подробное и точное изложение принципов нормализациии, поскольку это, очевидно, невозможно в рамках блога в силу больших объёмов информации, необходимых для публикации при таком подходе. Кроме этого, для такой цели существует большое количество литературы, написанной прекрасными специалистами. Моя же задача, как я считаю, заключается в том, чтобы популярно продемонстрировать и объяснить основные принципы. 

Используемые термины


Атрибут — свойство некоторой сущности. Часто называется полем таблицы.
Домен атрибута — множество допустимых значений, которые может принимать атрибут.
Кортеж — конечное множество взаимосвязанных допустимых значений атрибутов, которые вместе описывают некоторую сущность (строка таблицы).
Отношение — конечное множество кортежей (таблица).
Схема отношения — конечное множество атрибутов, определяющих некоторую сущность. Иными словами, это структура таблицы, состоящей из конкретного набора полей.
Проекция — отношение, полученное из заданного путём удаления и (или) перестановки некоторых атрибутов.
Функциональная зависимость между атрибутами (множествами атрибутов) X и Y означает, что для любого допустимого набора кортежей в данном отношении: если два кортежа совпадают по значению X, то они совпадают по значению Y. Например, если значение атрибута «Название компании» — Canonical Ltd, то значением атрибута «Штаб-квартира» в таком кортеже всегда будет Millbank Tower, London, United Kingdom. Обозначение: {X} -> {Y}.

Первая нормальная форма


Отношение находится в первой нормальной форме (сокращённо 1НФ), если все его атрибуты атомарны, то есть если ни один из его атрибутов нельзя разделить на более простые атрибуты, которые соответствуют каким-то другим свойствам описываемой сущности.

Будем называть исходное отношение основным, а значение неатомарного атрибута — подчинённым.

Для того, чтобы нормализовать исходное отношение, атрибуты которого неатомарны, необходимо объединить схемы основного и подчинённого отношений. Кроме того, если, например, таблица, соответствующая ненормализованному отношению уже содержится в БД и заполнена информацией, задача усложняется тем, что значение неатомарного атрибута может в свою очередь содержать несколько кортежей.

Следует пояснить сказанное на примере. Рассмотрим отношение, имеющее атрибуты «Код сотрудника», «ФИО», «Должность», «Проекты». Очевидно, что один сотрудник может работать над несколькими проектами. Предположим, что проект описывается идентификатором, названием и датой сдачи.
Код сотрудникаФИОДолжностьПроекты
1Иванов Иван ИвановичПрограммистID: 123; Название: Система управления паровым котлом; Дата сдачи: 30.09.2011
ID: 231; Название: ПС для контроля и оповещения о превышениях ПДК различных газов в помещении; Дата сдачи: 30.11.2011
ID: 321; Название: Модуль распознавания лиц для защитной системы; Дата сдачи: 01.12.2011
Легко заметить, что не все атрибуты этого отношения атомарны (неделимы). В частности, атрибут «Проекты» можно разделить на три более простых атрибута: «Код проекта», «Название», «Дата сдачи», а значение этого атрибута для сотрудника Иван Иванович Иванов содержит несколько кортежей — информацию о трёх проектах.

Примечание: с некоторой точки зрения атрибут «ФИО» можно также считать неатомарным и в таком случае его также следует разделить на более простые, как «Фамилия», «Имя», «Отчество».

Теперь настало время рассмотреть алгоритм нормализации отношения до 1НФ.
  1. Создать новое отношение, схема которого будет получена путём слияния основной и подчинённой схем исходного отношения в одну.
  2. Для каждого кортежа исходного отношения включить в новое столько строк, сколько кортежей содержится в подчинённом отношении этого кортежа.
  3. Заполнить значения атрибутов нового отношения, соответствующих атрибутам подчинённого отношения.
  4. Заполнить строки нового отношения значениями атомарных атрибутов исходного.
Применим этот алгоритм к приведённому выше отношению. Схема нового отношения будет состоять из 6 атрибутов: «Код сотрудника», «ФИО», «Должность», «Код проекта», «Название», «Дата сдачи». Для одного единственного кортежа заданного отношения, добавим в новое три строки, по одной для каждого проекта (по количеству кортежей в подчинённом отношении). Теперь можно заполнить значения разделённых атрибутов кортежами из подчинённого отношения. Затем перенесём в каждую из этих строк значения атомарных атрибутов: «Код сотрудника», «ФИО», «Должность» (как Вы уже догадались, все три строки будут содержать одинаковые значения этих атрибутов).

Результат будет выглядеть так:
Код сотрудникаФИОДолжностьКод проектаНазваниеДата сдачи
1Иванов Иван ИвановичПрограммист123Система управления паровым котлом30.09.2011
1Иванов Иван ИвановичПрограммист231ПС для контроля и оповещения о превышениях ПДК различных газов в помещении30.11.2011
1Иванов Иван ИвановичПрограммист321Модуль распознавания лиц для защитной системы01.12.2011

Вторая нормальная форма


Ясно, что отношение, находящееся в 1НФ, также может обладать избыточностью. Для её устранения предназначена вторая нормальная форма. Но прежде чем приступить к её описанию, сначала следует выявить недостатки первой.

Пусть исходное отношение содержит информацию о поставке некоторых товаров и их поставщиках.
Код поставщикаГородСтатус городаКод товараКоличество
1Москва201300
1Москва202400
1Москва203100
2Ярославль104200
3Ставрополь305300
3Ставрополь306400
4Псков157100
Заранее известно, что в этом отношении содержатся следующие функциональные зависимости:
{ {Код поставщика, Код товара} -> { Количество},
{Код поставщика} -> {Город},
{Код поставщика} -> {Статус},
{Город} -> {Статус} }

Первичный ключ в отношении: {Код поставщика, Код товара}.

Очевидно, что отношение обладает избыточностью: оно описывает две сущности — поставку и поставщика. В связи с этим возникают следующие аномалии:
  • Аномалия вставки. В отношение нельзя добавить информацию о поставщике, который ещё не поставил ни одного товара.
  • Аномалия удаления. Если от поставщика была только одна поставка, то при удалении информации о ней будет удалена и вся информация о поставщике.
  • Аномалия обновления. Если необходимо изменить какую-либо информацию о поставщике (например, поставщик переехал в другой город), то придётся изменять значения атрибутов во всех записях о поставках от него.
Физический смысл избыточности исходного отношения заключается в том, что оно описывает не однусущность, а две — поставку и поставщика.

Чтобы устранить эти аномалии, необходимо разбить исходное отношение на проекции:
  1. В первую следует включить первичный ключ и все неключевые атрибуты явно зависимые от него.
  2. В остальные проекции (в данном случае она одна) будут включены неключевые атрибуты, зависящие от первичного ключа неявно, вместе с той частью первичного ключа, от которой эти атрибуты зависят явно.
В итоге будут получены два отношения:
Код поставщикаКод товараКоличество
11300
12400
13100
24200
35300
36400
47100
Первому отношению теперь соответствуют следующие функциональные зависимости:
{Код поставщика, Код товара} -> {Количество}
Код поставщикаГородСтатус города
1Москва20
2Ярославль10
3Ставрополь30
4Псков15
Второму отношению соответствуют:
{ {Код поставщика} -> {Город},
{Код поставщика} -> {Статус},
{Город} -> {Статус} }

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

Теперь можно сформулировать определение второй нормальной формы, до которого, скорее всего, читатель уже смог догадаться самостоятельно: отношение находится во второй нормальной форме(сокращённо 2НФ) тогда и только тогда, когда оно находится в первой нормальной форме и каждый его неключевой атрибут неприводимо зависим от первичного ключа.

Литература


Для более глубокого и основательного изучения рассмотренной темы, рекомендуется книга «Введение в системы баз данных» Криса Дж. Дейта, на основе материалов которой и была написана данная статья.