Про реализацию связей... Требуется мнение.
От: Smoke_Jaguar  
Дата: 22.09.09 16:30
Оценка:
Есть база на Oracle.

Между двумя таблицами связь один ко многим. Пусть будет "Работа" и "Договор". Договор содержит идентификатор работы (ключ реализован строкой символов).

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

И теперь программист предлагает хранить в таблице "Договор" не один строковый идентификатор работы, а строку с множеством идентификаторов работы разделяемых спец символом "@". Дальше в запросах он это фильтровать собирается.


Я с теорией баз данных знаком отдаленно, т.к. это не моя специальность. Но такие методы проектирования вызывают недоумение.

Ладно строковые поля в качестве ключа, но такой способ организации отношения один ко многим с точки зрения практики — это нормально?

Можете оценить надёжность/быстродействие/сопровождаемость такой реализации?
Re: Про реализацию связей... Требуется мнение.
От: vmpire Россия  
Дата: 22.09.09 17:28
Оценка: +1
Здравствуйте, Smoke_Jaguar, Вы писали:

S_J>И теперь программист предлагает хранить в таблице "Договор" не один строковый идентификатор работы, а строку с множеством идентификаторов работы разделяемых спец символом "@". Дальше в запросах он это фильтровать собирается.


S_J>Ладно строковые поля в качестве ключа,

Это как раз не страшно

S_J> но такой способ организации отношения один ко многим с точки зрения практики — это нормально?

Нет, это не нормально. Это нарушение первой нормальной формы. Форма это, конечно, не самоцель, но в данном случае лучше ввести третью таблицу "связь".

S_J>Можете оценить надёжность/быстродействие/сопровождаемость такой реализации?

Надёжность — смотря что имеется в виду под надёжностью
Быстродействие — низкое, так как по такой связи индекс не построить, плюс, при каждом соединении таблиц будет лишний парсинг строки
Сопровождаемость — низкая, так как решение нестандартное и кривое, поэтому каждый новый работающий над проектом будет тратить врямя на то, чтобы постебаться над автором такого решения . Ну и, естественно, будет куча проблем, если к этим связям потребуется добавить атрибут. Например, дату добавления работы в договор.
Re: Про реализацию связей... Требуется мнение.
От: Аноним  
Дата: 22.09.09 17:53
Оценка: +1
S_J>И теперь программист предлагает хранить в таблице "Договор" не один строковый идентификатор работы, а строку с множеством идентификаторов работы разделяемых спец символом "@". Дальше в запросах он это фильтровать собирается.

убейте программиста, спасите человечество! такие не должны дать потомство.
вы должны разбить таблицу на две договор и работу, где работа через ссылается на договор. только так, т.к. когда его убьет кто-то другой и кто-то новый придет супортить вашу систему может не догадаться об изврате с @, не говоря уже о всяких ормах, отчетных тулах и прочая, которые если понадобятся тоже не оценят столь жесткое извращение.
Re: Про реализацию связей... Требуется мнение.
От: DenisCh Россия  
Дата: 22.09.09 18:12
Оценка: +1
Здравствуйте, Smoke_Jaguar, Вы писали:

S_J>И теперь программист предлагает хранить в таблице "Договор" не один строковый идентификатор работы, а строку с множеством идентификаторов работы разделяемых спец символом "@". Дальше в запросах он это фильтровать собирается.


Уволить этого программиста за злостный саботаж.
... Это наше fido ещё живо! (2:5030/830.57)
Re: Про реализацию связей... Требуется мнение.
От: MasterZiv СССР  
Дата: 23.09.09 08:41
Оценка: +1
Smoke_Jaguar wrote:

> Между двумя таблицами связь один ко многим. Пусть будет "Работа" и

> "Договор". Договор содержит идентификатор работы (ключ реализован
> строкой символов).
>
> Естественно, быстро выяснилось, что к одному договору может принадлежать
> несколько работ.
>
> И теперь программист предлагает хранить в таблице "Договор" не один
> строковый идентификатор работы, а строку с множеством идентификаторов
> работы разделяемых спец символом "@". Дальше в запросах он это
> фильтровать собирается.

Это было бы нарушением 1НФ, грубая ошибка проектирования БД.

> Ладно строковые поля в качестве ключа, но такой способ организации


Это как раз не страшно.

> отношения один ко многим с точки зрения практики — это нормально?


См. выше.

А последствия для БД -- вы не сможете НОРМАЛЬНО работать с
этими таблицами (с "Договор") с помощью SQL-запросов.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Про реализацию связей... Требуется мнение.
От: MasterZiv СССР  
Дата: 23.09.09 08:44
Оценка: +1
Аноним 456 wrote:

> убейте программиста, спасите человечество! такие не должны дать потомство.


Не, зачем убивать... Не гуманно это.
Именно -- уволить, и обеспечить отсутствие потомства, т.е. оторвать
причинные места. Ну, и если есть уже дети -- либо проверить их
на "правильность", либо не допускать их работу программистами.

Ну а если серьёзно, это -- элементарная безграмотность в проектировании
БД.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.