Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6   вперед  Ctrl      все
 Re: PL/sql и T/sql  [new]
andy st
Member

Откуда:
Сообщений: 899
Apex
Пьяный Лох

Я за такое вот кастрировал бы, чтоб дебилов меньше рождалось.

Вы когда-нибудь видели базы данных, в которых ВСЕ названия объектов написаны по русски и практически без сокращений???
Вы, судя по всему, даже не представляете, как в таком случае упрощается разработка и сопровождение системы...
Соболезную
1 июн 06, 10:52    [2728619]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

> у меня на одной из баз макс. длина идентификатора - 70 символов
>
> У вас MSSQL?
да

> все правильно, другого выхода в mssql нет, поскольку нормального
> неймспейса в mssql нет вам приходится страдать такой ерундой. в оракле
> вы бы сделали пакет doc03070201, в который бы объединили все действия
> этим типом.
честно говоря, достаточно смутно представляю себе, что такое неймспейс.
предполагаю - некая штука, позволяющая разбивать процедуры и проч. вроде
как по модулям? в этом случае вызов процы был бы нечто вроде
[doc03070201].[s0201_ClearCustomDutyDiff_act]?
хотя бывают процы, которые работают одновременно с двумя типами
документов, или для нескольких типов - их кидать в [общий] неймспейс?

> Основной минус ограничения на длину идентификатора - оно мешает
>вводить
> конвенции именования объектов в БД. Скажем, если мы говорим, что для
> таблицы XXX поле ПК должно называться XXX_ID, а индекс - XXX_PK_I,
> максимально допустимая длина съезжает до 25 символов. Если мы говорим,
> что развязка многие-ко-многим между А и Б должна называться LINK_A_B -
> допустимая длина оказывается ограниченной двенадцатью (!) символами. И
> т. д.

вот такое имя FK позволяет сразу понять - что и куда, независимо от
того, придерживались разработчики "сухаревской конвенции", или не
придерживались (хотя скобки и запятие в именах мне не очень нравятся).
FK_EORule_(SpecifType,FieldName)_StorageValue_(StorageLine,Name)


--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

1 июн 06, 10:54    [2728627]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
alexey_tm
Member

Откуда: Томск
Сообщений: 173
Пьяный Лох

Если Оракал такой убогий, что ниасилил русские буквы - ну так надо это признать, правда ведь, Йо?
Или гордость не позволяет?


Прескорбно то, что залетевший сюда случайно ПЛ теперь будет утверждать, что Oracle не умеет работать с русскими буквами.
А все просто, чтобы именовать таблицу и /или колонку "русским именем" её нужно заключить в '', чтобы обратиться к ней, надо проделать тоже самое... Разработчики практически всегда об этом забывают... И меня кайне раздражает, что я должен писать в запросах, испавляя их ошибки, как всегда в аварийном порядке select .. from "вася пупкин", ну чем я виноват. Если хотите раскрыть суть объекта, используйте comment, все наглядно и просто...

Возвращаясь к основной теме. Сравнивать TL/SQL и PL/SQL не кореектно, никто не сравнивает basic и c++.
1 июн 06, 11:01    [2728672]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
alexey_tm
Member

Откуда: Томск
Сообщений: 173
locky

честно говоря, достаточно смутно представляю себе, что такое неймспейс.
предполагаю - некая штука, позволяющая разбивать процедуры и проч. вроде
как по модулям? в этом случае вызов процы был бы нечто вроде
[doc03070201].[s0201_ClearCustomDutyDiff_act]?
хотя бывают процы, которые работают одновременно с двумя типами
документов, или для нескольких типов - их кидать в [общий] неймспейс?

Что такое библиотека, например dll Вы представляете? Ну это тоже самое.
Разве для того, чтобы обратиться к разным файлам надо писать разные библиотеки?
Ребята, ну не спорте, не знаете Oracle, лучше не позорьтесь...
locky

вот такое имя FK позволяет сразу понять - что и куда, независимо от
того, придерживались разработчики "сухаревской конвенции", или не
придерживались (хотя скобки и запятие в именах мне не очень нравятся).
FK_EORule_(SpecifType,FieldName)_StorageValue_(StorageLine,Name)

Вообще-то для того, чтобы определить кто куда ссылается, существует словать данных...
И вылавливать по именам зависимости - не просто не верно, просто преступно, забыли переименовать, да мало ли что...
1 июн 06, 11:06    [2728720]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Longsvano
Member

Откуда:
Сообщений: 51
автор
Ребята, ну не спорте, не знаете Oracle, лучше не позорьтесь...

Ну так объясните незнающим людям как организовать эти самые неймспэйсы в оракле кроме как городить лишние схемы?
Лично я с удовольствием вас послушаю.
1 июн 06, 11:17    [2728791]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
Longsvano
автор
Ребята, ну не спорте, не знаете Oracle, лучше не позорьтесь...

Ну так объясните незнающим людям как организовать эти самые неймспэйсы в оракле кроме как городить лишние схемы?
Лично я с удовольствием вас послушаю.

Именно схемы, если речь идет об объектах базы данных, таких как таблицы, индексы, констрейнты. Посмотрите как это делает сам Oracle: схема SYS - одни объекты, схема SYSTEM - другие объекты, схема OUTLN - третьи. Разный физический смысл - разные служебные схемы. Если речь идет о процедурах, функциях, типах - для этого существуют пакеты (как модули в Паскале). У пакета есть интефейс (package spec) и реализация (package body), поддерживается перегрузка подпрограмм в пакете, инициализация пакета, сокрытие реализации (что-то типа protected method). По сути все что нужно, для поддержки парадигмы модульного программирования. Для эстэтов есть объекты с наследованием и прочими прелестями...
Встерчный вопрос: а сколько у вас таблиц в одной схеме, раз вы уперлись в ограничение на длину имени?
1 июн 06, 12:14    [2729175]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
andy st
Apex
Пьяный Лох

Я за такое вот кастрировал бы, чтоб дебилов меньше рождалось.

Вы когда-нибудь видели базы данных, в которых ВСЕ названия объектов написаны по русски и практически без сокращений???
Вы, судя по всему, даже не представляете, как в таком случае упрощается разработка и сопровождение системы...
Соболезную

Не видел и видеть не хочу.
Сопровождение облегчает грамотная декомпозиция системы, четкая модульная реализация, грамотно написаный код. А не название объектов в кириллической кодировке.
1 июн 06, 12:24    [2729297]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Longsvano
Member

Откуда:
Сообщений: 51
автор
типах - для этого существуют пакеты

Здорово. Вот и объявите мне объектный тип в пакете.


автор
поддерживается перегрузка подпрограмм в пакете

Ага. Классная перегрузка. Только такое перегрузить не может почемуто:

-- Почему не видится верхняя функция?
DECLARE
	FUNCTION GetUName(a IN VARCHAR2, b IN VARCHAR2, c IN VARCHAR2) RETURN VARCHAR2 AS
	BEGIN
		RETURN a||b||c;
	END;
BEGIN
	DECLARE
		Test VARCHAR2(100);
		FUNCTION GetUName RETURN VARCHAR2 AS
		BEGIN
			RETURN 'aaa';
		END;
	BEGIN
		Test := GetUName();
		Test := GetUName(1,2,3);
	END;
END;
/


автор
Встерчный вопрос: а сколько у вас таблиц в одной схеме, раз вы уперлись в ограничение на длину имени?


Да разница то? Вам показали где-то выше наглядный пример, что ограничение на длину имен не дает единообразно именовать объекты.
1 июн 06, 12:30    [2729364]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
andy st
Member

Откуда:
Сообщений: 899
Apex

Не видел и видеть не хочу.

в этом и проблема.... )
походу уже в генах.... что-то на уровне мутации... ;-Р
Apex

Сопровождение облегчает грамотная декомпозиция системы, четкая модульная реализация, грамотно написаный код. А не название объектов в кириллической кодировке.

А кто спорит по поводу декомпозиции, модульности и грамотности кода??
Просто в случает именования объектов по русски и с минимумом сокращений поиск нужных объектов (особенно когда их в системе десятки тысяч) самую малость упрощается хотя бы только тем, что не надо копаться в справочниках, описывающих сокращения и условные обозначения.
Мне, например, уже довольно сложно придумать сокращение, чтобы как-то назвать отчет "Выполнение производственной программы в разразе участков и аггрегатов за выбранный интервал времени посуточно".
Точнее, придумывается...
но как-то криво оно выглядит и вооще нечитабельно.
И вооще становится нечитабельно
1 июн 06, 12:45    [2729493]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

alexey_tm wrote:
> честно говоря, достаточно смутно представляю себе, что такое неймспейс.
> предполагаю - некая штука, позволяющая разбивать процедуры и проч. вроде
> как по модулям? в этом случае вызов процы был бы нечто вроде
> [doc03070201].[s0201_ClearCustomDutyDiff_act]?
> хотя бывают процы, которые работают одновременно с двумя типами
> документов, или для нескольких типов - их кидать в [общий] неймспейс?
>
> Что такое библиотека, например dll Вы представляете? Ну это тоже самое.
> Разве для того, чтобы обратиться к разным файлам надо писать разные
> библиотеки?
> Ребята, ну не спорте, не знаете Oracle, лучше не позорьтесь...
Тогда обясните мне.
Ладно, побъем по неймспейсам (чтобы это ни было).
один - относится к документы с типов 0301, другой - с типом 0302. В
каждом из неймспесов есть проца Header_mod. каков формат вызова
процедуры для типа 0301, 0302?
в моем случае нечто вроде exec doc0301_header_mod, exec doc0302_header_mod.

> вот такое имя FK позволяет сразу понять - что и куда, независимо от
> того, придерживались разработчики "сухаревской конвенции", или не
> придерживались (хотя скобки и запятие в именах мне не очень нравятся).
> FK_EORule_(SpecifType,FieldName)_StorageValue_(StorageLine,Name)
>
> Вообще-то для того, чтобы определить кто куда ссылается, существует
> словать данных...
> И вылавливать по именам зависимости - не просто не верно, просто
> преступно, забыли переименовать, да мало ли что...
у меня - не забудут, для этого есть соотв. скрипт, который занимается
переименованием. А словарь данных... а-ха, очень удобно. при таком
подходе действительно не нужны идентификаторы длиннее 30 символов.
Обзовем таблицу T00000001, а по описанию в метаданных определим, что это
у нас оказывается "Заголовок документа". Утрировано, но всё-таки.
зы вы что, считаете, что я ручками такое имя FK вбил? не, автоматом
переименовал.

--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

1 июн 06, 12:46    [2729498]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Yo.!!
Guest
locky


Тогда обясните мне.
Ладно, побъем по неймспейсам (чтобы это ни было).
один - относится к документы с типов 0301, другой - с типом 0302. В
каждом из неймспесов есть проца Header_mod. каков формат вызова
процедуры для типа 0301, 0302?
в моем случае нечто вроде exec doc0301_header_mod, exec doc0302_header_mod.

чую вам пора почитать что-то где разжевано что такое программа подпрограмма и т.п. у вас явно должно быть: exec documents_api.header_mod(0301) ;
1 июн 06, 13:17    [2729737]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
Longsvano
автор
типах - для этого существуют пакеты

Здорово. Вот и объявите мне объектный тип в пакете.

Претензия не понятна. Объектные типы в пакетах обявлять нельзя, но обратного я и не утверждал.
Longsvano

автор
поддерживается перегрузка подпрограмм в пакете

Ага. Классная перегрузка. Только такое перегрузить не может почемуто:

-- Почему не видится верхняя функция?
DECLARE
	FUNCTION GetUName(a IN VARCHAR2, b IN VARCHAR2, c IN VARCHAR2) RETURN VARCHAR2 AS
	BEGIN
		RETURN a||b||c;
	END;
BEGIN
	DECLARE
		Test VARCHAR2(100);
		FUNCTION GetUName RETURN VARCHAR2 AS
		BEGIN
			RETURN 'aaa';
		END;
	BEGIN
		Test := GetUName();
		Test := GetUName(1,2,3);
	END;
END;
/

Сначала сюда, потом вот сюда
1 июн 06, 13:27    [2729809]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Yo.!! wrote:
> чую вам пора почитать что-то где разжевано что такое программа
> подпрограмма и т.п. у вас явно должно быть: exec
> documents_api.header_mod(0301) ;
думаю, я это где-то уже читал (писал, юзал, применял - нужное
подчеркнуть). но это - лирика.

documents_api - это неймспейс? если да, то гуд.
doc0301_header_mod и doc0302_Header_mod - имеют разный перечень входящих
параметров, но - это тоже лирика, которую (возможно) оракал решает
вполналета, пользуясь моим его (оракала) незнанием.
просто вот хочу понять... в чем же эротическая разница между
doc0301_header_mod и doc.0301_header_mod... неужели- в точке?


--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

1 июн 06, 13:27    [2729810]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Yo.!!
locky


Тогда обясните мне.
Ладно, побъем по неймспейсам (чтобы это ни было).
один - относится к документы с типов 0301, другой - с типом 0302. В
каждом из неймспесов есть проца Header_mod. каков формат вызова
процедуры для типа 0301, 0302?
в моем случае нечто вроде exec doc0301_header_mod, exec doc0302_header_mod.

чую вам пора почитать что-то где разжевано что такое программа подпрограмма и т.п. у вас явно должно быть: exec documents_api.header_mod(0301) ;

т.е. получается разница вся в том что вместо подчеркивания пишется точка? :)
1 июн 06, 13:27    [2729811]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
MGR
Member

Откуда:
Сообщений: 536
Yo.!!
чую вам пора почитать что-то где разжевано что такое программа подпрограмма и т.п. у вас явно должно быть: exec documents_api.header_mod(0301) ;


Да Вам не о том вроде.
Есть таблицы
Supplier, Addresses, SupplierAddresses
В этом случае неплохо, когда FK именуются скажем как FK_Supplier_SupplierAddresses, FK_Addresses_SupplierAddresses
1 июн 06, 13:28    [2729813]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
locky

в моем случае нечто вроде exec doc0301_header_mod, exec doc0302_header_mod.

Это вы че, на каждый документ по процедуре создаете?
1 июн 06, 13:31    [2729838]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Longsvano
Member

Откуда:
Сообщений: 51
Apex
locky

в моем случае нечто вроде exec doc0301_header_mod, exec doc0302_header_mod.

Это вы че, на каждый документ по процедуре создаете?


Ремарка в стороны:
Между прочим PL/SQL не поддерживает шаблонного программирования (и слава богу, наверное, а ты индусы такое бы наворотили). Поэтому даже если функции делают что-то одинаковое но для разных типов - изволь городить кучу функций на каждый тип.
1 июн 06, 13:34    [2729876]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
SergSuper
Yo.!!
locky


Тогда обясните мне.
Ладно, побъем по неймспейсам (чтобы это ни было).
один - относится к документы с типов 0301, другой - с типом 0302. В
каждом из неймспесов есть проца Header_mod. каков формат вызова
процедуры для типа 0301, 0302?
в моем случае нечто вроде exec doc0301_header_mod, exec doc0302_header_mod.

чую вам пора почитать что-то где разжевано что такое программа подпрограмма и т.п. у вас явно должно быть: exec documents_api.header_mod(0301) ;

т.е. получается разница вся в том что вместо подчеркивания пишется точка? :)

Если для тебя разница между С и С++ только в том, что при обращении к методу класса ты пишешь точку, вместо подчеркивания - тогда да, только в этом.
1 июн 06, 13:36    [2729889]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
Longsvano
Apex
locky

в моем случае нечто вроде exec doc0301_header_mod, exec doc0302_header_mod.

Это вы че, на каждый документ по процедуре создаете?


Ремарка в стороны:
Между прочим PL/SQL не поддерживает шаблонного программирования (и слава богу, наверное, а ты индусы такое бы наворотили). Поэтому даже если функции делают что-то одинаковое но для разных типов - изволь городить кучу функций на каждый тип.
1 июн 06, 13:40    [2729915]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
Longsvano
Member

Откуда:
Сообщений: 51
автор
Претензия не понятна. Объектные типы в пакетах обявлять нельзя, но обратного я и не утверждал.


Так и запишем: архитекторы оракла накосячили. Объект который явно можно определять на уровне пакета реализовали на уровне схемы.

автор
поддерживается перегрузка подпрограмм в пакете


Запишем еще раз: перегрузка в PL/SQL - кастрированная. Чтобы ее подправить нужно приписывать префикс пакета или вставлять метки к анонимным блокам.
1 июн 06, 13:40    [2729916]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
1024
Member

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

8)

всегда лучше когда лучше. Имена по-русски это благо. Раньше этого не было т.к. трудно реализовать. Щас вроде все нормальные сервера поддерживают, кто не использует - руки не оттуда.
1 июн 06, 14:12    [2730117]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
dmitrysk
Member

Откуда:
Сообщений: 460
1024

всегда лучше когда лучше. Имена по-русски это благо. Раньше этого не было т.к. трудно реализовать. Щас вроде все нормальные сервера поддерживают, кто не использует - руки не оттуда.


Имена на русском не благо, а большой геморрой на заднице! Локальные поделки - это конечно хорошо, но когда с базой, разработанной такими вот умельцами (где именование идет на русском например), работают люди в любой другой, не русско-говорящей стране получается жопа! Кто-нибудь из Вас хоть раз задумывался об этом? Или как всегда, сперва сделаем, а потом будем думать и переделывать!

Меня например бесит, когда приходится переключать раскладку клавиатуры несколько раз, чтобы написать простой запрос.
1 июн 06, 15:38    [2730685]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
взял и всё по полочкам расставил.

8)

абсолютное большинство баз это как раз "локальный поделки". А если уж у вас рокетсъенс то французу с их нетерпимостью англ.языка может быть влом читать анг.имена. Китаец может англ. совсем не знать. Обычно в таких случаях называют просто т1, т2, т3 и т.д.

уважать надо себя а не эту бездушную железяку.

Вы ещё файлам имена из восьми символов давайте, чтоп под досом можно было переписывать.
1 июн 06, 15:46    [2730737]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
Пьяный Лох
Впервые слышу о том, что ErWin, а уж тем более SourceSafe - не работают (криво работают) с юникодом вааще и русской кодировкой в частности.

SourceSafe я выкинул очень давно. ErWin-ом пришлось пользоваться подольше, и поэтому наблюдал его кривую работу с русскими буквами, причем вообще без всякой БД - только внутри себя, на уровне записал модель в файл - прочитал модель из файла. Точную версию не помню; если не ошибаюсь, major version - 4, build 381.
1 июн 06, 15:56    [2730817]     Ответить | Цитировать Сообщить модератору
 Re: PL/sql и T/sql  [new]
dmitrysk
Member

Откуда:
Сообщений: 460
Часто вижу у себя на работе, как такие "локальные поделки" начинают использовать во многих странах. Уродливые названия, типа T1..TN тоже не многим лучше. Меня удивляет, люди не читают похоже ничего, ведь существует большое количество документов, описывающие стандартное именование объектов, тем самым облегчая жизнь всем, начиная от разработчика и заканчивая пользователем.
1 июн 06, 15:57    [2730827]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить