?

Log in

No account? Create an account

Previous Entry | Next Entry

Продолжаем разговор.

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

Когда мы говорим, что используем какую-то определенную "систему управления базами данных" (СУБД), например, Оракул, или мой любимый Постгрес,мы используем программу, которая умеет строить эти стеллажи и полочки и писать этикетки. Но что именно класть на какие полочки, как быстро найти полочку, на которую нужно положить, как еще быстрее найти все полочки, с которых нужно взять - это зависит от конкретной задачи. Что именно мы раскладываем на полочки.

Сейчас уже никто не помнит, что полочки были не всегда. Раньше нужные предметы могли, например, вешать на вертящиеся вешалки или складывать в сундуки. Но уже много лет как конкуренции стеллажам с полочками нет. И такая система хранения называется реляционная база данных. - данные в ней хранятся в таблицах. Так что первая задача, которую решает разработчик баз данных - какие ему нужно завести таблицы. Я думаю, что хватит нам игрушечных примеров с полочками, и не нужны нам классические схемы "Базы данных кинофильмов". Давай смотреть прямо на мою работу.

Мы даем людям ссуды. Или не даем :). В любом случае, нам нужно хранить данные по ссуде. Ссуду дают "человеку", и данные о "человеке" тоже надо хранить. Может показаться, что правильно с каждой ссудой связать фамилию и имя человека, которому эту ссуду дали. Но тогда, если у человека несколько ссуд, его ФИО будет повторяться в каждой записи о его ссудах. Так что логично будет сохранять записи о человеке в одной табличке, и туда написать его ФИО, дату рождения и т.п. А в табличке с данными о ссуде (кто-когда-сколько) сохраним заодно и номер - ссылку на запись о ссудополучателе.

И вот мы уже приняли первое дизайнерское решение :).

Дальше - больше. На каждую ссуду подписывается контракт. Как его хранить? вместе с ссудой? А другие документы? Например, письмо о том, на каком основании в ссуде отказали. Ведь ссуды нет, значит - вместе с заявкой на ссуду. А контракт подписывают до того, как ссуда выдана. Значит - все документы надо привязать к заявке? И таких решений надо принять кучу разных. Но это еще цветочки. Можно сказать: ОК, вот мы все придумали, где что хранить, теперь-то ничего делать не надо? На самом деле,только сейчас и начинается интересное.

Допустим, клиент звонит в службу поддержки, и эта служба должна быстренько найти информацию о данном клиенте. Если он вдруг знает свой номер - это замечательно, но такое нечасто можно наблюдать. Значит, надо, чтобы программа работы с клиентов могла искать по самым разным вводным:

- по логину
- по телефону,
- по имени и фамилии
- по дате рождения и последним четырем цифрами SSN
и т.д.

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

Comments

( 30 comments — Leave a comment )
enjoy_reading
Oct. 8th, 2018 07:06 am (UTC)
У вас последний абзац 2 раза записался :)
hettie_lz
Oct. 8th, 2018 11:02 am (UTC)
поправила
prosto_krys
Oct. 8th, 2018 08:50 am (UTC)

Сорри, первый комментарий на полпути! Я фрукты сортировала бы именно так, как вы считаете "не надо"! Это первое, что приходит в голову. Думаю, потому, что ваш способ требует больше места: нужно одномоментно три коробки! Если выбираешь каждый раз одни фрукты, то каждый раз у тебя одна коробка. У нас всегда мало места, и от этого пошло много комплексов...
Вспомнила пример из жизни: лего. Правда, там категорий больше. Но я за один присест выбирала строго детальки одного типа.

polenova
Oct. 8th, 2018 02:33 pm (UTC)
А если фрукты в бочке лежат и что на дне вы увидите, когда верхний слой разберете?
(no subject) - prosto_krys - Oct. 8th, 2018 02:36 pm (UTC) - Expand
(no subject) - hettie_lz - Oct. 9th, 2018 02:00 am (UTC) - Expand
(no subject) - prosto_krys - Oct. 9th, 2018 04:39 am (UTC) - Expand
(no subject) - hettie_lz - Oct. 9th, 2018 01:10 pm (UTC) - Expand
(no subject) - prosto_krys - Oct. 9th, 2018 01:11 pm (UTC) - Expand
(no subject) - hettie_lz - Oct. 9th, 2018 01:17 pm (UTC) - Expand
(no subject) - marnews - Oct. 8th, 2018 10:15 pm (UTC) - Expand
(no subject) - hettie_lz - Oct. 8th, 2018 10:28 pm (UTC) - Expand
hettie_lz
Oct. 9th, 2018 01:59 am (UTC)
Какая прелесть! просто таки жизненная иллюстрация к разным алгоритмам оптимизации! Раньше, когда память была дорогой, применяли "ваши" алгоритмы. Но это меееедленно! Сейчас память дешева, а время дорого!
prosto_krys
Oct. 8th, 2018 08:52 am (UTC)

Сколько разных данных может существовать на одного заемщика? Начиная от фамилии и кончая документами и договорами. Сколько "полочек" нужно заводить на одного человека? Явно больше, чем вы перечислили.

hettie_lz
Oct. 9th, 2018 02:01 am (UTC)
Конечно! Но даже в таком простом варианте понятно, что все не так просто, что база данных "сама" ничего не сделает.
prosto_krys
Oct. 9th, 2018 04:51 am (UTC)
А можно все же примерную цифру? ) Я ж неспроста спросила, мне важно это для понимания. Пока для меня неочевидно, почему все эти операции программа не может делать по умолчанию. Эксель это сделает по простому поиску. Но я понимаю, что это только начало, дальше будет сложнее.
(no subject) - hettie_lz - Oct. 9th, 2018 01:15 pm (UTC) - Expand
polenova
Oct. 8th, 2018 02:28 pm (UTC)
Красиво рассказываешь!
hettie_lz
Oct. 9th, 2018 02:01 am (UTC)
училка :)
mshustric
Oct. 8th, 2018 02:51 pm (UTC)
более чем понятно)
hettie_lz
Oct. 9th, 2018 02:01 am (UTC)
замечательно!
marnews
Oct. 8th, 2018 10:18 pm (UTC)
да, хорошо, вообще, наверно, есть книжка : постгресс за 21 день, с картинками:)
я думаю вам тут картинки нужны, чтобы диаграмку табличек и как они связаны друг с другом нарисовать.
hettie_lz
Oct. 8th, 2018 10:28 pm (UTC)
По картинкам у нас Алиса :), так что придется меня слушать без картинок :)))
(no subject) - polenova - Oct. 8th, 2018 10:52 pm (UTC) - Expand
(no subject) - hettie_lz - Oct. 8th, 2018 11:38 pm (UTC) - Expand
(no subject) - prosto_krys - Oct. 9th, 2018 04:48 am (UTC) - Expand
(no subject) - hettie_lz - Oct. 9th, 2018 01:11 pm (UTC) - Expand
(no subject) - prosto_krys - Oct. 9th, 2018 01:12 pm (UTC) - Expand
(no subject) - hettie_lz - Oct. 9th, 2018 01:17 pm (UTC) - Expand
hettie_lz
Oct. 9th, 2018 02:06 am (UTC)
Да, а книжку я даже погуглила - нет, проект умер, не реализовавшись. Но этот пост- не для изучения постгреса :)
( 30 comments — Leave a comment )

Latest Month

December 2018
S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

Tags

Powered by LiveJournal.com
Designed by Tiffany Chow