О коде и java-индусах...

Автор Uukrul, Червень 22, 2009, 01:49:49 ДП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Uukrul

В общем тут на неделе разгребал один вопросик, наткнулся на интересную связку таблиц, ну и еще получил одно подтверждение, что таки SAP пишут уволенные java-индусы, которые о товарище Дейте и его книге по базам данных не то что не слышали, но даже не догадываются о том что она существует и все уже придумано до них.

Дейта можно найти тут, если кому интересно: http://freebooks.net.ua/5175-vvedenie-v-sistemy-baz-dannykh.html

PS: Кстати, если кто-то сможет меня переубедить в обратном и объяснить глубокую мысль зачем так было сделано, сниму шляпу.

А теперь о том что озадачило. В общем есть такая вещь как единица упаковки, ну например в исходящей поставке, как в примере на рисунке EO-1.png. Таблица, где хранится единица обработки VEKP, ключ у единицы обработки VEKP-VENUM, как обычно длина 10 символов, ну любит SAP такие ключи, а дальше как обычно VEKP-EXIDV - Внешний ид. единицы обработки, собственно говоря, на экране мы его и видим как 511005670000009349, а вот дальше начинается интересное, в это таблице есть такое поле как VEKP-HANDLE - Уникальный ключ для VEKP-VENUM, тип у него GUID_VEKP, ага именно типа GUID, очень любимый java-программистами, зачем он используется, ну мало ли... может надо, однако для чего оно оказалось надо?! А вот для чего. Единица обработки имеет свою историю, рисунок EO-2.png. История эта хранится в отдельной таблице VEVW - Ведомость использования для единиц обработки, так вот ключ для идентификации единицы обработки, ну по логике должен был быть наверное VEVW-VENUM, ага щазззз, нет в этой таблице ключ у нас ага тот самый GUID, VEVW-HANDLE типа GUID_VEKP, по которому и ищем историю к единице обработки... какого надо было включать в первичный ключ именно этот GUID (22 байта, наверное хотели оракловый построитель индексов озадачить ::) ), я не знаю... чем им не понравился VEKP-VENUM?!

Хотя в этой таблице и дальше не все так просто, вот к примеру последнее поле VEVW-DIRECTION, если посмотреть описание то там стоит: "Направление (1 = выход, 2 = вход) (Direction (1=outbound, 2=inbound))", ну вроде как ясно, что значение может быть или 1 или 2, ага щаз, вот для этой единицы обработки там для документа поставки стоит 0, рисунок EO-3.png. Короче, таки действительно как там в анекдоте на уроке математики в грузинской школе:
- Гоги сколько будет 2 * 2?
- Я думаю 8!
- Нет Гоги садЫсь 2! Будет где-то 5 или 7, но никак не 8!

Так и тут может быть 1 или 2, ну а если очень нужно то 0, а так же другие цифры, хорошо хоть набор тут ограничен типом NUMC, т.е. от 0 до 9  ;), а ведь могли типа CHAR  сделать.

DofD

Еще есть момент что если смотреть через SE11 то значение NULL и " " выглядит одинаково. Один раз чуть голову не сломал почему при селекте нет данных а при просмотре таблици есть.

Uukrul

Цитата: DofD від Червень 26, 2009, 01:31:11 ПП
Еще есть момент что если смотреть через SE11 то значение NULL и " " выглядит одинаково. Один раз чуть голову не сломал почему при селекте нет данных а при просмотре таблици есть.
Ну это классика вообще в базах данных... хотя в SAP иногда помогает проверка на SPACE.

DofD

класика то класика, но при прямом просмотре БД там и стоит значение NULL, а не как тут чистое поле  :)

Паганель

Цитата: DofD від Червень 29, 2009, 08:29:41 ДП
класика то класика, но при прямом просмотре БД там и стоит значение NULL, а не как тут чистое поле  :)
Радуйся что там еще не стоит "N U L L" или "empty"  (N U L L с проблелами,просто строковые значения )  ;)

NachDenken

а вообще разве есть null значения ?
мне кажется есть initial значения каждого типа поля в табличках,
ну есть конечно в поле char4 не написать насильно 'NULL' ;D

Uukrul

Цитата: NachDenken від Червень 30, 2009, 09:03:08 ДП
а вообще разве есть null значения ?
Ну если исходить из баз данных, то таки есть такое значение...


Uukrul

Цитата: Паганель від Липень 01, 2009, 03:36:06 ПП
Про индусский код
http://lurkmore.ru/Индусский_код
Да уж... про китайский код не знал, но судя по открытию центра разработки в Шанхае, придется и его осваивать  ;)